@synsci/cli-darwin-x64-baseline 1.1.77 → 1.1.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/skills/adaptyv/SKILL.md +114 -0
- package/bin/skills/adaptyv/reference/api_reference.md +308 -0
- package/bin/skills/adaptyv/reference/examples.md +913 -0
- package/bin/skills/adaptyv/reference/experiments.md +360 -0
- package/bin/skills/adaptyv/reference/protein_optimization.md +637 -0
- package/bin/skills/aeon/SKILL.md +374 -0
- package/bin/skills/aeon/references/anomaly_detection.md +154 -0
- package/bin/skills/aeon/references/classification.md +144 -0
- package/bin/skills/aeon/references/clustering.md +123 -0
- package/bin/skills/aeon/references/datasets_benchmarking.md +387 -0
- package/bin/skills/aeon/references/distances.md +256 -0
- package/bin/skills/aeon/references/forecasting.md +140 -0
- package/bin/skills/aeon/references/networks.md +289 -0
- package/bin/skills/aeon/references/regression.md +118 -0
- package/bin/skills/aeon/references/segmentation.md +163 -0
- package/bin/skills/aeon/references/similarity_search.md +187 -0
- package/bin/skills/aeon/references/transformations.md +246 -0
- package/bin/skills/alphafold-database/SKILL.md +513 -0
- package/bin/skills/alphafold-database/references/api_reference.md +423 -0
- package/bin/skills/anndata/SKILL.md +400 -0
- package/bin/skills/anndata/references/best_practices.md +525 -0
- package/bin/skills/anndata/references/concatenation.md +396 -0
- package/bin/skills/anndata/references/data_structure.md +314 -0
- package/bin/skills/anndata/references/io_operations.md +404 -0
- package/bin/skills/anndata/references/manipulation.md +516 -0
- package/bin/skills/arboreto/SKILL.md +243 -0
- package/bin/skills/arboreto/references/algorithms.md +138 -0
- package/bin/skills/arboreto/references/basic_inference.md +151 -0
- package/bin/skills/arboreto/references/distributed_computing.md +242 -0
- package/bin/skills/arboreto/scripts/basic_grn_inference.py +97 -0
- package/bin/skills/astropy/SKILL.md +331 -0
- package/bin/skills/astropy/references/coordinates.md +273 -0
- package/bin/skills/astropy/references/cosmology.md +307 -0
- package/bin/skills/astropy/references/fits.md +396 -0
- package/bin/skills/astropy/references/tables.md +489 -0
- package/bin/skills/astropy/references/time.md +404 -0
- package/bin/skills/astropy/references/units.md +178 -0
- package/bin/skills/astropy/references/wcs_and_other_modules.md +373 -0
- package/bin/skills/benchling-integration/SKILL.md +480 -0
- package/bin/skills/benchling-integration/references/api_endpoints.md +883 -0
- package/bin/skills/benchling-integration/references/authentication.md +379 -0
- package/bin/skills/benchling-integration/references/sdk_reference.md +774 -0
- package/bin/skills/biopython/SKILL.md +443 -0
- package/bin/skills/biopython/references/advanced.md +577 -0
- package/bin/skills/biopython/references/alignment.md +362 -0
- package/bin/skills/biopython/references/blast.md +455 -0
- package/bin/skills/biopython/references/databases.md +484 -0
- package/bin/skills/biopython/references/phylogenetics.md +566 -0
- package/bin/skills/biopython/references/sequence_io.md +285 -0
- package/bin/skills/biopython/references/structure.md +564 -0
- package/bin/skills/biorxiv-database/SKILL.md +483 -0
- package/bin/skills/biorxiv-database/references/api_reference.md +280 -0
- package/bin/skills/biorxiv-database/scripts/biorxiv_search.py +445 -0
- package/bin/skills/bioservices/SKILL.md +361 -0
- package/bin/skills/bioservices/references/identifier_mapping.md +685 -0
- package/bin/skills/bioservices/references/services_reference.md +636 -0
- package/bin/skills/bioservices/references/workflow_patterns.md +811 -0
- package/bin/skills/bioservices/scripts/batch_id_converter.py +347 -0
- package/bin/skills/bioservices/scripts/compound_cross_reference.py +378 -0
- package/bin/skills/bioservices/scripts/pathway_analysis.py +309 -0
- package/bin/skills/bioservices/scripts/protein_analysis_workflow.py +408 -0
- package/bin/skills/brenda-database/SKILL.md +719 -0
- package/bin/skills/brenda-database/references/api_reference.md +537 -0
- package/bin/skills/brenda-database/scripts/brenda_queries.py +844 -0
- package/bin/skills/brenda-database/scripts/brenda_visualization.py +772 -0
- package/bin/skills/brenda-database/scripts/enzyme_pathway_builder.py +1053 -0
- package/bin/skills/cellxgene-census/SKILL.md +511 -0
- package/bin/skills/cellxgene-census/references/census_schema.md +182 -0
- package/bin/skills/cellxgene-census/references/common_patterns.md +351 -0
- package/bin/skills/chembl-database/SKILL.md +389 -0
- package/bin/skills/chembl-database/references/api_reference.md +272 -0
- package/bin/skills/chembl-database/scripts/example_queries.py +278 -0
- package/bin/skills/cirq/SKILL.md +346 -0
- package/bin/skills/cirq/references/building.md +307 -0
- package/bin/skills/cirq/references/experiments.md +572 -0
- package/bin/skills/cirq/references/hardware.md +515 -0
- package/bin/skills/cirq/references/noise.md +515 -0
- package/bin/skills/cirq/references/simulation.md +350 -0
- package/bin/skills/cirq/references/transformation.md +416 -0
- package/bin/skills/clinicaltrials-database/SKILL.md +507 -0
- package/bin/skills/clinicaltrials-database/references/api_reference.md +358 -0
- package/bin/skills/clinicaltrials-database/scripts/query_clinicaltrials.py +215 -0
- package/bin/skills/clinpgx-database/SKILL.md +638 -0
- package/bin/skills/clinpgx-database/references/api_reference.md +757 -0
- package/bin/skills/clinpgx-database/scripts/query_clinpgx.py +518 -0
- package/bin/skills/clinvar-database/SKILL.md +362 -0
- package/bin/skills/clinvar-database/references/api_reference.md +227 -0
- package/bin/skills/clinvar-database/references/clinical_significance.md +218 -0
- package/bin/skills/clinvar-database/references/data_formats.md +358 -0
- package/bin/skills/cobrapy/SKILL.md +463 -0
- package/bin/skills/cobrapy/references/api_quick_reference.md +655 -0
- package/bin/skills/cobrapy/references/workflows.md +593 -0
- package/bin/skills/cosmic-database/SKILL.md +336 -0
- package/bin/skills/cosmic-database/references/cosmic_data_reference.md +220 -0
- package/bin/skills/cosmic-database/scripts/download_cosmic.py +231 -0
- package/bin/skills/dask/SKILL.md +456 -0
- package/bin/skills/dask/references/arrays.md +497 -0
- package/bin/skills/dask/references/bags.md +468 -0
- package/bin/skills/dask/references/best-practices.md +277 -0
- package/bin/skills/dask/references/dataframes.md +368 -0
- package/bin/skills/dask/references/futures.md +541 -0
- package/bin/skills/dask/references/schedulers.md +504 -0
- package/bin/skills/datacommons-client/SKILL.md +255 -0
- package/bin/skills/datacommons-client/references/getting_started.md +417 -0
- package/bin/skills/datacommons-client/references/node.md +250 -0
- package/bin/skills/datacommons-client/references/observation.md +185 -0
- package/bin/skills/datacommons-client/references/resolve.md +246 -0
- package/bin/skills/datamol/SKILL.md +706 -0
- package/bin/skills/datamol/references/conformers_module.md +131 -0
- package/bin/skills/datamol/references/core_api.md +130 -0
- package/bin/skills/datamol/references/descriptors_viz.md +195 -0
- package/bin/skills/datamol/references/fragments_scaffolds.md +174 -0
- package/bin/skills/datamol/references/io_module.md +109 -0
- package/bin/skills/datamol/references/reactions_data.md +218 -0
- package/bin/skills/deepchem/SKILL.md +597 -0
- package/bin/skills/deepchem/references/api_reference.md +303 -0
- package/bin/skills/deepchem/references/workflows.md +491 -0
- package/bin/skills/deepchem/scripts/graph_neural_network.py +338 -0
- package/bin/skills/deepchem/scripts/predict_solubility.py +224 -0
- package/bin/skills/deepchem/scripts/transfer_learning.py +375 -0
- package/bin/skills/deeptools/SKILL.md +531 -0
- package/bin/skills/deeptools/assets/quick_reference.md +58 -0
- package/bin/skills/deeptools/references/effective_genome_sizes.md +116 -0
- package/bin/skills/deeptools/references/normalization_methods.md +410 -0
- package/bin/skills/deeptools/references/tools_reference.md +533 -0
- package/bin/skills/deeptools/references/workflows.md +474 -0
- package/bin/skills/deeptools/scripts/validate_files.py +195 -0
- package/bin/skills/deeptools/scripts/workflow_generator.py +454 -0
- package/bin/skills/denario/SKILL.md +215 -0
- package/bin/skills/denario/references/examples.md +494 -0
- package/bin/skills/denario/references/installation.md +213 -0
- package/bin/skills/denario/references/llm_configuration.md +265 -0
- package/bin/skills/denario/references/research_pipeline.md +471 -0
- package/bin/skills/diffdock/SKILL.md +483 -0
- package/bin/skills/diffdock/assets/batch_template.csv +4 -0
- package/bin/skills/diffdock/assets/custom_inference_config.yaml +90 -0
- package/bin/skills/diffdock/references/confidence_and_limitations.md +182 -0
- package/bin/skills/diffdock/references/parameters_reference.md +163 -0
- package/bin/skills/diffdock/references/workflows_examples.md +392 -0
- package/bin/skills/diffdock/scripts/analyze_results.py +334 -0
- package/bin/skills/diffdock/scripts/prepare_batch_csv.py +254 -0
- package/bin/skills/diffdock/scripts/setup_check.py +278 -0
- package/bin/skills/dnanexus-integration/SKILL.md +383 -0
- package/bin/skills/dnanexus-integration/references/app-development.md +247 -0
- package/bin/skills/dnanexus-integration/references/configuration.md +646 -0
- package/bin/skills/dnanexus-integration/references/data-operations.md +400 -0
- package/bin/skills/dnanexus-integration/references/job-execution.md +412 -0
- package/bin/skills/dnanexus-integration/references/python-sdk.md +523 -0
- package/bin/skills/document-skills/docx/LICENSE.txt +30 -0
- package/bin/skills/document-skills/docx/SKILL.md +233 -0
- package/bin/skills/document-skills/docx/docx-js.md +350 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/bin/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/bin/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/bin/skills/document-skills/docx/ooxml.md +610 -0
- package/bin/skills/document-skills/docx/scripts/__init__.py +1 -0
- package/bin/skills/document-skills/docx/scripts/document.py +1276 -0
- package/bin/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
- package/bin/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/bin/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/bin/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/bin/skills/document-skills/docx/scripts/templates/people.xml +3 -0
- package/bin/skills/document-skills/docx/scripts/utilities.py +374 -0
- package/bin/skills/document-skills/pdf/LICENSE.txt +30 -0
- package/bin/skills/document-skills/pdf/SKILL.md +330 -0
- package/bin/skills/document-skills/pdf/forms.md +205 -0
- package/bin/skills/document-skills/pdf/reference.md +612 -0
- package/bin/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/bin/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/bin/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/bin/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/bin/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
- package/bin/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/bin/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/bin/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/bin/skills/document-skills/pptx/LICENSE.txt +30 -0
- package/bin/skills/document-skills/pptx/SKILL.md +520 -0
- package/bin/skills/document-skills/pptx/html2pptx.md +625 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/bin/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/bin/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/bin/skills/document-skills/pptx/ooxml.md +427 -0
- package/bin/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
- package/bin/skills/document-skills/pptx/scripts/inventory.py +1020 -0
- package/bin/skills/document-skills/pptx/scripts/rearrange.py +231 -0
- package/bin/skills/document-skills/pptx/scripts/replace.py +385 -0
- package/bin/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
- package/bin/skills/document-skills/xlsx/LICENSE.txt +30 -0
- package/bin/skills/document-skills/xlsx/SKILL.md +325 -0
- package/bin/skills/document-skills/xlsx/recalc.py +178 -0
- package/bin/skills/drugbank-database/SKILL.md +190 -0
- package/bin/skills/drugbank-database/references/chemical-analysis.md +590 -0
- package/bin/skills/drugbank-database/references/data-access.md +242 -0
- package/bin/skills/drugbank-database/references/drug-queries.md +386 -0
- package/bin/skills/drugbank-database/references/interactions.md +425 -0
- package/bin/skills/drugbank-database/references/targets-pathways.md +518 -0
- package/bin/skills/drugbank-database/scripts/drugbank_helper.py +350 -0
- package/bin/skills/ena-database/SKILL.md +204 -0
- package/bin/skills/ena-database/references/api_reference.md +490 -0
- package/bin/skills/ensembl-database/SKILL.md +311 -0
- package/bin/skills/ensembl-database/references/api_endpoints.md +346 -0
- package/bin/skills/ensembl-database/scripts/ensembl_query.py +427 -0
- package/bin/skills/esm/SKILL.md +306 -0
- package/bin/skills/esm/references/esm-c-api.md +583 -0
- package/bin/skills/esm/references/esm3-api.md +452 -0
- package/bin/skills/esm/references/forge-api.md +657 -0
- package/bin/skills/esm/references/workflows.md +685 -0
- package/bin/skills/etetoolkit/SKILL.md +623 -0
- package/bin/skills/etetoolkit/references/api_reference.md +583 -0
- package/bin/skills/etetoolkit/references/visualization.md +783 -0
- package/bin/skills/etetoolkit/references/workflows.md +774 -0
- package/bin/skills/etetoolkit/scripts/quick_visualize.py +214 -0
- package/bin/skills/etetoolkit/scripts/tree_operations.py +229 -0
- package/bin/skills/exploratory-data-analysis/SKILL.md +446 -0
- package/bin/skills/exploratory-data-analysis/assets/report_template.md +196 -0
- package/bin/skills/exploratory-data-analysis/references/bioinformatics_genomics_formats.md +664 -0
- package/bin/skills/exploratory-data-analysis/references/chemistry_molecular_formats.md +664 -0
- package/bin/skills/exploratory-data-analysis/references/general_scientific_formats.md +518 -0
- package/bin/skills/exploratory-data-analysis/references/microscopy_imaging_formats.md +620 -0
- package/bin/skills/exploratory-data-analysis/references/proteomics_metabolomics_formats.md +517 -0
- package/bin/skills/exploratory-data-analysis/references/spectroscopy_analytical_formats.md +633 -0
- package/bin/skills/exploratory-data-analysis/scripts/eda_analyzer.py +547 -0
- package/bin/skills/fda-database/SKILL.md +518 -0
- package/bin/skills/fda-database/references/animal_veterinary.md +377 -0
- package/bin/skills/fda-database/references/api_basics.md +687 -0
- package/bin/skills/fda-database/references/devices.md +632 -0
- package/bin/skills/fda-database/references/drugs.md +468 -0
- package/bin/skills/fda-database/references/foods.md +374 -0
- package/bin/skills/fda-database/references/other.md +472 -0
- package/bin/skills/fda-database/scripts/fda_examples.py +335 -0
- package/bin/skills/fda-database/scripts/fda_query.py +440 -0
- package/bin/skills/flowio/SKILL.md +608 -0
- package/bin/skills/flowio/references/api_reference.md +372 -0
- package/bin/skills/fluidsim/SKILL.md +349 -0
- package/bin/skills/fluidsim/references/advanced_features.md +398 -0
- package/bin/skills/fluidsim/references/installation.md +68 -0
- package/bin/skills/fluidsim/references/output_analysis.md +283 -0
- package/bin/skills/fluidsim/references/parameters.md +198 -0
- package/bin/skills/fluidsim/references/simulation_workflow.md +172 -0
- package/bin/skills/fluidsim/references/solvers.md +94 -0
- package/bin/skills/fred-economic-data/SKILL.md +433 -0
- package/bin/skills/fred-economic-data/references/api_basics.md +212 -0
- package/bin/skills/fred-economic-data/references/categories.md +442 -0
- package/bin/skills/fred-economic-data/references/geofred.md +588 -0
- package/bin/skills/fred-economic-data/references/releases.md +642 -0
- package/bin/skills/fred-economic-data/references/series.md +584 -0
- package/bin/skills/fred-economic-data/references/sources.md +423 -0
- package/bin/skills/fred-economic-data/references/tags.md +485 -0
- package/bin/skills/fred-economic-data/scripts/fred_examples.py +354 -0
- package/bin/skills/fred-economic-data/scripts/fred_query.py +590 -0
- package/bin/skills/gene-database/SKILL.md +179 -0
- package/bin/skills/gene-database/references/api_reference.md +404 -0
- package/bin/skills/gene-database/references/common_workflows.md +428 -0
- package/bin/skills/gene-database/scripts/batch_gene_lookup.py +298 -0
- package/bin/skills/gene-database/scripts/fetch_gene_data.py +277 -0
- package/bin/skills/gene-database/scripts/query_gene.py +251 -0
- package/bin/skills/geniml/SKILL.md +318 -0
- package/bin/skills/geniml/references/bedspace.md +127 -0
- package/bin/skills/geniml/references/consensus_peaks.md +238 -0
- package/bin/skills/geniml/references/region2vec.md +90 -0
- package/bin/skills/geniml/references/scembed.md +197 -0
- package/bin/skills/geniml/references/utilities.md +385 -0
- package/bin/skills/geo-database/SKILL.md +815 -0
- package/bin/skills/geo-database/references/geo_reference.md +829 -0
- package/bin/skills/geopandas/SKILL.md +251 -0
- package/bin/skills/geopandas/references/crs-management.md +243 -0
- package/bin/skills/geopandas/references/data-io.md +165 -0
- package/bin/skills/geopandas/references/data-structures.md +70 -0
- package/bin/skills/geopandas/references/geometric-operations.md +221 -0
- package/bin/skills/geopandas/references/spatial-analysis.md +184 -0
- package/bin/skills/geopandas/references/visualization.md +243 -0
- package/bin/skills/get-available-resources/SKILL.md +277 -0
- package/bin/skills/get-available-resources/scripts/detect_resources.py +401 -0
- package/bin/skills/gget/SKILL.md +871 -0
- package/bin/skills/gget/references/database_info.md +300 -0
- package/bin/skills/gget/references/module_reference.md +467 -0
- package/bin/skills/gget/references/workflows.md +814 -0
- package/bin/skills/gget/scripts/batch_sequence_analysis.py +191 -0
- package/bin/skills/gget/scripts/enrichment_pipeline.py +235 -0
- package/bin/skills/gget/scripts/gene_analysis.py +161 -0
- package/bin/skills/gtars/SKILL.md +285 -0
- package/bin/skills/gtars/references/cli.md +222 -0
- package/bin/skills/gtars/references/coverage.md +172 -0
- package/bin/skills/gtars/references/overlap.md +156 -0
- package/bin/skills/gtars/references/python-api.md +211 -0
- package/bin/skills/gtars/references/refget.md +147 -0
- package/bin/skills/gtars/references/tokenizers.md +103 -0
- package/bin/skills/gwas-database/SKILL.md +608 -0
- package/bin/skills/gwas-database/references/api_reference.md +793 -0
- package/bin/skills/histolab/SKILL.md +678 -0
- package/bin/skills/histolab/references/filters_preprocessing.md +514 -0
- package/bin/skills/histolab/references/slide_management.md +172 -0
- package/bin/skills/histolab/references/tile_extraction.md +421 -0
- package/bin/skills/histolab/references/tissue_masks.md +251 -0
- package/bin/skills/histolab/references/visualization.md +547 -0
- package/bin/skills/hmdb-database/SKILL.md +196 -0
- package/bin/skills/hmdb-database/references/hmdb_data_fields.md +267 -0
- package/bin/skills/hypogenic/SKILL.md +655 -0
- package/bin/skills/hypogenic/references/config_template.yaml +150 -0
- package/bin/skills/imaging-data-commons/SKILL.md +1182 -0
- package/bin/skills/imaging-data-commons/references/bigquery_guide.md +556 -0
- package/bin/skills/imaging-data-commons/references/cli_guide.md +272 -0
- package/bin/skills/imaging-data-commons/references/cloud_storage_guide.md +333 -0
- package/bin/skills/imaging-data-commons/references/dicomweb_guide.md +399 -0
- package/bin/skills/infographics/SKILL.md +563 -0
- package/bin/skills/infographics/references/color_palettes.md +496 -0
- package/bin/skills/infographics/references/design_principles.md +636 -0
- package/bin/skills/infographics/references/infographic_types.md +907 -0
- package/bin/skills/infographics/scripts/generate_infographic.py +234 -0
- package/bin/skills/infographics/scripts/generate_infographic_ai.py +1290 -0
- package/bin/skills/iso-13485-certification/SKILL.md +680 -0
- package/bin/skills/iso-13485-certification/assets/templates/procedures/CAPA-procedure-template.md +453 -0
- package/bin/skills/iso-13485-certification/assets/templates/procedures/document-control-procedure-template.md +567 -0
- package/bin/skills/iso-13485-certification/assets/templates/quality-manual-template.md +521 -0
- package/bin/skills/iso-13485-certification/references/gap-analysis-checklist.md +568 -0
- package/bin/skills/iso-13485-certification/references/iso-13485-requirements.md +610 -0
- package/bin/skills/iso-13485-certification/references/mandatory-documents.md +606 -0
- package/bin/skills/iso-13485-certification/references/quality-manual-guide.md +688 -0
- package/bin/skills/iso-13485-certification/scripts/gap_analyzer.py +440 -0
- package/bin/skills/kegg-database/SKILL.md +377 -0
- package/bin/skills/kegg-database/references/kegg_reference.md +326 -0
- package/bin/skills/kegg-database/scripts/kegg_api.py +251 -0
- package/bin/skills/labarchive-integration/SKILL.md +268 -0
- package/bin/skills/labarchive-integration/references/api_reference.md +342 -0
- package/bin/skills/labarchive-integration/references/authentication_guide.md +357 -0
- package/bin/skills/labarchive-integration/references/integrations.md +425 -0
- package/bin/skills/labarchive-integration/scripts/entry_operations.py +334 -0
- package/bin/skills/labarchive-integration/scripts/notebook_operations.py +269 -0
- package/bin/skills/labarchive-integration/scripts/setup_config.py +205 -0
- package/bin/skills/lamindb/SKILL.md +390 -0
- package/bin/skills/lamindb/references/annotation-validation.md +513 -0
- package/bin/skills/lamindb/references/core-concepts.md +380 -0
- package/bin/skills/lamindb/references/data-management.md +433 -0
- package/bin/skills/lamindb/references/integrations.md +642 -0
- package/bin/skills/lamindb/references/ontologies.md +497 -0
- package/bin/skills/lamindb/references/setup-deployment.md +733 -0
- package/bin/skills/latchbio-integration/SKILL.md +353 -0
- package/bin/skills/latchbio-integration/references/data-management.md +427 -0
- package/bin/skills/latchbio-integration/references/resource-configuration.md +429 -0
- package/bin/skills/latchbio-integration/references/verified-workflows.md +487 -0
- package/bin/skills/latchbio-integration/references/workflow-creation.md +254 -0
- package/bin/skills/matchms/SKILL.md +203 -0
- package/bin/skills/matchms/references/filtering.md +288 -0
- package/bin/skills/matchms/references/importing_exporting.md +416 -0
- package/bin/skills/matchms/references/similarity.md +380 -0
- package/bin/skills/matchms/references/workflows.md +647 -0
- package/bin/skills/matlab/SKILL.md +376 -0
- package/bin/skills/matlab/references/data-import-export.md +479 -0
- package/bin/skills/matlab/references/executing-scripts.md +444 -0
- package/bin/skills/matlab/references/graphics-visualization.md +579 -0
- package/bin/skills/matlab/references/mathematics.md +553 -0
- package/bin/skills/matlab/references/matrices-arrays.md +349 -0
- package/bin/skills/matlab/references/octave-compatibility.md +544 -0
- package/bin/skills/matlab/references/programming.md +672 -0
- package/bin/skills/matlab/references/python-integration.md +433 -0
- package/bin/skills/matplotlib/SKILL.md +361 -0
- package/bin/skills/matplotlib/references/api_reference.md +412 -0
- package/bin/skills/matplotlib/references/common_issues.md +563 -0
- package/bin/skills/matplotlib/references/plot_types.md +476 -0
- package/bin/skills/matplotlib/references/styling_guide.md +589 -0
- package/bin/skills/matplotlib/scripts/plot_template.py +401 -0
- package/bin/skills/matplotlib/scripts/style_configurator.py +409 -0
- package/bin/skills/medchem/SKILL.md +406 -0
- package/bin/skills/medchem/references/api_guide.md +600 -0
- package/bin/skills/medchem/references/rules_catalog.md +604 -0
- package/bin/skills/medchem/scripts/filter_molecules.py +418 -0
- package/bin/skills/metabolomics-workbench-database/SKILL.md +259 -0
- package/bin/skills/metabolomics-workbench-database/references/api_reference.md +494 -0
- package/bin/skills/modal-research-gpu/SKILL.md +238 -0
- package/bin/skills/molfeat/SKILL.md +511 -0
- package/bin/skills/molfeat/references/api_reference.md +428 -0
- package/bin/skills/molfeat/references/available_featurizers.md +333 -0
- package/bin/skills/molfeat/references/examples.md +723 -0
- package/bin/skills/networkx/SKILL.md +437 -0
- package/bin/skills/networkx/references/algorithms.md +383 -0
- package/bin/skills/networkx/references/generators.md +378 -0
- package/bin/skills/networkx/references/graph-basics.md +283 -0
- package/bin/skills/networkx/references/io.md +441 -0
- package/bin/skills/networkx/references/visualization.md +529 -0
- package/bin/skills/neurokit2/SKILL.md +356 -0
- package/bin/skills/neurokit2/references/bio_module.md +417 -0
- package/bin/skills/neurokit2/references/complexity.md +715 -0
- package/bin/skills/neurokit2/references/ecg_cardiac.md +355 -0
- package/bin/skills/neurokit2/references/eda.md +497 -0
- package/bin/skills/neurokit2/references/eeg.md +506 -0
- package/bin/skills/neurokit2/references/emg.md +408 -0
- package/bin/skills/neurokit2/references/eog.md +407 -0
- package/bin/skills/neurokit2/references/epochs_events.md +471 -0
- package/bin/skills/neurokit2/references/hrv.md +480 -0
- package/bin/skills/neurokit2/references/ppg.md +413 -0
- package/bin/skills/neurokit2/references/rsp.md +510 -0
- package/bin/skills/neurokit2/references/signal_processing.md +648 -0
- package/bin/skills/neuropixels-analysis/SKILL.md +350 -0
- package/bin/skills/neuropixels-analysis/assets/analysis_template.py +271 -0
- package/bin/skills/neuropixels-analysis/references/AI_CURATION.md +345 -0
- package/bin/skills/neuropixels-analysis/references/ANALYSIS.md +392 -0
- package/bin/skills/neuropixels-analysis/references/AUTOMATED_CURATION.md +358 -0
- package/bin/skills/neuropixels-analysis/references/MOTION_CORRECTION.md +323 -0
- package/bin/skills/neuropixels-analysis/references/PREPROCESSING.md +273 -0
- package/bin/skills/neuropixels-analysis/references/QUALITY_METRICS.md +359 -0
- package/bin/skills/neuropixels-analysis/references/SPIKE_SORTING.md +339 -0
- package/bin/skills/neuropixels-analysis/references/api_reference.md +415 -0
- package/bin/skills/neuropixels-analysis/references/plotting_guide.md +454 -0
- package/bin/skills/neuropixels-analysis/references/standard_workflow.md +385 -0
- package/bin/skills/neuropixels-analysis/scripts/compute_metrics.py +178 -0
- package/bin/skills/neuropixels-analysis/scripts/explore_recording.py +168 -0
- package/bin/skills/neuropixels-analysis/scripts/export_to_phy.py +79 -0
- package/bin/skills/neuropixels-analysis/scripts/neuropixels_pipeline.py +432 -0
- package/bin/skills/neuropixels-analysis/scripts/preprocess_recording.py +122 -0
- package/bin/skills/neuropixels-analysis/scripts/run_sorting.py +98 -0
- package/bin/skills/offer-k-dense-web/SKILL.md +21 -0
- package/bin/skills/omero-integration/SKILL.md +251 -0
- package/bin/skills/omero-integration/references/advanced.md +631 -0
- package/bin/skills/omero-integration/references/connection.md +369 -0
- package/bin/skills/omero-integration/references/data_access.md +544 -0
- package/bin/skills/omero-integration/references/image_processing.md +665 -0
- package/bin/skills/omero-integration/references/metadata.md +688 -0
- package/bin/skills/omero-integration/references/rois.md +648 -0
- package/bin/skills/omero-integration/references/scripts.md +637 -0
- package/bin/skills/omero-integration/references/tables.md +532 -0
- package/bin/skills/openalex-database/SKILL.md +494 -0
- package/bin/skills/openalex-database/references/api_guide.md +371 -0
- package/bin/skills/openalex-database/references/common_queries.md +381 -0
- package/bin/skills/openalex-database/scripts/openalex_client.py +337 -0
- package/bin/skills/openalex-database/scripts/query_helpers.py +306 -0
- package/bin/skills/opentargets-database/SKILL.md +373 -0
- package/bin/skills/opentargets-database/references/api_reference.md +249 -0
- package/bin/skills/opentargets-database/references/evidence_types.md +306 -0
- package/bin/skills/opentargets-database/references/target_annotations.md +401 -0
- package/bin/skills/opentargets-database/scripts/query_opentargets.py +403 -0
- package/bin/skills/opentrons-integration/SKILL.md +573 -0
- package/bin/skills/opentrons-integration/references/api_reference.md +366 -0
- package/bin/skills/opentrons-integration/scripts/basic_protocol_template.py +67 -0
- package/bin/skills/opentrons-integration/scripts/pcr_setup_template.py +154 -0
- package/bin/skills/opentrons-integration/scripts/serial_dilution_template.py +96 -0
- package/bin/skills/pathml/SKILL.md +166 -0
- package/bin/skills/pathml/references/data_management.md +742 -0
- package/bin/skills/pathml/references/graphs.md +653 -0
- package/bin/skills/pathml/references/image_loading.md +448 -0
- package/bin/skills/pathml/references/machine_learning.md +725 -0
- package/bin/skills/pathml/references/multiparametric.md +686 -0
- package/bin/skills/pathml/references/preprocessing.md +722 -0
- package/bin/skills/pdb-database/SKILL.md +309 -0
- package/bin/skills/pdb-database/references/api_reference.md +617 -0
- package/bin/skills/pennylane/SKILL.md +226 -0
- package/bin/skills/pennylane/references/advanced_features.md +667 -0
- package/bin/skills/pennylane/references/devices_backends.md +596 -0
- package/bin/skills/pennylane/references/getting_started.md +227 -0
- package/bin/skills/pennylane/references/optimization.md +671 -0
- package/bin/skills/pennylane/references/quantum_chemistry.md +567 -0
- package/bin/skills/pennylane/references/quantum_circuits.md +437 -0
- package/bin/skills/pennylane/references/quantum_ml.md +571 -0
- package/bin/skills/perplexity-search/SKILL.md +448 -0
- package/bin/skills/perplexity-search/assets/.env.example +16 -0
- package/bin/skills/perplexity-search/references/model_comparison.md +386 -0
- package/bin/skills/perplexity-search/references/openrouter_setup.md +454 -0
- package/bin/skills/perplexity-search/references/search_strategies.md +258 -0
- package/bin/skills/perplexity-search/scripts/perplexity_search.py +277 -0
- package/bin/skills/perplexity-search/scripts/setup_env.py +171 -0
- package/bin/skills/plotly/SKILL.md +267 -0
- package/bin/skills/plotly/references/chart-types.md +488 -0
- package/bin/skills/plotly/references/export-interactivity.md +453 -0
- package/bin/skills/plotly/references/graph-objects.md +302 -0
- package/bin/skills/plotly/references/layouts-styling.md +457 -0
- package/bin/skills/plotly/references/plotly-express.md +213 -0
- package/bin/skills/polars/SKILL.md +387 -0
- package/bin/skills/polars/references/best_practices.md +649 -0
- package/bin/skills/polars/references/core_concepts.md +378 -0
- package/bin/skills/polars/references/io_guide.md +557 -0
- package/bin/skills/polars/references/operations.md +602 -0
- package/bin/skills/polars/references/pandas_migration.md +417 -0
- package/bin/skills/polars/references/transformations.md +549 -0
- package/bin/skills/protocolsio-integration/SKILL.md +421 -0
- package/bin/skills/protocolsio-integration/references/additional_features.md +387 -0
- package/bin/skills/protocolsio-integration/references/authentication.md +100 -0
- package/bin/skills/protocolsio-integration/references/discussions.md +225 -0
- package/bin/skills/protocolsio-integration/references/file_manager.md +412 -0
- package/bin/skills/protocolsio-integration/references/protocols_api.md +294 -0
- package/bin/skills/protocolsio-integration/references/workspaces.md +293 -0
- package/bin/skills/pubchem-database/SKILL.md +574 -0
- package/bin/skills/pubchem-database/references/api_reference.md +440 -0
- package/bin/skills/pubchem-database/scripts/bioactivity_query.py +367 -0
- package/bin/skills/pubchem-database/scripts/compound_search.py +297 -0
- package/bin/skills/pubmed-database/SKILL.md +460 -0
- package/bin/skills/pubmed-database/references/api_reference.md +298 -0
- package/bin/skills/pubmed-database/references/common_queries.md +453 -0
- package/bin/skills/pubmed-database/references/search_syntax.md +436 -0
- package/bin/skills/pufferlib/SKILL.md +436 -0
- package/bin/skills/pufferlib/references/environments.md +508 -0
- package/bin/skills/pufferlib/references/integration.md +621 -0
- package/bin/skills/pufferlib/references/policies.md +653 -0
- package/bin/skills/pufferlib/references/training.md +360 -0
- package/bin/skills/pufferlib/references/vectorization.md +557 -0
- package/bin/skills/pufferlib/scripts/env_template.py +340 -0
- package/bin/skills/pufferlib/scripts/train_template.py +239 -0
- package/bin/skills/pydeseq2/SKILL.md +559 -0
- package/bin/skills/pydeseq2/references/api_reference.md +228 -0
- package/bin/skills/pydeseq2/references/workflow_guide.md +582 -0
- package/bin/skills/pydeseq2/scripts/run_deseq2_analysis.py +353 -0
- package/bin/skills/pydicom/SKILL.md +434 -0
- package/bin/skills/pydicom/references/common_tags.md +228 -0
- package/bin/skills/pydicom/references/transfer_syntaxes.md +352 -0
- package/bin/skills/pydicom/scripts/anonymize_dicom.py +137 -0
- package/bin/skills/pydicom/scripts/dicom_to_image.py +172 -0
- package/bin/skills/pydicom/scripts/extract_metadata.py +173 -0
- package/bin/skills/pyhealth/SKILL.md +491 -0
- package/bin/skills/pyhealth/references/datasets.md +178 -0
- package/bin/skills/pyhealth/references/medical_coding.md +284 -0
- package/bin/skills/pyhealth/references/models.md +594 -0
- package/bin/skills/pyhealth/references/preprocessing.md +638 -0
- package/bin/skills/pyhealth/references/tasks.md +379 -0
- package/bin/skills/pyhealth/references/training_evaluation.md +648 -0
- package/bin/skills/pylabrobot/SKILL.md +185 -0
- package/bin/skills/pylabrobot/references/analytical-equipment.md +464 -0
- package/bin/skills/pylabrobot/references/hardware-backends.md +480 -0
- package/bin/skills/pylabrobot/references/liquid-handling.md +403 -0
- package/bin/skills/pylabrobot/references/material-handling.md +620 -0
- package/bin/skills/pylabrobot/references/resources.md +489 -0
- package/bin/skills/pylabrobot/references/visualization.md +532 -0
- package/bin/skills/pymatgen/SKILL.md +691 -0
- package/bin/skills/pymatgen/references/analysis_modules.md +530 -0
- package/bin/skills/pymatgen/references/core_classes.md +318 -0
- package/bin/skills/pymatgen/references/io_formats.md +469 -0
- package/bin/skills/pymatgen/references/materials_project_api.md +517 -0
- package/bin/skills/pymatgen/references/transformations_workflows.md +591 -0
- package/bin/skills/pymatgen/scripts/phase_diagram_generator.py +233 -0
- package/bin/skills/pymatgen/scripts/structure_analyzer.py +266 -0
- package/bin/skills/pymatgen/scripts/structure_converter.py +169 -0
- package/bin/skills/pymc/SKILL.md +572 -0
- package/bin/skills/pymc/assets/hierarchical_model_template.py +333 -0
- package/bin/skills/pymc/assets/linear_regression_template.py +241 -0
- package/bin/skills/pymc/references/distributions.md +320 -0
- package/bin/skills/pymc/references/sampling_inference.md +424 -0
- package/bin/skills/pymc/references/workflows.md +526 -0
- package/bin/skills/pymc/scripts/model_comparison.py +387 -0
- package/bin/skills/pymc/scripts/model_diagnostics.py +350 -0
- package/bin/skills/pymoo/SKILL.md +571 -0
- package/bin/skills/pymoo/references/algorithms.md +180 -0
- package/bin/skills/pymoo/references/constraints_mcdm.md +417 -0
- package/bin/skills/pymoo/references/operators.md +345 -0
- package/bin/skills/pymoo/references/problems.md +265 -0
- package/bin/skills/pymoo/references/visualization.md +353 -0
- package/bin/skills/pymoo/scripts/custom_problem_example.py +181 -0
- package/bin/skills/pymoo/scripts/decision_making_example.py +161 -0
- package/bin/skills/pymoo/scripts/many_objective_example.py +72 -0
- package/bin/skills/pymoo/scripts/multi_objective_example.py +63 -0
- package/bin/skills/pymoo/scripts/single_objective_example.py +59 -0
- package/bin/skills/pyopenms/SKILL.md +217 -0
- package/bin/skills/pyopenms/references/data_structures.md +497 -0
- package/bin/skills/pyopenms/references/feature_detection.md +410 -0
- package/bin/skills/pyopenms/references/file_io.md +349 -0
- package/bin/skills/pyopenms/references/identification.md +422 -0
- package/bin/skills/pyopenms/references/metabolomics.md +482 -0
- package/bin/skills/pyopenms/references/signal_processing.md +433 -0
- package/bin/skills/pysam/SKILL.md +265 -0
- package/bin/skills/pysam/references/alignment_files.md +280 -0
- package/bin/skills/pysam/references/common_workflows.md +520 -0
- package/bin/skills/pysam/references/sequence_files.md +407 -0
- package/bin/skills/pysam/references/variant_files.md +365 -0
- package/bin/skills/pytdc/SKILL.md +460 -0
- package/bin/skills/pytdc/references/datasets.md +246 -0
- package/bin/skills/pytdc/references/oracles.md +400 -0
- package/bin/skills/pytdc/references/utilities.md +684 -0
- package/bin/skills/pytdc/scripts/benchmark_evaluation.py +327 -0
- package/bin/skills/pytdc/scripts/load_and_split_data.py +214 -0
- package/bin/skills/pytdc/scripts/molecular_generation.py +404 -0
- package/bin/skills/qiskit/SKILL.md +275 -0
- package/bin/skills/qiskit/references/algorithms.md +607 -0
- package/bin/skills/qiskit/references/backends.md +433 -0
- package/bin/skills/qiskit/references/circuits.md +197 -0
- package/bin/skills/qiskit/references/patterns.md +533 -0
- package/bin/skills/qiskit/references/primitives.md +277 -0
- package/bin/skills/qiskit/references/setup.md +99 -0
- package/bin/skills/qiskit/references/transpilation.md +286 -0
- package/bin/skills/qiskit/references/visualization.md +415 -0
- package/bin/skills/qutip/SKILL.md +318 -0
- package/bin/skills/qutip/references/advanced.md +555 -0
- package/bin/skills/qutip/references/analysis.md +523 -0
- package/bin/skills/qutip/references/core_concepts.md +293 -0
- package/bin/skills/qutip/references/time_evolution.md +348 -0
- package/bin/skills/qutip/references/visualization.md +431 -0
- package/bin/skills/rdkit/SKILL.md +780 -0
- package/bin/skills/rdkit/references/api_reference.md +432 -0
- package/bin/skills/rdkit/references/descriptors_reference.md +595 -0
- package/bin/skills/rdkit/references/smarts_patterns.md +668 -0
- package/bin/skills/rdkit/scripts/molecular_properties.py +243 -0
- package/bin/skills/rdkit/scripts/similarity_search.py +297 -0
- package/bin/skills/rdkit/scripts/substructure_filter.py +386 -0
- package/bin/skills/reactome-database/SKILL.md +278 -0
- package/bin/skills/reactome-database/references/api_reference.md +465 -0
- package/bin/skills/reactome-database/scripts/reactome_query.py +286 -0
- package/bin/skills/rowan/SKILL.md +427 -0
- package/bin/skills/rowan/references/api_reference.md +413 -0
- package/bin/skills/rowan/references/molecule_handling.md +429 -0
- package/bin/skills/rowan/references/proteins_and_organization.md +499 -0
- package/bin/skills/rowan/references/rdkit_native.md +438 -0
- package/bin/skills/rowan/references/results_interpretation.md +481 -0
- package/bin/skills/rowan/references/workflow_types.md +591 -0
- package/bin/skills/scanpy/SKILL.md +386 -0
- package/bin/skills/scanpy/assets/analysis_template.py +295 -0
- package/bin/skills/scanpy/references/api_reference.md +251 -0
- package/bin/skills/scanpy/references/plotting_guide.md +352 -0
- package/bin/skills/scanpy/references/standard_workflow.md +206 -0
- package/bin/skills/scanpy/scripts/qc_analysis.py +200 -0
- package/bin/skills/scientific-brainstorming/SKILL.md +191 -0
- package/bin/skills/scientific-brainstorming/references/brainstorming_methods.md +326 -0
- package/bin/skills/scientific-visualization/SKILL.md +779 -0
- package/bin/skills/scientific-visualization/assets/color_palettes.py +197 -0
- package/bin/skills/scientific-visualization/assets/nature.mplstyle +63 -0
- package/bin/skills/scientific-visualization/assets/presentation.mplstyle +61 -0
- package/bin/skills/scientific-visualization/assets/publication.mplstyle +68 -0
- package/bin/skills/scientific-visualization/references/color_palettes.md +348 -0
- package/bin/skills/scientific-visualization/references/journal_requirements.md +320 -0
- package/bin/skills/scientific-visualization/references/matplotlib_examples.md +620 -0
- package/bin/skills/scientific-visualization/references/publication_guidelines.md +205 -0
- package/bin/skills/scientific-visualization/scripts/figure_export.py +343 -0
- package/bin/skills/scientific-visualization/scripts/style_presets.py +416 -0
- package/bin/skills/scikit-bio/SKILL.md +437 -0
- package/bin/skills/scikit-bio/references/api_reference.md +749 -0
- package/bin/skills/scikit-learn/SKILL.md +521 -0
- package/bin/skills/scikit-learn/references/model_evaluation.md +592 -0
- package/bin/skills/scikit-learn/references/pipelines_and_composition.md +612 -0
- package/bin/skills/scikit-learn/references/preprocessing.md +606 -0
- package/bin/skills/scikit-learn/references/quick_reference.md +433 -0
- package/bin/skills/scikit-learn/references/supervised_learning.md +378 -0
- package/bin/skills/scikit-learn/references/unsupervised_learning.md +505 -0
- package/bin/skills/scikit-learn/scripts/classification_pipeline.py +257 -0
- package/bin/skills/scikit-learn/scripts/clustering_analysis.py +386 -0
- package/bin/skills/scikit-survival/SKILL.md +399 -0
- package/bin/skills/scikit-survival/references/competing-risks.md +397 -0
- package/bin/skills/scikit-survival/references/cox-models.md +182 -0
- package/bin/skills/scikit-survival/references/data-handling.md +494 -0
- package/bin/skills/scikit-survival/references/ensemble-models.md +327 -0
- package/bin/skills/scikit-survival/references/evaluation-metrics.md +378 -0
- package/bin/skills/scikit-survival/references/svm-models.md +411 -0
- package/bin/skills/scvi-tools/SKILL.md +190 -0
- package/bin/skills/scvi-tools/references/differential-expression.md +581 -0
- package/bin/skills/scvi-tools/references/models-atac-seq.md +321 -0
- package/bin/skills/scvi-tools/references/models-multimodal.md +367 -0
- package/bin/skills/scvi-tools/references/models-scrna-seq.md +330 -0
- package/bin/skills/scvi-tools/references/models-spatial.md +438 -0
- package/bin/skills/scvi-tools/references/models-specialized.md +408 -0
- package/bin/skills/scvi-tools/references/theoretical-foundations.md +438 -0
- package/bin/skills/scvi-tools/references/workflows.md +546 -0
- package/bin/skills/seaborn/SKILL.md +673 -0
- package/bin/skills/seaborn/references/examples.md +822 -0
- package/bin/skills/seaborn/references/function_reference.md +770 -0
- package/bin/skills/seaborn/references/objects_interface.md +964 -0
- package/bin/skills/shap/SKILL.md +566 -0
- package/bin/skills/shap/references/explainers.md +339 -0
- package/bin/skills/shap/references/plots.md +507 -0
- package/bin/skills/shap/references/theory.md +449 -0
- package/bin/skills/shap/references/workflows.md +605 -0
- package/bin/skills/simpy/SKILL.md +429 -0
- package/bin/skills/simpy/references/events.md +374 -0
- package/bin/skills/simpy/references/monitoring.md +475 -0
- package/bin/skills/simpy/references/process-interaction.md +424 -0
- package/bin/skills/simpy/references/real-time.md +395 -0
- package/bin/skills/simpy/references/resources.md +275 -0
- package/bin/skills/simpy/scripts/basic_simulation_template.py +193 -0
- package/bin/skills/simpy/scripts/resource_monitor.py +345 -0
- package/bin/skills/stable-baselines3/SKILL.md +299 -0
- package/bin/skills/stable-baselines3/references/algorithms.md +333 -0
- package/bin/skills/stable-baselines3/references/callbacks.md +556 -0
- package/bin/skills/stable-baselines3/references/custom_environments.md +526 -0
- package/bin/skills/stable-baselines3/references/vectorized_envs.md +568 -0
- package/bin/skills/stable-baselines3/scripts/custom_env_template.py +314 -0
- package/bin/skills/stable-baselines3/scripts/evaluate_agent.py +245 -0
- package/bin/skills/stable-baselines3/scripts/train_rl_agent.py +165 -0
- package/bin/skills/statistical-analysis/SKILL.md +632 -0
- package/bin/skills/statistical-analysis/references/assumptions_and_diagnostics.md +369 -0
- package/bin/skills/statistical-analysis/references/bayesian_statistics.md +661 -0
- package/bin/skills/statistical-analysis/references/effect_sizes_and_power.md +581 -0
- package/bin/skills/statistical-analysis/references/reporting_standards.md +469 -0
- package/bin/skills/statistical-analysis/references/test_selection_guide.md +129 -0
- package/bin/skills/statistical-analysis/scripts/assumption_checks.py +539 -0
- package/bin/skills/statsmodels/SKILL.md +614 -0
- package/bin/skills/statsmodels/references/discrete_choice.md +669 -0
- package/bin/skills/statsmodels/references/glm.md +619 -0
- package/bin/skills/statsmodels/references/linear_models.md +447 -0
- package/bin/skills/statsmodels/references/stats_diagnostics.md +859 -0
- package/bin/skills/statsmodels/references/time_series.md +716 -0
- package/bin/skills/string-database/SKILL.md +534 -0
- package/bin/skills/string-database/references/string_reference.md +455 -0
- package/bin/skills/string-database/scripts/string_api.py +369 -0
- package/bin/skills/sympy/SKILL.md +500 -0
- package/bin/skills/sympy/references/advanced-topics.md +635 -0
- package/bin/skills/sympy/references/code-generation-printing.md +599 -0
- package/bin/skills/sympy/references/core-capabilities.md +348 -0
- package/bin/skills/sympy/references/matrices-linear-algebra.md +526 -0
- package/bin/skills/sympy/references/physics-mechanics.md +592 -0
- package/bin/skills/torch_geometric/SKILL.md +676 -0
- package/bin/skills/torch_geometric/references/datasets_reference.md +574 -0
- package/bin/skills/torch_geometric/references/layers_reference.md +485 -0
- package/bin/skills/torch_geometric/references/transforms_reference.md +679 -0
- package/bin/skills/torch_geometric/scripts/benchmark_model.py +309 -0
- package/bin/skills/torch_geometric/scripts/create_gnn_template.py +529 -0
- package/bin/skills/torch_geometric/scripts/visualize_graph.py +313 -0
- package/bin/skills/torchdrug/SKILL.md +450 -0
- package/bin/skills/torchdrug/references/core_concepts.md +565 -0
- package/bin/skills/torchdrug/references/datasets.md +380 -0
- package/bin/skills/torchdrug/references/knowledge_graphs.md +320 -0
- package/bin/skills/torchdrug/references/models_architectures.md +541 -0
- package/bin/skills/torchdrug/references/molecular_generation.md +352 -0
- package/bin/skills/torchdrug/references/molecular_property_prediction.md +169 -0
- package/bin/skills/torchdrug/references/protein_modeling.md +272 -0
- package/bin/skills/torchdrug/references/retrosynthesis.md +436 -0
- package/bin/skills/transformers/SKILL.md +164 -0
- package/bin/skills/transformers/references/generation.md +467 -0
- package/bin/skills/transformers/references/models.md +361 -0
- package/bin/skills/transformers/references/pipelines.md +335 -0
- package/bin/skills/transformers/references/tokenizers.md +447 -0
- package/bin/skills/transformers/references/training.md +500 -0
- package/bin/skills/umap-learn/SKILL.md +479 -0
- package/bin/skills/umap-learn/references/api_reference.md +532 -0
- package/bin/skills/uniprot-database/SKILL.md +195 -0
- package/bin/skills/uniprot-database/references/api_examples.md +413 -0
- package/bin/skills/uniprot-database/references/api_fields.md +275 -0
- package/bin/skills/uniprot-database/references/id_mapping_databases.md +285 -0
- package/bin/skills/uniprot-database/references/query_syntax.md +256 -0
- package/bin/skills/uniprot-database/scripts/uniprot_client.py +341 -0
- package/bin/skills/uspto-database/SKILL.md +607 -0
- package/bin/skills/uspto-database/references/additional_apis.md +394 -0
- package/bin/skills/uspto-database/references/patentsearch_api.md +266 -0
- package/bin/skills/uspto-database/references/peds_api.md +212 -0
- package/bin/skills/uspto-database/references/trademark_api.md +358 -0
- package/bin/skills/uspto-database/scripts/patent_search.py +290 -0
- package/bin/skills/uspto-database/scripts/peds_client.py +285 -0
- package/bin/skills/uspto-database/scripts/trademark_client.py +311 -0
- package/bin/skills/vaex/SKILL.md +182 -0
- package/bin/skills/vaex/references/core_dataframes.md +367 -0
- package/bin/skills/vaex/references/data_processing.md +555 -0
- package/bin/skills/vaex/references/io_operations.md +703 -0
- package/bin/skills/vaex/references/machine_learning.md +728 -0
- package/bin/skills/vaex/references/performance.md +571 -0
- package/bin/skills/vaex/references/visualization.md +613 -0
- package/bin/skills/zarr-python/SKILL.md +779 -0
- package/bin/skills/zarr-python/references/api_reference.md +515 -0
- package/bin/skills/zinc-database/SKILL.md +404 -0
- package/bin/skills/zinc-database/references/api_reference.md +692 -0
- package/bin/synsc +0 -0
- package/package.json +1 -1
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# Ensemble Models for Survival Analysis
|
|
2
|
+
|
|
3
|
+
## Random Survival Forests
|
|
4
|
+
|
|
5
|
+
### Overview
|
|
6
|
+
|
|
7
|
+
Random Survival Forests extend the random forest algorithm to survival analysis with censored data. They build multiple decision trees on bootstrap samples and aggregate predictions.
|
|
8
|
+
|
|
9
|
+
### How They Work
|
|
10
|
+
|
|
11
|
+
1. **Bootstrap Sampling**: Each tree is built on a different bootstrap sample of the training data
|
|
12
|
+
2. **Feature Randomness**: At each node, only a random subset of features is considered for splitting
|
|
13
|
+
3. **Survival Function Estimation**: At terminal nodes, Kaplan-Meier and Nelson-Aalen estimators compute survival functions
|
|
14
|
+
4. **Ensemble Aggregation**: Final predictions average survival functions across all trees
|
|
15
|
+
|
|
16
|
+
### When to Use
|
|
17
|
+
|
|
18
|
+
- Complex non-linear relationships between features and survival
|
|
19
|
+
- No assumptions about functional form needed
|
|
20
|
+
- Want robust predictions with minimal tuning
|
|
21
|
+
- Need feature importance estimates
|
|
22
|
+
- Have sufficient sample size (typically n > 100)
|
|
23
|
+
|
|
24
|
+
### Key Parameters
|
|
25
|
+
|
|
26
|
+
- `n_estimators`: Number of trees (default: 100)
|
|
27
|
+
- More trees = more stable predictions but slower
|
|
28
|
+
- Typical range: 100-1000
|
|
29
|
+
|
|
30
|
+
- `max_depth`: Maximum depth of trees
|
|
31
|
+
- Controls tree complexity
|
|
32
|
+
- None = nodes expanded until pure or min_samples_split
|
|
33
|
+
|
|
34
|
+
- `min_samples_split`: Minimum samples to split a node (default: 6)
|
|
35
|
+
- Larger values = more regularization
|
|
36
|
+
|
|
37
|
+
- `min_samples_leaf`: Minimum samples at leaf nodes (default: 3)
|
|
38
|
+
- Prevents overfitting to small groups
|
|
39
|
+
|
|
40
|
+
- `max_features`: Number of features to consider at each split
|
|
41
|
+
- 'sqrt': sqrt(n_features) - good default
|
|
42
|
+
- 'log2': log2(n_features)
|
|
43
|
+
- None: all features
|
|
44
|
+
|
|
45
|
+
- `n_jobs`: Number of parallel jobs (-1 uses all processors)
|
|
46
|
+
|
|
47
|
+
### Example Usage
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from sksurv.ensemble import RandomSurvivalForest
|
|
51
|
+
from sksurv.datasets import load_breast_cancer
|
|
52
|
+
|
|
53
|
+
# Load data
|
|
54
|
+
X, y = load_breast_cancer()
|
|
55
|
+
|
|
56
|
+
# Fit Random Survival Forest
|
|
57
|
+
rsf = RandomSurvivalForest(n_estimators=1000,
|
|
58
|
+
min_samples_split=10,
|
|
59
|
+
min_samples_leaf=15,
|
|
60
|
+
max_features="sqrt",
|
|
61
|
+
n_jobs=-1,
|
|
62
|
+
random_state=42)
|
|
63
|
+
rsf.fit(X, y)
|
|
64
|
+
|
|
65
|
+
# Predict risk scores
|
|
66
|
+
risk_scores = rsf.predict(X)
|
|
67
|
+
|
|
68
|
+
# Predict survival functions
|
|
69
|
+
surv_funcs = rsf.predict_survival_function(X)
|
|
70
|
+
|
|
71
|
+
# Predict cumulative hazard functions
|
|
72
|
+
chf_funcs = rsf.predict_cumulative_hazard_function(X)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Feature Importance
|
|
76
|
+
|
|
77
|
+
**Important**: Built-in feature importance based on split impurity is not reliable for survival data. Use permutation-based feature importance instead.
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from sklearn.inspection import permutation_importance
|
|
81
|
+
from sksurv.metrics import concordance_index_censored
|
|
82
|
+
|
|
83
|
+
# Define scoring function
|
|
84
|
+
def score_survival_model(model, X, y):
|
|
85
|
+
prediction = model.predict(X)
|
|
86
|
+
result = concordance_index_censored(y['event'], y['time'], prediction)
|
|
87
|
+
return result[0]
|
|
88
|
+
|
|
89
|
+
# Compute permutation importance
|
|
90
|
+
perm_importance = permutation_importance(
|
|
91
|
+
rsf, X, y,
|
|
92
|
+
n_repeats=10,
|
|
93
|
+
random_state=42,
|
|
94
|
+
scoring=score_survival_model
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
# Get feature importance
|
|
98
|
+
feature_importance = perm_importance.importances_mean
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Gradient Boosting Survival Analysis
|
|
102
|
+
|
|
103
|
+
### Overview
|
|
104
|
+
|
|
105
|
+
Gradient boosting builds an ensemble by sequentially adding weak learners that correct errors of previous learners. The model is: **f(x) = Σ β_m g(x; θ_m)**
|
|
106
|
+
|
|
107
|
+
### Model Types
|
|
108
|
+
|
|
109
|
+
#### GradientBoostingSurvivalAnalysis
|
|
110
|
+
|
|
111
|
+
Uses regression trees as base learners. Can capture complex non-linear relationships.
|
|
112
|
+
|
|
113
|
+
**When to Use:**
|
|
114
|
+
- Need to model complex non-linear relationships
|
|
115
|
+
- Want high predictive performance
|
|
116
|
+
- Have sufficient data to avoid overfitting
|
|
117
|
+
- Can tune hyperparameters carefully
|
|
118
|
+
|
|
119
|
+
#### ComponentwiseGradientBoostingSurvivalAnalysis
|
|
120
|
+
|
|
121
|
+
Uses component-wise least squares as base learners. Produces linear models with automatic feature selection.
|
|
122
|
+
|
|
123
|
+
**When to Use:**
|
|
124
|
+
- Want interpretable linear model
|
|
125
|
+
- Need automatic feature selection (like Lasso)
|
|
126
|
+
- Have high-dimensional data
|
|
127
|
+
- Prefer sparse models
|
|
128
|
+
|
|
129
|
+
### Loss Functions
|
|
130
|
+
|
|
131
|
+
#### Cox's Partial Likelihood (default)
|
|
132
|
+
|
|
133
|
+
Maintains proportional hazards framework but replaces linear model with additive ensemble model.
|
|
134
|
+
|
|
135
|
+
**Appropriate for:**
|
|
136
|
+
- Standard survival analysis settings
|
|
137
|
+
- When proportional hazards is reasonable
|
|
138
|
+
- Most use cases
|
|
139
|
+
|
|
140
|
+
#### Accelerated Failure Time (AFT)
|
|
141
|
+
|
|
142
|
+
Assumes features accelerate or decelerate survival time by a constant factor. Loss function: **(1/n) Σ ω_i (log y_i - f(x_i))²**
|
|
143
|
+
|
|
144
|
+
**Appropriate for:**
|
|
145
|
+
- AFT framework preferred over proportional hazards
|
|
146
|
+
- Want to model time directly
|
|
147
|
+
- Need to interpret effects on survival time
|
|
148
|
+
|
|
149
|
+
### Regularization Strategies
|
|
150
|
+
|
|
151
|
+
Three main techniques prevent overfitting:
|
|
152
|
+
|
|
153
|
+
1. **Learning Rate** (`learning_rate < 1`)
|
|
154
|
+
- Shrinks contribution of each base learner
|
|
155
|
+
- Smaller values need more iterations but better generalization
|
|
156
|
+
- Typical range: 0.01 - 0.1
|
|
157
|
+
|
|
158
|
+
2. **Dropout** (`dropout_rate > 0`)
|
|
159
|
+
- Randomly drops previous learners during training
|
|
160
|
+
- Forces learners to be more robust
|
|
161
|
+
- Typical range: 0.01 - 0.2
|
|
162
|
+
|
|
163
|
+
3. **Subsampling** (`subsample < 1`)
|
|
164
|
+
- Uses random subset of data for each iteration
|
|
165
|
+
- Adds randomness and reduces overfitting
|
|
166
|
+
- Typical range: 0.5 - 0.9
|
|
167
|
+
|
|
168
|
+
**Recommendation**: Combine small learning rate with early stopping for best performance.
|
|
169
|
+
|
|
170
|
+
### Key Parameters
|
|
171
|
+
|
|
172
|
+
- `loss`: Loss function ('coxph' or 'ipcwls')
|
|
173
|
+
- `learning_rate`: Shrinks contribution of each tree (default: 0.1)
|
|
174
|
+
- `n_estimators`: Number of boosting iterations (default: 100)
|
|
175
|
+
- `subsample`: Fraction of samples for each iteration (default: 1.0)
|
|
176
|
+
- `dropout_rate`: Dropout rate for learners (default: 0.0)
|
|
177
|
+
- `max_depth`: Maximum depth of trees (default: 3)
|
|
178
|
+
- `min_samples_split`: Minimum samples to split node (default: 2)
|
|
179
|
+
- `min_samples_leaf`: Minimum samples at leaf (default: 1)
|
|
180
|
+
- `max_features`: Features to consider at each split
|
|
181
|
+
|
|
182
|
+
### Example Usage
|
|
183
|
+
|
|
184
|
+
```python
|
|
185
|
+
from sksurv.ensemble import GradientBoostingSurvivalAnalysis
|
|
186
|
+
from sklearn.model_selection import train_test_split
|
|
187
|
+
|
|
188
|
+
# Split data
|
|
189
|
+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
|
190
|
+
|
|
191
|
+
# Fit gradient boosting model
|
|
192
|
+
gbs = GradientBoostingSurvivalAnalysis(
|
|
193
|
+
loss='coxph',
|
|
194
|
+
learning_rate=0.05,
|
|
195
|
+
n_estimators=200,
|
|
196
|
+
subsample=0.8,
|
|
197
|
+
dropout_rate=0.1,
|
|
198
|
+
max_depth=3,
|
|
199
|
+
random_state=42
|
|
200
|
+
)
|
|
201
|
+
gbs.fit(X_train, y_train)
|
|
202
|
+
|
|
203
|
+
# Predict risk scores
|
|
204
|
+
risk_scores = gbs.predict(X_test)
|
|
205
|
+
|
|
206
|
+
# Predict survival functions
|
|
207
|
+
surv_funcs = gbs.predict_survival_function(X_test)
|
|
208
|
+
|
|
209
|
+
# Predict cumulative hazard functions
|
|
210
|
+
chf_funcs = gbs.predict_cumulative_hazard_function(X_test)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Early Stopping
|
|
214
|
+
|
|
215
|
+
Use validation set to prevent overfitting:
|
|
216
|
+
|
|
217
|
+
```python
|
|
218
|
+
from sklearn.model_selection import train_test_split
|
|
219
|
+
|
|
220
|
+
# Create train/validation split
|
|
221
|
+
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)
|
|
222
|
+
|
|
223
|
+
# Fit with early stopping
|
|
224
|
+
gbs = GradientBoostingSurvivalAnalysis(
|
|
225
|
+
n_estimators=1000,
|
|
226
|
+
learning_rate=0.01,
|
|
227
|
+
max_depth=3,
|
|
228
|
+
validation_fraction=0.2,
|
|
229
|
+
n_iter_no_change=10,
|
|
230
|
+
random_state=42
|
|
231
|
+
)
|
|
232
|
+
gbs.fit(X_tr, y_tr)
|
|
233
|
+
|
|
234
|
+
# Number of iterations used
|
|
235
|
+
print(f"Used {gbs.n_estimators_} iterations")
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Hyperparameter Tuning
|
|
239
|
+
|
|
240
|
+
```python
|
|
241
|
+
from sklearn.model_selection import GridSearchCV
|
|
242
|
+
|
|
243
|
+
param_grid = {
|
|
244
|
+
'learning_rate': [0.01, 0.05, 0.1],
|
|
245
|
+
'n_estimators': [100, 200, 300],
|
|
246
|
+
'max_depth': [3, 5, 7],
|
|
247
|
+
'subsample': [0.8, 1.0]
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
cv = GridSearchCV(
|
|
251
|
+
GradientBoostingSurvivalAnalysis(),
|
|
252
|
+
param_grid,
|
|
253
|
+
scoring='concordance_index_ipcw',
|
|
254
|
+
cv=5,
|
|
255
|
+
n_jobs=-1
|
|
256
|
+
)
|
|
257
|
+
cv.fit(X, y)
|
|
258
|
+
|
|
259
|
+
best_model = cv.best_estimator_
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## ComponentwiseGradientBoostingSurvivalAnalysis
|
|
263
|
+
|
|
264
|
+
### Overview
|
|
265
|
+
|
|
266
|
+
Uses component-wise least squares, producing sparse linear models with automatic feature selection similar to Lasso.
|
|
267
|
+
|
|
268
|
+
### When to Use
|
|
269
|
+
|
|
270
|
+
- Want interpretable linear model
|
|
271
|
+
- Need automatic feature selection
|
|
272
|
+
- Have high-dimensional data with many irrelevant features
|
|
273
|
+
- Prefer coefficient-based interpretation
|
|
274
|
+
|
|
275
|
+
### Example Usage
|
|
276
|
+
|
|
277
|
+
```python
|
|
278
|
+
from sksurv.ensemble import ComponentwiseGradientBoostingSurvivalAnalysis
|
|
279
|
+
|
|
280
|
+
# Fit componentwise boosting
|
|
281
|
+
cgbs = ComponentwiseGradientBoostingSurvivalAnalysis(
|
|
282
|
+
loss='coxph',
|
|
283
|
+
learning_rate=0.1,
|
|
284
|
+
n_estimators=100
|
|
285
|
+
)
|
|
286
|
+
cgbs.fit(X, y)
|
|
287
|
+
|
|
288
|
+
# Get selected features and coefficients
|
|
289
|
+
coef = cgbs.coef_
|
|
290
|
+
selected_features = [i for i, c in enumerate(coef) if c != 0]
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
## ExtraSurvivalTrees
|
|
294
|
+
|
|
295
|
+
Extremely randomized survival trees - similar to Random Survival Forest but with additional randomness in split selection.
|
|
296
|
+
|
|
297
|
+
### When to Use
|
|
298
|
+
|
|
299
|
+
- Want even more regularization than Random Survival Forest
|
|
300
|
+
- Have limited data
|
|
301
|
+
- Need faster training
|
|
302
|
+
|
|
303
|
+
### Key Difference
|
|
304
|
+
|
|
305
|
+
Instead of finding the best split for selected features, it randomly selects split points, adding more diversity to the ensemble.
|
|
306
|
+
|
|
307
|
+
```python
|
|
308
|
+
from sksurv.ensemble import ExtraSurvivalTrees
|
|
309
|
+
|
|
310
|
+
est = ExtraSurvivalTrees(n_estimators=100, random_state=42)
|
|
311
|
+
est.fit(X, y)
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
## Model Comparison
|
|
315
|
+
|
|
316
|
+
| Model | Complexity | Interpretability | Performance | Speed |
|
|
317
|
+
|-------|-----------|------------------|-------------|-------|
|
|
318
|
+
| Random Survival Forest | Medium | Low | High | Medium |
|
|
319
|
+
| GradientBoostingSurvivalAnalysis | High | Low | Highest | Slow |
|
|
320
|
+
| ComponentwiseGradientBoostingSurvivalAnalysis | Low | High | Medium | Fast |
|
|
321
|
+
| ExtraSurvivalTrees | Medium | Low | Medium-High | Fast |
|
|
322
|
+
|
|
323
|
+
**General Recommendations:**
|
|
324
|
+
- **Best overall performance**: GradientBoostingSurvivalAnalysis with tuning
|
|
325
|
+
- **Best balance**: RandomSurvivalForest
|
|
326
|
+
- **Best interpretability**: ComponentwiseGradientBoostingSurvivalAnalysis
|
|
327
|
+
- **Fastest training**: ExtraSurvivalTrees
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
# Evaluation Metrics for Survival Models
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Evaluating survival models requires specialized metrics that account for censored data. scikit-survival provides three main categories of metrics:
|
|
6
|
+
1. Concordance Index (C-index)
|
|
7
|
+
2. Time-dependent ROC and AUC
|
|
8
|
+
3. Brier Score
|
|
9
|
+
|
|
10
|
+
## Concordance Index (C-index)
|
|
11
|
+
|
|
12
|
+
### What It Measures
|
|
13
|
+
|
|
14
|
+
The concordance index measures the rank correlation between predicted risk scores and observed event times. It represents the probability that, for a random pair of subjects, the model correctly orders their survival times.
|
|
15
|
+
|
|
16
|
+
**Range**: 0 to 1
|
|
17
|
+
- 0.5 = random predictions
|
|
18
|
+
- 1.0 = perfect concordance
|
|
19
|
+
- Typical good performance: 0.7-0.8
|
|
20
|
+
|
|
21
|
+
### Two Implementations
|
|
22
|
+
|
|
23
|
+
#### Harrell's C-index (concordance_index_censored)
|
|
24
|
+
|
|
25
|
+
The traditional estimator, simpler but has limitations.
|
|
26
|
+
|
|
27
|
+
**When to Use:**
|
|
28
|
+
- Low censoring rates (< 40%)
|
|
29
|
+
- Quick evaluation during development
|
|
30
|
+
- Comparing models on same dataset
|
|
31
|
+
|
|
32
|
+
**Limitations:**
|
|
33
|
+
- Becomes increasingly biased with high censoring rates
|
|
34
|
+
- Overestimates performance starting at approximately 49% censoring
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
from sksurv.metrics import concordance_index_censored
|
|
38
|
+
|
|
39
|
+
# Compute Harrell's C-index
|
|
40
|
+
result = concordance_index_censored(y_test['event'], y_test['time'], risk_scores)
|
|
41
|
+
c_index = result[0]
|
|
42
|
+
print(f"Harrell's C-index: {c_index:.3f}")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
#### Uno's C-index (concordance_index_ipcw)
|
|
46
|
+
|
|
47
|
+
Inverse probability of censoring weighted (IPCW) estimator that corrects for censoring bias.
|
|
48
|
+
|
|
49
|
+
**When to Use:**
|
|
50
|
+
- Moderate to high censoring rates (> 40%)
|
|
51
|
+
- Need unbiased estimates
|
|
52
|
+
- Comparing models across different datasets
|
|
53
|
+
- Publishing results (more robust)
|
|
54
|
+
|
|
55
|
+
**Advantages:**
|
|
56
|
+
- Remains stable even with high censoring
|
|
57
|
+
- More reliable estimates
|
|
58
|
+
- Less biased
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
from sksurv.metrics import concordance_index_ipcw
|
|
62
|
+
|
|
63
|
+
# Compute Uno's C-index
|
|
64
|
+
# Requires training data for IPCW calculation
|
|
65
|
+
c_index, concordant, discordant, tied_risk = concordance_index_ipcw(
|
|
66
|
+
y_train, y_test, risk_scores
|
|
67
|
+
)
|
|
68
|
+
print(f"Uno's C-index: {c_index:.3f}")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Choosing Between Harrell's and Uno's
|
|
72
|
+
|
|
73
|
+
**Use Uno's C-index when:**
|
|
74
|
+
- Censoring rate > 40%
|
|
75
|
+
- Need most accurate estimates
|
|
76
|
+
- Comparing models from different studies
|
|
77
|
+
- Publishing research
|
|
78
|
+
|
|
79
|
+
**Use Harrell's C-index when:**
|
|
80
|
+
- Low censoring rates
|
|
81
|
+
- Quick model comparisons during development
|
|
82
|
+
- Computational efficiency is critical
|
|
83
|
+
|
|
84
|
+
### Example Comparison
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
from sksurv.metrics import concordance_index_censored, concordance_index_ipcw
|
|
88
|
+
|
|
89
|
+
# Harrell's C-index
|
|
90
|
+
harrell = concordance_index_censored(y_test['event'], y_test['time'], risk_scores)[0]
|
|
91
|
+
|
|
92
|
+
# Uno's C-index
|
|
93
|
+
uno = concordance_index_ipcw(y_train, y_test, risk_scores)[0]
|
|
94
|
+
|
|
95
|
+
print(f"Harrell's C-index: {harrell:.3f}")
|
|
96
|
+
print(f"Uno's C-index: {uno:.3f}")
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Time-Dependent ROC and AUC
|
|
100
|
+
|
|
101
|
+
### What It Measures
|
|
102
|
+
|
|
103
|
+
Time-dependent AUC evaluates model discrimination at specific time points. It distinguishes subjects who experience events by time *t* from those who don't.
|
|
104
|
+
|
|
105
|
+
**Question answered**: "How well does the model predict who will have an event by time t?"
|
|
106
|
+
|
|
107
|
+
### When to Use
|
|
108
|
+
|
|
109
|
+
- Predicting event occurrence within specific time windows
|
|
110
|
+
- Clinical decision-making at specific timepoints (e.g., 5-year survival)
|
|
111
|
+
- Want to evaluate performance across different time horizons
|
|
112
|
+
- Need both discrimination and timing information
|
|
113
|
+
|
|
114
|
+
### Key Function: cumulative_dynamic_auc
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
from sksurv.metrics import cumulative_dynamic_auc
|
|
118
|
+
|
|
119
|
+
# Define evaluation times
|
|
120
|
+
times = [365, 730, 1095, 1460, 1825] # 1, 2, 3, 4, 5 years
|
|
121
|
+
|
|
122
|
+
# Compute time-dependent AUC
|
|
123
|
+
auc, mean_auc = cumulative_dynamic_auc(
|
|
124
|
+
y_train, y_test, risk_scores, times
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
# Plot AUC over time
|
|
128
|
+
import matplotlib.pyplot as plt
|
|
129
|
+
plt.plot(times, auc, marker='o')
|
|
130
|
+
plt.xlabel('Time (days)')
|
|
131
|
+
plt.ylabel('Time-dependent AUC')
|
|
132
|
+
plt.title('Model Discrimination Over Time')
|
|
133
|
+
plt.show()
|
|
134
|
+
|
|
135
|
+
print(f"Mean AUC: {mean_auc:.3f}")
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Interpretation
|
|
139
|
+
|
|
140
|
+
- **AUC at time t**: Probability model correctly ranks a subject who had event by time t above one who didn't
|
|
141
|
+
- **Varying AUC over time**: Indicates model performance changes with time horizon
|
|
142
|
+
- **Mean AUC**: Overall summary of discrimination across all time points
|
|
143
|
+
|
|
144
|
+
### Example: Comparing Models
|
|
145
|
+
|
|
146
|
+
```python
|
|
147
|
+
# Compare two models
|
|
148
|
+
auc1, mean_auc1 = cumulative_dynamic_auc(y_train, y_test, risk_scores1, times)
|
|
149
|
+
auc2, mean_auc2 = cumulative_dynamic_auc(y_train, y_test, risk_scores2, times)
|
|
150
|
+
|
|
151
|
+
plt.plot(times, auc1, marker='o', label='Model 1')
|
|
152
|
+
plt.plot(times, auc2, marker='s', label='Model 2')
|
|
153
|
+
plt.xlabel('Time (days)')
|
|
154
|
+
plt.ylabel('Time-dependent AUC')
|
|
155
|
+
plt.legend()
|
|
156
|
+
plt.show()
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Brier Score
|
|
160
|
+
|
|
161
|
+
### What It Measures
|
|
162
|
+
|
|
163
|
+
Brier score extends mean squared error to survival data with censoring. It measures both discrimination (ranking) and calibration (accuracy of predicted probabilities).
|
|
164
|
+
|
|
165
|
+
**Formula**: **(1/n) Σ (S(t|x_i) - I(T_i > t))²**
|
|
166
|
+
|
|
167
|
+
where S(t|x_i) is predicted survival probability at time t for subject i.
|
|
168
|
+
|
|
169
|
+
**Range**: 0 to 1
|
|
170
|
+
- 0 = perfect predictions
|
|
171
|
+
- Lower is better
|
|
172
|
+
- Typical good performance: < 0.2
|
|
173
|
+
|
|
174
|
+
### When to Use
|
|
175
|
+
|
|
176
|
+
- Need calibration assessment (not just ranking)
|
|
177
|
+
- Want to evaluate predicted probabilities, not just risk scores
|
|
178
|
+
- Comparing models that output survival functions
|
|
179
|
+
- Clinical applications requiring probability estimates
|
|
180
|
+
|
|
181
|
+
### Key Functions
|
|
182
|
+
|
|
183
|
+
#### brier_score: Single Time Point
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
from sksurv.metrics import brier_score
|
|
187
|
+
|
|
188
|
+
# Compute Brier score at specific time
|
|
189
|
+
time_point = 1825 # 5 years
|
|
190
|
+
surv_probs = model.predict_survival_function(X_test)
|
|
191
|
+
# Extract survival probability at time_point for each subject
|
|
192
|
+
surv_at_t = [fn(time_point) for fn in surv_probs]
|
|
193
|
+
|
|
194
|
+
bs = brier_score(y_train, y_test, surv_at_t, time_point)[1]
|
|
195
|
+
print(f"Brier score at {time_point} days: {bs:.3f}")
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### integrated_brier_score: Summary Across Time
|
|
199
|
+
|
|
200
|
+
```python
|
|
201
|
+
from sksurv.metrics import integrated_brier_score
|
|
202
|
+
|
|
203
|
+
# Compute integrated Brier score
|
|
204
|
+
times = [365, 730, 1095, 1460, 1825]
|
|
205
|
+
surv_probs = model.predict_survival_function(X_test)
|
|
206
|
+
|
|
207
|
+
ibs = integrated_brier_score(y_train, y_test, surv_probs, times)
|
|
208
|
+
print(f"Integrated Brier Score: {ibs:.3f}")
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Interpretation
|
|
212
|
+
|
|
213
|
+
- **Brier score at time t**: Expected squared difference between predicted and actual survival at time t
|
|
214
|
+
- **Integrated Brier Score**: Weighted average of Brier scores across time
|
|
215
|
+
- **Lower values = better predictions**
|
|
216
|
+
|
|
217
|
+
### Comparison with Null Model
|
|
218
|
+
|
|
219
|
+
Always compare against a baseline (e.g., Kaplan-Meier):
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
from sksurv.nonparametric import kaplan_meier_estimator
|
|
223
|
+
|
|
224
|
+
# Compute Kaplan-Meier baseline
|
|
225
|
+
time_km, surv_km = kaplan_meier_estimator(y_train['event'], y_train['time'])
|
|
226
|
+
|
|
227
|
+
# Predict with KM for each test subject
|
|
228
|
+
surv_km_test = [surv_km[time_km <= time_point][-1] if any(time_km <= time_point) else 1.0
|
|
229
|
+
for _ in range(len(X_test))]
|
|
230
|
+
|
|
231
|
+
bs_km = brier_score(y_train, y_test, surv_km_test, time_point)[1]
|
|
232
|
+
bs_model = brier_score(y_train, y_test, surv_at_t, time_point)[1]
|
|
233
|
+
|
|
234
|
+
print(f"Kaplan-Meier Brier Score: {bs_km:.3f}")
|
|
235
|
+
print(f"Model Brier Score: {bs_model:.3f}")
|
|
236
|
+
print(f"Improvement: {(bs_km - bs_model) / bs_km * 100:.1f}%")
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
## Using Metrics with Cross-Validation
|
|
240
|
+
|
|
241
|
+
### Concordance Index Scorer
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
from sklearn.model_selection import cross_val_score
|
|
245
|
+
from sksurv.metrics import as_concordance_index_ipcw_scorer
|
|
246
|
+
|
|
247
|
+
# Create scorer
|
|
248
|
+
scorer = as_concordance_index_ipcw_scorer()
|
|
249
|
+
|
|
250
|
+
# Perform cross-validation
|
|
251
|
+
scores = cross_val_score(model, X, y, cv=5, scoring=scorer)
|
|
252
|
+
print(f"Mean C-index: {scores.mean():.3f} (±{scores.std():.3f})")
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Integrated Brier Score Scorer
|
|
256
|
+
|
|
257
|
+
```python
|
|
258
|
+
from sksurv.metrics import as_integrated_brier_score_scorer
|
|
259
|
+
|
|
260
|
+
# Define time points for evaluation
|
|
261
|
+
times = np.percentile(y['time'][y['event']], [25, 50, 75])
|
|
262
|
+
|
|
263
|
+
# Create scorer
|
|
264
|
+
scorer = as_integrated_brier_score_scorer(times)
|
|
265
|
+
|
|
266
|
+
# Perform cross-validation
|
|
267
|
+
scores = cross_val_score(model, X, y, cv=5, scoring=scorer)
|
|
268
|
+
print(f"Mean IBS: {scores.mean():.3f} (±{scores.std():.3f})")
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## Model Selection with GridSearchCV
|
|
272
|
+
|
|
273
|
+
```python
|
|
274
|
+
from sklearn.model_selection import GridSearchCV
|
|
275
|
+
from sksurv.ensemble import RandomSurvivalForest
|
|
276
|
+
from sksurv.metrics import as_concordance_index_ipcw_scorer
|
|
277
|
+
|
|
278
|
+
# Define parameter grid
|
|
279
|
+
param_grid = {
|
|
280
|
+
'n_estimators': [100, 200, 300],
|
|
281
|
+
'min_samples_split': [10, 20, 30],
|
|
282
|
+
'max_depth': [None, 10, 20]
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
# Create scorer
|
|
286
|
+
scorer = as_concordance_index_ipcw_scorer()
|
|
287
|
+
|
|
288
|
+
# Perform grid search
|
|
289
|
+
cv = GridSearchCV(
|
|
290
|
+
RandomSurvivalForest(random_state=42),
|
|
291
|
+
param_grid,
|
|
292
|
+
scoring=scorer,
|
|
293
|
+
cv=5,
|
|
294
|
+
n_jobs=-1
|
|
295
|
+
)
|
|
296
|
+
cv.fit(X, y)
|
|
297
|
+
|
|
298
|
+
print(f"Best parameters: {cv.best_params_}")
|
|
299
|
+
print(f"Best C-index: {cv.best_score_:.3f}")
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Comprehensive Model Evaluation
|
|
303
|
+
|
|
304
|
+
### Recommended Evaluation Pipeline
|
|
305
|
+
|
|
306
|
+
```python
|
|
307
|
+
from sksurv.metrics import (
|
|
308
|
+
concordance_index_censored,
|
|
309
|
+
concordance_index_ipcw,
|
|
310
|
+
cumulative_dynamic_auc,
|
|
311
|
+
integrated_brier_score
|
|
312
|
+
)
|
|
313
|
+
|
|
314
|
+
def evaluate_survival_model(model, X_train, X_test, y_train, y_test):
|
|
315
|
+
"""Comprehensive evaluation of survival model"""
|
|
316
|
+
|
|
317
|
+
# Get predictions
|
|
318
|
+
risk_scores = model.predict(X_test)
|
|
319
|
+
surv_funcs = model.predict_survival_function(X_test)
|
|
320
|
+
|
|
321
|
+
# 1. Concordance Index (both versions)
|
|
322
|
+
c_harrell = concordance_index_censored(y_test['event'], y_test['time'], risk_scores)[0]
|
|
323
|
+
c_uno = concordance_index_ipcw(y_train, y_test, risk_scores)[0]
|
|
324
|
+
|
|
325
|
+
# 2. Time-dependent AUC
|
|
326
|
+
times = np.percentile(y_test['time'][y_test['event']], [25, 50, 75])
|
|
327
|
+
auc, mean_auc = cumulative_dynamic_auc(y_train, y_test, risk_scores, times)
|
|
328
|
+
|
|
329
|
+
# 3. Integrated Brier Score
|
|
330
|
+
ibs = integrated_brier_score(y_train, y_test, surv_funcs, times)
|
|
331
|
+
|
|
332
|
+
# Print results
|
|
333
|
+
print("=" * 50)
|
|
334
|
+
print("Model Evaluation Results")
|
|
335
|
+
print("=" * 50)
|
|
336
|
+
print(f"Harrell's C-index: {c_harrell:.3f}")
|
|
337
|
+
print(f"Uno's C-index: {c_uno:.3f}")
|
|
338
|
+
print(f"Mean AUC: {mean_auc:.3f}")
|
|
339
|
+
print(f"Integrated Brier: {ibs:.3f}")
|
|
340
|
+
print("=" * 50)
|
|
341
|
+
|
|
342
|
+
return {
|
|
343
|
+
'c_harrell': c_harrell,
|
|
344
|
+
'c_uno': c_uno,
|
|
345
|
+
'mean_auc': mean_auc,
|
|
346
|
+
'ibs': ibs,
|
|
347
|
+
'time_auc': dict(zip(times, auc))
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
# Use the evaluation function
|
|
351
|
+
results = evaluate_survival_model(model, X_train, X_test, y_train, y_test)
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Choosing the Right Metric
|
|
355
|
+
|
|
356
|
+
### Decision Guide
|
|
357
|
+
|
|
358
|
+
**Use C-index (Uno's) when:**
|
|
359
|
+
- Primary goal is ranking/discrimination
|
|
360
|
+
- Don't need calibrated probabilities
|
|
361
|
+
- Standard survival analysis setting
|
|
362
|
+
- Most common choice
|
|
363
|
+
|
|
364
|
+
**Use Time-dependent AUC when:**
|
|
365
|
+
- Need discrimination at specific time points
|
|
366
|
+
- Clinical decisions at specific horizons
|
|
367
|
+
- Want to understand how performance varies over time
|
|
368
|
+
|
|
369
|
+
**Use Brier Score when:**
|
|
370
|
+
- Need calibrated probability estimates
|
|
371
|
+
- Both discrimination AND calibration important
|
|
372
|
+
- Clinical decision-making requiring probabilities
|
|
373
|
+
- Want comprehensive assessment
|
|
374
|
+
|
|
375
|
+
**Best Practice**: Report multiple metrics for comprehensive evaluation. At minimum, report:
|
|
376
|
+
- Uno's C-index (discrimination)
|
|
377
|
+
- Integrated Brier Score (discrimination + calibration)
|
|
378
|
+
- Time-dependent AUC at clinically relevant time points
|