tooluniverse 1.0.5__py3-none-any.whl → 1.0.7__py3-none-any.whl
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.
Potentially problematic release.
This version of tooluniverse might be problematic. Click here for more details.
- tooluniverse/__init__.py +70 -0
- tooluniverse/agentic_tool.py +121 -15
- tooluniverse/arxiv_tool.py +109 -0
- tooluniverse/base_tool.py +174 -25
- tooluniverse/biorxiv_tool.py +116 -0
- tooluniverse/cellosaurus_tool.py +1332 -0
- tooluniverse/compose_scripts/enhanced_multi_agent_literature_search.py +310 -0
- tooluniverse/compose_scripts/multi_agent_literature_search.py +794 -0
- tooluniverse/compose_scripts/tool_graph_generation.py +68 -35
- tooluniverse/compose_scripts/tool_metadata_generator.py +205 -105
- tooluniverse/compose_tool.py +93 -8
- tooluniverse/core_tool.py +155 -0
- tooluniverse/crossref_tool.py +158 -0
- tooluniverse/data/agentic_tools.json +1271 -1179
- tooluniverse/data/alphafold_tools.json +356 -105
- tooluniverse/data/arxiv_tools.json +94 -0
- tooluniverse/data/biorxiv_tools.json +75 -0
- tooluniverse/data/cellosaurus_tools.json +260 -0
- tooluniverse/data/chembl_tools.json +27 -12
- tooluniverse/data/clinicaltrials_gov_tools.json +377 -302
- tooluniverse/data/compose_tools.json +123 -16
- tooluniverse/data/core_tools.json +113 -0
- tooluniverse/data/crossref_tools.json +138 -0
- tooluniverse/data/dailymed_tools.json +17 -3
- tooluniverse/data/dataset_tools.json +1031 -588
- tooluniverse/data/dblp_tools.json +144 -0
- tooluniverse/data/disease_target_score_tools.json +20 -10
- tooluniverse/data/doaj_tools.json +140 -0
- tooluniverse/data/embedding_tools.json +362 -299
- tooluniverse/data/enrichr_tools.json +34 -27
- tooluniverse/data/europe_pmc_tools.json +108 -16
- tooluniverse/data/fatcat_tools.json +77 -0
- tooluniverse/data/fda_drug_adverse_event_tools.json +1061 -445
- tooluniverse/data/fda_drug_labeling_tools.json +6858 -6901
- tooluniverse/data/finder_tools.json +32 -37
- tooluniverse/data/gene_ontology_tools.json +19 -7
- tooluniverse/data/gwas_tools.json +1720 -959
- tooluniverse/data/hal_tools.json +75 -0
- tooluniverse/data/hpa_tools.json +53 -14
- tooluniverse/data/humanbase_tools.json +51 -43
- tooluniverse/data/idmap_tools.json +76 -70
- tooluniverse/data/literature_search_tools.json +306 -0
- tooluniverse/data/mcp_client_tools_example.json +122 -107
- tooluniverse/data/medlineplus_tools.json +50 -10
- tooluniverse/data/medrxiv_tools.json +75 -0
- tooluniverse/data/molecule_2d_tools.json +134 -0
- tooluniverse/data/molecule_3d_tools.json +164 -0
- tooluniverse/data/monarch_tools.json +112 -110
- tooluniverse/data/odphp_tools.json +389 -119
- tooluniverse/data/openaire_tools.json +95 -0
- tooluniverse/data/openalex_tools.json +100 -31
- tooluniverse/data/opentarget_tools.json +1457 -1372
- tooluniverse/data/osf_preprints_tools.json +81 -0
- tooluniverse/data/packages/bioinformatics_core_tools.json +40 -10
- tooluniverse/data/packages/cheminformatics_tools.json +20 -5
- tooluniverse/data/packages/genomics_tools.json +36 -9
- tooluniverse/data/packages/machine_learning_tools.json +36 -9
- tooluniverse/data/packages/scientific_computing_tools.json +20 -5
- tooluniverse/data/packages/single_cell_tools.json +20 -5
- tooluniverse/data/packages/structural_biology_tools.json +16 -4
- tooluniverse/data/packages/visualization_tools.json +20 -5
- tooluniverse/data/pmc_tools.json +117 -0
- tooluniverse/data/protein_structure_3d_tools.json +138 -0
- tooluniverse/data/pubchem_tools.json +37 -12
- tooluniverse/data/pubmed_tools.json +133 -0
- tooluniverse/data/pubtator_tools.json +68 -60
- tooluniverse/data/rcsb_pdb_tools.json +1532 -1221
- tooluniverse/data/semantic_scholar_tools.json +55 -22
- tooluniverse/data/special_tools.json +8 -6
- tooluniverse/data/tool_composition_tools.json +112 -82
- tooluniverse/data/unified_guideline_tools.json +707 -0
- tooluniverse/data/unpaywall_tools.json +86 -0
- tooluniverse/data/url_fetch_tools.json +102 -82
- tooluniverse/data/uspto_tools.json +49 -30
- tooluniverse/data/wikidata_sparql_tools.json +45 -0
- tooluniverse/data/xml_tools.json +3274 -3113
- tooluniverse/data/zenodo_tools.json +90 -0
- tooluniverse/dblp_tool.py +132 -0
- tooluniverse/default_config.py +30 -0
- tooluniverse/doaj_tool.py +183 -0
- tooluniverse/doctor.py +48 -0
- tooluniverse/europe_pmc_tool.py +132 -17
- tooluniverse/exceptions.py +170 -0
- tooluniverse/execute_function.py +825 -342
- tooluniverse/fatcat_tool.py +65 -0
- tooluniverse/generate_tools.py +198 -0
- tooluniverse/hal_tool.py +77 -0
- tooluniverse/llm_clients.py +283 -20
- tooluniverse/mcp_tool_registry.py +4 -1
- tooluniverse/medrxiv_tool.py +116 -0
- tooluniverse/memory_manager.py +166 -0
- tooluniverse/molecule_2d_tool.py +274 -0
- tooluniverse/molecule_3d_tool.py +441 -0
- tooluniverse/odphp_tool.py +49 -14
- tooluniverse/openaire_tool.py +130 -0
- tooluniverse/openalex_tool.py +34 -0
- tooluniverse/osf_preprints_tool.py +67 -0
- tooluniverse/pmc_tool.py +179 -0
- tooluniverse/protein_structure_3d_tool.py +295 -0
- tooluniverse/pubmed_tool.py +173 -0
- tooluniverse/remote/boltz/boltz_mcp_server.py +3 -1
- tooluniverse/remote/uspto_downloader/uspto_downloader_mcp_server.py +3 -1
- tooluniverse/semantic_scholar_tool.py +40 -10
- tooluniverse/smcp.py +228 -263
- tooluniverse/smcp_server.py +97 -55
- tooluniverse/tool_registry.py +35 -3
- tooluniverse/tools/ADMETAI_predict_BBB_penetrance.py +46 -0
- tooluniverse/tools/ADMETAI_predict_CYP_interactions.py +46 -0
- tooluniverse/tools/ADMETAI_predict_bioavailability.py +46 -0
- tooluniverse/tools/ADMETAI_predict_clearance_distribution.py +49 -0
- tooluniverse/tools/ADMETAI_predict_nuclear_receptor_activity.py +49 -0
- tooluniverse/tools/ADMETAI_predict_physicochemical_properties.py +49 -0
- tooluniverse/tools/ADMETAI_predict_solubility_lipophilicity_hydration.py +49 -0
- tooluniverse/tools/ADMETAI_predict_stress_response.py +46 -0
- tooluniverse/tools/ADMETAI_predict_toxicity.py +46 -0
- tooluniverse/tools/AdvancedCodeQualityAnalyzer.py +63 -0
- tooluniverse/tools/AdverseEventICDMapper.py +46 -0
- tooluniverse/tools/AdverseEventPredictionQuestionGenerator.py +52 -0
- tooluniverse/tools/AdverseEventPredictionQuestionGeneratorWithContext.py +59 -0
- tooluniverse/tools/ArXiv_search_papers.py +63 -0
- tooluniverse/tools/ArgumentDescriptionOptimizer.py +55 -0
- tooluniverse/tools/BioRxiv_search_preprints.py +52 -0
- tooluniverse/tools/BiomarkerDiscoveryWorkflow.py +55 -0
- tooluniverse/tools/CORE_search_papers.py +67 -0
- tooluniverse/tools/CallAgent.py +46 -0
- tooluniverse/tools/ChEMBL_search_similar_molecules.py +59 -0
- tooluniverse/tools/CodeOptimizer.py +55 -0
- tooluniverse/tools/CodeQualityAnalyzer.py +71 -0
- tooluniverse/tools/ComprehensiveDrugDiscoveryPipeline.py +49 -0
- tooluniverse/tools/Crossref_search_works.py +55 -0
- tooluniverse/tools/DBLP_search_publications.py +52 -0
- tooluniverse/tools/DOAJ_search_articles.py +55 -0
- tooluniverse/tools/DailyMed_get_spl_by_setid.py +52 -0
- tooluniverse/tools/DailyMed_search_spls.py +79 -0
- tooluniverse/tools/DataAnalysisValidityReviewer.py +49 -0
- tooluniverse/tools/DescriptionAnalyzer.py +55 -0
- tooluniverse/tools/DescriptionQualityEvaluator.py +59 -0
- tooluniverse/tools/DomainExpertValidator.py +63 -0
- tooluniverse/tools/DrugSafetyAnalyzer.py +59 -0
- tooluniverse/tools/EthicalComplianceReviewer.py +49 -0
- tooluniverse/tools/EuropePMC_Guidelines_Search.py +52 -0
- tooluniverse/tools/EuropePMC_search_articles.py +52 -0
- tooluniverse/tools/ExperimentalDesignScorer.py +55 -0
- tooluniverse/tools/FAERS_count_additive_administration_routes.py +52 -0
- tooluniverse/tools/FAERS_count_additive_adverse_reactions.py +71 -0
- tooluniverse/tools/FAERS_count_additive_event_reports_by_country.py +63 -0
- tooluniverse/tools/FAERS_count_additive_reaction_outcomes.py +63 -0
- tooluniverse/tools/FAERS_count_additive_reports_by_reporter_country.py +63 -0
- tooluniverse/tools/FAERS_count_additive_seriousness_classification.py +63 -0
- tooluniverse/tools/FAERS_count_country_by_drug_event.py +63 -0
- tooluniverse/tools/FAERS_count_death_related_by_drug.py +49 -0
- tooluniverse/tools/FAERS_count_drug_routes_by_event.py +52 -0
- tooluniverse/tools/FAERS_count_drugs_by_drug_event.py +63 -0
- tooluniverse/tools/FAERS_count_outcomes_by_drug_event.py +63 -0
- tooluniverse/tools/FAERS_count_patient_age_distribution.py +49 -0
- tooluniverse/tools/FAERS_count_reactions_by_drug_event.py +71 -0
- tooluniverse/tools/FAERS_count_reportercountry_by_drug_event.py +63 -0
- tooluniverse/tools/FAERS_count_seriousness_by_drug_event.py +63 -0
- tooluniverse/tools/FDA_get_abuse_dependence_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_abuse_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_accessories_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_active_ingredient_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_adverse_reactions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_alarms_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_animal_pharmacology_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_assembly_installation_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_boxed_warning_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_brand_name_generic_name.py +52 -0
- tooluniverse/tools/FDA_get_calibration_instructions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_carcinogenic_mutagenic_fertility_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_child_safety_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_clinical_pharmacology_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_clinical_studies_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_contact_for_questions_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_contraindications_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_controlled_substance_DEA_schedule_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_dear_health_care_provider_letter_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_dependence_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_disposal_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_do_not_use_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_document_id_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_dosage_and_storage_information_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_dosage_forms_and_strengths_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_drug_generic_name.py +46 -0
- tooluniverse/tools/FDA_get_drug_interactions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_SPL_ID.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_adverse_reaction.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_calibration_instructions.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_dependence_info.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_document_id.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_dosage_info.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_environmental_warning.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_inactive_ingredient.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_info_on_conditions_for_doctor_consultation.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_labor_and_delivery_info.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_microbiology.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_other_safety_info.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_pharmacodynamics.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_pharmacogenomics.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_precautions.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_pregnancy_or_breastfeeding_info.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_principal_display_panel.py +59 -0
- tooluniverse/tools/FDA_get_drug_name_by_reference.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_set_id.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_stop_use_info.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_storage_and_handling_info.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_by_warnings.py +55 -0
- tooluniverse/tools/FDA_get_drug_name_from_patient_package_insert.py +59 -0
- tooluniverse/tools/FDA_get_drug_names_by_abuse_dependence_info.py +55 -0
- tooluniverse/tools/FDA_get_drug_names_by_abuse_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_accessories.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_active_ingredient.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_alarm.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_animal_pharmacology_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_application_number_NDC_number.py +59 -0
- tooluniverse/tools/FDA_get_drug_names_by_assembly_installation_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_boxed_warning.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_child_safety_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_clinical_pharmacology.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_clinical_studies.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_consulting_doctor_pharmacist_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_contraindications.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_controlled_substance_DEA_schedule.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_dear_health_care_provider_letter_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_disposal_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_dosage_forms_and_strengths_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_drug_interactions.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_effective_time.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_food_safety_warnings.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_general_precautions.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_geriatric_use.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_health_claim.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_indication.py +55 -0
- tooluniverse/tools/FDA_get_drug_names_by_info_for_nursing_mothers.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_information_for_owners_or_caregivers.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_ingredient.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_instructions_for_use.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_lab_test_interference.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_lab_tests.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_mechanism_of_action.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_medication_guide.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_nonclinical_toxicology_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_nonteratogenic_effects.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_overdosage_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_pediatric_use.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_pharmacokinetics.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_population_use.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_pregnancy_effects_info.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_residue_warning.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_risk.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_route.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_safe_handling_warning.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_safety_summary.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_spl_indexing_data_elements.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_teratogenic_effects.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_user_safety_warning.py +63 -0
- tooluniverse/tools/FDA_get_drug_names_by_warnings_and_cautions.py +63 -0
- tooluniverse/tools/FDA_get_drugs_by_carcinogenic_mutagenic_fertility.py +63 -0
- tooluniverse/tools/FDA_get_effective_time_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_environmental_warning_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_general_precautions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_geriatric_use_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_health_claims_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_inactive_ingredient_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_indications_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_info_for_nursing_mothers_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_info_for_patients_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_info_on_conditions_for_doctor_consultation_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_info_on_consulting_doctor_pharmacist_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_information_for_owners_or_caregivers_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_ingredients_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_instructions_for_use_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_lab_test_interference_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_lab_tests_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_labor_and_delivery_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_manufacturer_name_NDC_number_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_mechanism_of_action_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_medication_guide_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_microbiology_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_nonclinical_toxicology_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_nonteratogenic_effects_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_other_safety_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_overdosage_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_patient_package_insert_from_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pediatric_use_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pharmacodynamics_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pharmacogenomics_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pharmacokinetics_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_population_use_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_precautions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pregnancy_effects_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_pregnancy_or_breastfeeding_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_principal_display_panel_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_purpose_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_recent_changes_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_reference_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_residue_warning_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_risk_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_route_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_safe_handling_warnings_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_safety_summary_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_spl_indexing_data_elements_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_spl_unclassified_section_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_stop_use_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_storage_and_handling_info_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_teratogenic_effects_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_user_safety_warning_by_drug_names.py +55 -0
- tooluniverse/tools/FDA_get_warnings_and_cautions_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_warnings_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_get_when_using_info.py +55 -0
- tooluniverse/tools/FDA_retrieve_device_use_by_drug_name.py +55 -0
- tooluniverse/tools/FDA_retrieve_drug_name_by_device_use.py +59 -0
- tooluniverse/tools/FDA_retrieve_drug_names_by_patient_medication_info.py +55 -0
- tooluniverse/tools/FDA_retrieve_patient_medication_info_by_drug_name.py +55 -0
- tooluniverse/tools/Fatcat_search_scholar.py +52 -0
- tooluniverse/tools/Finish.py +44 -0
- tooluniverse/tools/GO_get_annotations_for_gene.py +46 -0
- tooluniverse/tools/GO_get_genes_for_term.py +55 -0
- tooluniverse/tools/GO_get_term_by_id.py +46 -0
- tooluniverse/tools/GO_get_term_details.py +46 -0
- tooluniverse/tools/GO_search_terms.py +46 -0
- tooluniverse/tools/HAL_search_archive.py +52 -0
- tooluniverse/tools/HPA_get_biological_processes_by_gene.py +52 -0
- tooluniverse/tools/HPA_get_cancer_prognostics_by_gene.py +49 -0
- tooluniverse/tools/HPA_get_comparative_expression_by_gene_and_cellline.py +52 -0
- tooluniverse/tools/HPA_get_comprehensive_gene_details_by_ensembl_id.py +63 -0
- tooluniverse/tools/HPA_get_contextual_biological_process_analysis.py +52 -0
- tooluniverse/tools/HPA_get_disease_expression_by_gene_tissue_disease.py +59 -0
- tooluniverse/tools/HPA_get_gene_basic_info_by_ensembl_id.py +49 -0
- tooluniverse/tools/HPA_get_gene_tsv_data_by_ensembl_id.py +49 -0
- tooluniverse/tools/HPA_get_protein_interactions_by_gene.py +49 -0
- tooluniverse/tools/HPA_get_rna_expression_by_source.py +59 -0
- tooluniverse/tools/HPA_get_rna_expression_in_specific_tissues.py +52 -0
- tooluniverse/tools/HPA_get_subcellular_location.py +46 -0
- tooluniverse/tools/HPA_search_genes_by_query.py +49 -0
- tooluniverse/tools/HypothesisGenerator.py +63 -0
- tooluniverse/tools/LabelGenerator.py +67 -0
- tooluniverse/tools/LiteratureContextReviewer.py +55 -0
- tooluniverse/tools/LiteratureSearchTool.py +49 -0
- tooluniverse/tools/MedRxiv_search_preprints.py +52 -0
- tooluniverse/tools/MedicalLiteratureReviewer.py +71 -0
- tooluniverse/tools/MedicalTermNormalizer.py +46 -0
- tooluniverse/tools/MedlinePlus_connect_lookup_by_code.py +67 -0
- tooluniverse/tools/MedlinePlus_get_genetics_condition_by_name.py +52 -0
- tooluniverse/tools/MedlinePlus_get_genetics_gene_by_name.py +52 -0
- tooluniverse/tools/MedlinePlus_get_genetics_index.py +44 -0
- tooluniverse/tools/MedlinePlus_search_topics_by_keyword.py +55 -0
- tooluniverse/tools/MethodologyRigorReviewer.py +49 -0
- tooluniverse/tools/MultiAgentLiteratureSearch.py +59 -0
- tooluniverse/tools/NICE_Clinical_Guidelines_Search.py +52 -0
- tooluniverse/tools/NICE_Guideline_Full_Text.py +46 -0
- tooluniverse/tools/NoveltySignificanceReviewer.py +59 -0
- tooluniverse/tools/OSF_search_preprints.py +59 -0
- tooluniverse/tools/OSL_get_efo_id_by_disease_name.py +46 -0
- tooluniverse/tools/OpenAIRE_search_publications.py +55 -0
- tooluniverse/tools/OpenAlex_Guidelines_Search.py +63 -0
- tooluniverse/tools/OpenTargets_drug_pharmacogenomics_data.py +52 -0
- tooluniverse/tools/OpenTargets_get_approved_indications_by_drug_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_associated_diseases_by_drug_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_associated_drugs_by_disease_efoId.py +52 -0
- tooluniverse/tools/OpenTargets_get_associated_drugs_by_target_ensemblID.py +55 -0
- tooluniverse/tools/OpenTargets_get_associated_phenotypes_by_disease_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_associated_targets_by_disease_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_associated_targets_by_drug_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_biological_mouse_models_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_chemical_probes_by_target_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_ancestors_parents_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_descendants_children_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_description_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_id_description_by_name.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_ids_by_efoId.py +46 -0
- tooluniverse/tools/OpenTargets_get_disease_ids_by_name.py +46 -0
- tooluniverse/tools/OpenTargets_get_disease_locations_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_synonyms_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_disease_therapeutic_areas_by_efoId.py +49 -0
- tooluniverse/tools/OpenTargets_get_diseases_phenotypes_by_target_ensembl.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_adverse_events_by_chemblId.py +52 -0
- tooluniverse/tools/OpenTargets_get_drug_approval_status_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_chembId_by_generic_name.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_description_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_id_description_by_name.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_indications_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_mechanisms_of_action_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_synonyms_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_trade_names_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_warnings_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_drug_withdrawn_blackbox_status_by_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_gene_ontology_terms_by_goID.py +49 -0
- tooluniverse/tools/OpenTargets_get_known_drugs_by_drug_chemblId.py +49 -0
- tooluniverse/tools/OpenTargets_get_parent_child_molecules_by_drug_chembl_ID.py +49 -0
- tooluniverse/tools/OpenTargets_get_publications_by_disease_efoId.py +71 -0
- tooluniverse/tools/OpenTargets_get_publications_by_drug_chemblId.py +71 -0
- tooluniverse/tools/OpenTargets_get_publications_by_target_ensemblID.py +71 -0
- tooluniverse/tools/OpenTargets_get_similar_entities_by_disease_efoId.py +55 -0
- tooluniverse/tools/OpenTargets_get_similar_entities_by_drug_chemblId.py +55 -0
- tooluniverse/tools/OpenTargets_get_similar_entities_by_target_ensemblID.py +55 -0
- tooluniverse/tools/OpenTargets_get_target_classes_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_constraint_info_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_enabling_packages_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_gene_ontology_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_genomic_location_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_homologues_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_id_description_by_name.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_interactions_by_ensemblID.py +52 -0
- tooluniverse/tools/OpenTargets_get_target_safety_profile_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_subcellular_locations_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_synonyms_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_get_target_tractability_by_ensemblID.py +49 -0
- tooluniverse/tools/OpenTargets_map_any_disease_id_to_all_other_ids.py +49 -0
- tooluniverse/tools/OpenTargets_multi_entity_search_by_query_string.py +59 -0
- tooluniverse/tools/OpenTargets_search_category_counts_by_query_string.py +49 -0
- tooluniverse/tools/OpenTargets_target_disease_evidence.py +52 -0
- tooluniverse/tools/OutputSummarizationComposer.py +71 -0
- tooluniverse/tools/PMC_search_papers.py +67 -0
- tooluniverse/tools/ProtocolOptimizer.py +49 -0
- tooluniverse/tools/PubChem_get_CID_by_SMILES.py +46 -0
- tooluniverse/tools/PubChem_get_CID_by_compound_name.py +46 -0
- tooluniverse/tools/PubChem_get_associated_patents_by_CID.py +46 -0
- tooluniverse/tools/PubChem_get_compound_2D_image_by_CID.py +52 -0
- tooluniverse/tools/PubChem_get_compound_properties_by_CID.py +46 -0
- tooluniverse/tools/PubChem_get_compound_synonyms_by_CID.py +46 -0
- tooluniverse/tools/PubChem_get_compound_xrefs_by_CID.py +52 -0
- tooluniverse/tools/PubChem_search_compounds_by_similarity.py +52 -0
- tooluniverse/tools/PubChem_search_compounds_by_substructure.py +49 -0
- tooluniverse/tools/PubMed_Guidelines_Search.py +55 -0
- tooluniverse/tools/PubMed_search_articles.py +55 -0
- tooluniverse/tools/PubTator3_EntityAutocomplete.py +59 -0
- tooluniverse/tools/PubTator3_LiteratureSearch.py +55 -0
- tooluniverse/tools/QuestionRephraser.py +52 -0
- tooluniverse/tools/Reactome_get_pathway_reactions.py +46 -0
- tooluniverse/tools/ReproducibilityTransparencyReviewer.py +49 -0
- tooluniverse/tools/ResultsInterpretationReviewer.py +55 -0
- tooluniverse/tools/ScientificTextSummarizer.py +59 -0
- tooluniverse/tools/SemanticScholar_search_papers.py +55 -0
- tooluniverse/tools/TRIP_Database_Guidelines_Search.py +55 -0
- tooluniverse/tools/TestCaseGenerator.py +46 -0
- tooluniverse/tools/ToolCompatibilityAnalyzer.py +59 -0
- tooluniverse/tools/ToolDescriptionOptimizer.py +67 -0
- tooluniverse/tools/ToolDiscover.py +63 -0
- tooluniverse/tools/ToolGraphComposer.py +71 -0
- tooluniverse/tools/ToolGraphGenerationPipeline.py +63 -0
- tooluniverse/tools/ToolImplementationGenerator.py +67 -0
- tooluniverse/tools/ToolMetadataGenerationPipeline.py +63 -0
- tooluniverse/tools/ToolMetadataGenerator.py +55 -0
- tooluniverse/tools/ToolMetadataStandardizer.py +52 -0
- tooluniverse/tools/ToolOptimizer.py +59 -0
- tooluniverse/tools/ToolOutputSummarizer.py +67 -0
- tooluniverse/tools/ToolQualityEvaluator.py +59 -0
- tooluniverse/tools/ToolRelationshipDetector.py +52 -0
- tooluniverse/tools/ToolSpecificationGenerator.py +67 -0
- tooluniverse/tools/ToolSpecificationOptimizer.py +63 -0
- tooluniverse/tools/Tool_Finder.py +67 -0
- tooluniverse/tools/Tool_Finder_Keyword.py +67 -0
- tooluniverse/tools/Tool_Finder_LLM.py +67 -0
- tooluniverse/tools/Tool_RAG.py +49 -0
- tooluniverse/tools/UniProt_get_alternative_names_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_disease_variants_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_entry_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_function_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_isoform_ids_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_organism_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_ptm_processing_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_recommended_name_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_sequence_by_accession.py +49 -0
- tooluniverse/tools/UniProt_get_subcellular_location_by_accession.py +49 -0
- tooluniverse/tools/Unpaywall_check_oa_status.py +52 -0
- tooluniverse/tools/WHO_Guideline_Full_Text.py +46 -0
- tooluniverse/tools/WHO_Guidelines_Search.py +52 -0
- tooluniverse/tools/Wikidata_SPARQL_query.py +52 -0
- tooluniverse/tools/WritingPresentationReviewer.py +49 -0
- tooluniverse/tools/Zenodo_search_records.py +59 -0
- tooluniverse/tools/__init__.py +1738 -0
- tooluniverse/tools/_shared_client.py +138 -0
- tooluniverse/tools/alphafold_get_annotations.py +52 -0
- tooluniverse/tools/alphafold_get_prediction.py +55 -0
- tooluniverse/tools/alphafold_get_summary.py +46 -0
- tooluniverse/tools/call_agentic_human.py +46 -0
- tooluniverse/tools/cancer_biomarkers_disease_target_score.py +52 -0
- tooluniverse/tools/cancer_gene_census_disease_target_score.py +52 -0
- tooluniverse/tools/cellosaurus_get_cell_line_info.py +55 -0
- tooluniverse/tools/cellosaurus_query_converter.py +52 -0
- tooluniverse/tools/cellosaurus_search_cell_lines.py +55 -0
- tooluniverse/tools/chembl_disease_target_score.py +52 -0
- tooluniverse/tools/dict_search.py +67 -0
- tooluniverse/tools/dili_search.py +67 -0
- tooluniverse/tools/diqt_search.py +67 -0
- tooluniverse/tools/disease_target_score.py +59 -0
- tooluniverse/tools/drugbank_filter_drugs_by_name.py +55 -0
- tooluniverse/tools/drugbank_full_search.py +67 -0
- tooluniverse/tools/drugbank_get_drug_basic_info_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_drug_chemistry_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_drug_interactions_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_drug_name_and_description_by_indication.py +63 -0
- tooluniverse/tools/drugbank_get_drug_name_and_description_by_pathway_name.py +63 -0
- tooluniverse/tools/drugbank_get_drug_name_and_description_by_target_name.py +63 -0
- tooluniverse/tools/drugbank_get_drug_name_description_pharmacology_by_mechanism_of_action.py +63 -0
- tooluniverse/tools/drugbank_get_drug_pathways_and_reactions_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_drug_products_by_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_drug_references_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_indications_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_pharmacology_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_safety_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_get_targets_by_drug_name_or_drugbank_id.py +63 -0
- tooluniverse/tools/drugbank_links_search.py +67 -0
- tooluniverse/tools/drugbank_vocab_filter.py +63 -0
- tooluniverse/tools/drugbank_vocab_search.py +67 -0
- tooluniverse/tools/embedding_database_add.py +63 -0
- tooluniverse/tools/embedding_database_create.py +71 -0
- tooluniverse/tools/embedding_database_load.py +63 -0
- tooluniverse/tools/embedding_database_search.py +67 -0
- tooluniverse/tools/embedding_sync_download.py +63 -0
- tooluniverse/tools/embedding_sync_upload.py +71 -0
- tooluniverse/tools/enrichr_gene_enrichment_analysis.py +52 -0
- tooluniverse/tools/europepmc_disease_target_score.py +52 -0
- tooluniverse/tools/eva_disease_target_score.py +52 -0
- tooluniverse/tools/eva_somatic_disease_target_score.py +52 -0
- tooluniverse/tools/expression_atlas_disease_target_score.py +52 -0
- tooluniverse/tools/extract_clinical_trial_adverse_events.py +59 -0
- tooluniverse/tools/extract_clinical_trial_outcomes.py +52 -0
- tooluniverse/tools/genomics_england_disease_target_score.py +52 -0
- tooluniverse/tools/get_HPO_ID_by_phenotype.py +55 -0
- tooluniverse/tools/get_albumentations_info.py +44 -0
- tooluniverse/tools/get_altair_info.py +44 -0
- tooluniverse/tools/get_anndata_info.py +49 -0
- tooluniverse/tools/get_arboreto_info.py +46 -0
- tooluniverse/tools/get_arxiv_info.py +46 -0
- tooluniverse/tools/get_ase_info.py +46 -0
- tooluniverse/tools/get_assembly_info_by_pdb_id.py +46 -0
- tooluniverse/tools/get_assembly_summary.py +46 -0
- tooluniverse/tools/get_astropy_info.py +44 -0
- tooluniverse/tools/get_binding_affinity_by_pdb_id.py +46 -0
- tooluniverse/tools/get_biopandas_info.py +49 -0
- tooluniverse/tools/get_biopython_info.py +49 -0
- tooluniverse/tools/get_bioservices_info.py +44 -0
- tooluniverse/tools/get_biotite_info.py +49 -0
- tooluniverse/tools/get_bokeh_info.py +44 -0
- tooluniverse/tools/get_brian2_info.py +44 -0
- tooluniverse/tools/get_cartopy_info.py +44 -0
- tooluniverse/tools/get_catboost_info.py +44 -0
- tooluniverse/tools/get_cellpose_info.py +49 -0
- tooluniverse/tools/get_cellrank_info.py +44 -0
- tooluniverse/tools/get_cellxgene_census_info.py +46 -0
- tooluniverse/tools/get_cftime_info.py +44 -0
- tooluniverse/tools/get_chem_comp_audit_info.py +46 -0
- tooluniverse/tools/get_chem_comp_charge_and_ambiguity.py +46 -0
- tooluniverse/tools/get_chembl_webresource_client_info.py +44 -0
- tooluniverse/tools/get_citation_info_by_pdb_id.py +46 -0
- tooluniverse/tools/get_clair3_info.py +46 -0
- tooluniverse/tools/get_clinical_trial_conditions_and_interventions.py +55 -0
- tooluniverse/tools/get_clinical_trial_descriptions.py +52 -0
- tooluniverse/tools/get_clinical_trial_eligibility_criteria.py +55 -0
- tooluniverse/tools/get_clinical_trial_locations.py +52 -0
- tooluniverse/tools/get_clinical_trial_outcome_measures.py +52 -0
- tooluniverse/tools/get_clinical_trial_references.py +52 -0
- tooluniverse/tools/get_clinical_trial_status_and_dates.py +52 -0
- tooluniverse/tools/get_cobra_info.py +46 -0
- tooluniverse/tools/get_cobrapy_info.py +46 -0
- tooluniverse/tools/get_cooler_info.py +49 -0
- tooluniverse/tools/get_core_refinement_statistics.py +46 -0
- tooluniverse/tools/get_cryosparc_tools_info.py +46 -0
- tooluniverse/tools/get_crystal_growth_conditions_by_pdb_id.py +49 -0
- tooluniverse/tools/get_crystallization_ph_by_pdb_id.py +46 -0
- tooluniverse/tools/get_crystallographic_properties_by_pdb_id.py +49 -0
- tooluniverse/tools/get_cupy_info.py +44 -0
- tooluniverse/tools/get_cyvcf2_info.py +49 -0
- tooluniverse/tools/get_dask_info.py +44 -0
- tooluniverse/tools/get_datamol_info.py +44 -0
- tooluniverse/tools/get_datashader_info.py +44 -0
- tooluniverse/tools/get_deepchem_info.py +49 -0
- tooluniverse/tools/get_deeppurpose_info.py +46 -0
- tooluniverse/tools/get_deeptools_info.py +46 -0
- tooluniverse/tools/get_deepxde_info.py +49 -0
- tooluniverse/tools/get_dendropy_info.py +44 -0
- tooluniverse/tools/get_descriptastorus_info.py +46 -0
- tooluniverse/tools/get_diffdock_info.py +46 -0
- tooluniverse/tools/get_dscribe_info.py +49 -0
- tooluniverse/tools/get_ec_number_by_entity_id.py +46 -0
- tooluniverse/tools/get_elephant_info.py +44 -0
- tooluniverse/tools/get_em_3d_fitting_and_reconstruction_details.py +49 -0
- tooluniverse/tools/get_emdb_ids_by_pdb_id.py +46 -0
- tooluniverse/tools/get_episcanpy_info.py +44 -0
- tooluniverse/tools/get_ete3_info.py +44 -0
- tooluniverse/tools/get_faiss_info.py +46 -0
- tooluniverse/tools/get_fanc_info.py +46 -0
- tooluniverse/tools/get_flask_info.py +46 -0
- tooluniverse/tools/get_flowio_info.py +46 -0
- tooluniverse/tools/get_flowkit_info.py +46 -0
- tooluniverse/tools/get_flowutils_info.py +46 -0
- tooluniverse/tools/get_freesasa_info.py +44 -0
- tooluniverse/tools/get_galpy_info.py +44 -0
- tooluniverse/tools/get_gene_name_by_entity_id.py +46 -0
- tooluniverse/tools/get_geopandas_info.py +44 -0
- tooluniverse/tools/get_gget_info.py +46 -0
- tooluniverse/tools/get_googlesearch_python_info.py +46 -0
- tooluniverse/tools/get_gseapy_info.py +49 -0
- tooluniverse/tools/get_h5py_info.py +46 -0
- tooluniverse/tools/get_harmony_pytorch_info.py +46 -0
- tooluniverse/tools/get_hmmlearn_info.py +46 -0
- tooluniverse/tools/get_holoviews_info.py +44 -0
- tooluniverse/tools/get_host_organism_by_pdb_id.py +46 -0
- tooluniverse/tools/get_htmd_info.py +44 -0
- tooluniverse/tools/get_hyperopt_info.py +49 -0
- tooluniverse/tools/get_igraph_info.py +49 -0
- tooluniverse/tools/get_imageio_info.py +44 -0
- tooluniverse/tools/get_imbalanced_learn_info.py +44 -0
- tooluniverse/tools/get_jcvi_info.py +46 -0
- tooluniverse/tools/get_joblib_info.py +44 -0
- tooluniverse/tools/get_joint_associated_diseases_by_HPO_ID_list.py +55 -0
- tooluniverse/tools/get_khmer_info.py +46 -0
- tooluniverse/tools/get_kipoiseq_info.py +44 -0
- tooluniverse/tools/get_lifelines_info.py +49 -0
- tooluniverse/tools/get_ligand_bond_count_by_pdb_id.py +46 -0
- tooluniverse/tools/get_ligand_smiles_by_chem_comp_id.py +49 -0
- tooluniverse/tools/get_lightgbm_info.py +44 -0
- tooluniverse/tools/get_loompy_info.py +46 -0
- tooluniverse/tools/get_mageck_info.py +46 -0
- tooluniverse/tools/get_matplotlib_info.py +49 -0
- tooluniverse/tools/get_mdanalysis_info.py +46 -0
- tooluniverse/tools/get_mdtraj_info.py +44 -0
- tooluniverse/tools/get_mne_info.py +44 -0
- tooluniverse/tools/get_molfeat_info.py +44 -0
- tooluniverse/tools/get_molvs_info.py +44 -0
- tooluniverse/tools/get_mordred_info.py +44 -0
- tooluniverse/tools/get_msprime_info.py +49 -0
- tooluniverse/tools/get_mudata_info.py +49 -0
- tooluniverse/tools/get_mutation_annotations_by_pdb_id.py +46 -0
- tooluniverse/tools/get_neo_info.py +44 -0
- tooluniverse/tools/get_netcdf4_info.py +44 -0
- tooluniverse/tools/get_networkx_info.py +46 -0
- tooluniverse/tools/get_nglview_info.py +44 -0
- tooluniverse/tools/get_nilearn_info.py +44 -0
- tooluniverse/tools/get_numba_info.py +46 -0
- tooluniverse/tools/get_numpy_info.py +46 -0
- tooluniverse/tools/get_oligosaccharide_descriptors_by_entity_id.py +49 -0
- tooluniverse/tools/get_openbabel_info.py +49 -0
- tooluniverse/tools/get_openchem_info.py +46 -0
- tooluniverse/tools/get_opencv_info.py +49 -0
- tooluniverse/tools/get_openmm_info.py +49 -0
- tooluniverse/tools/get_optlang_info.py +46 -0
- tooluniverse/tools/get_optuna_info.py +44 -0
- tooluniverse/tools/get_palantir_info.py +44 -0
- tooluniverse/tools/get_pandas_info.py +49 -0
- tooluniverse/tools/get_patsy_info.py +44 -0
- tooluniverse/tools/get_pdbfixer_info.py +46 -0
- tooluniverse/tools/get_phenotype_by_HPO_ID.py +46 -0
- tooluniverse/tools/get_pillow_info.py +44 -0
- tooluniverse/tools/get_plantcv_info.py +46 -0
- tooluniverse/tools/get_plip_info.py +46 -0
- tooluniverse/tools/get_plotly_info.py +44 -0
- tooluniverse/tools/get_poliastro_info.py +46 -0
- tooluniverse/tools/get_polymer_entity_annotations.py +49 -0
- tooluniverse/tools/get_polymer_entity_count_by_pdb_id.py +46 -0
- tooluniverse/tools/get_polymer_entity_ids_by_pdb_id.py +46 -0
- tooluniverse/tools/get_polymer_entity_type_by_entity_id.py +49 -0
- tooluniverse/tools/get_polymer_molecular_weight_by_entity_id.py +49 -0
- tooluniverse/tools/get_poretools_info.py +44 -0
- tooluniverse/tools/get_prody_info.py +46 -0
- tooluniverse/tools/get_protein_classification_by_pdb_id.py +49 -0
- tooluniverse/tools/get_protein_metadata_by_pdb_id.py +46 -0
- tooluniverse/tools/get_pubchempy_info.py +44 -0
- tooluniverse/tools/get_pybedtools_info.py +49 -0
- tooluniverse/tools/get_pybigwig_info.py +46 -0
- tooluniverse/tools/get_pydeseq2_info.py +46 -0
- tooluniverse/tools/get_pyensembl_info.py +44 -0
- tooluniverse/tools/get_pyephem_info.py +44 -0
- tooluniverse/tools/get_pyfaidx_info.py +49 -0
- tooluniverse/tools/get_pyfasta_info.py +44 -0
- tooluniverse/tools/get_pykalman_info.py +46 -0
- tooluniverse/tools/get_pyliftover_info.py +49 -0
- tooluniverse/tools/get_pymassspec_info.py +46 -0
- tooluniverse/tools/get_pymed_info.py +46 -0
- tooluniverse/tools/get_pymzml_info.py +46 -0
- tooluniverse/tools/get_pypdf2_info.py +46 -0
- tooluniverse/tools/get_pyranges_info.py +49 -0
- tooluniverse/tools/get_pyrosetta_info.py +44 -0
- tooluniverse/tools/get_pysam_info.py +46 -0
- tooluniverse/tools/get_pyscenic_info.py +46 -0
- tooluniverse/tools/get_pyscf_info.py +46 -0
- tooluniverse/tools/get_pyscreener_info.py +46 -0
- tooluniverse/tools/get_pytdc_info.py +46 -0
- tooluniverse/tools/get_python_libsbml_info.py +46 -0
- tooluniverse/tools/get_pytorch_info.py +49 -0
- tooluniverse/tools/get_pyvcf_info.py +44 -0
- tooluniverse/tools/get_pyvis_info.py +44 -0
- tooluniverse/tools/get_qutip_info.py +44 -0
- tooluniverse/tools/get_rasterio_info.py +44 -0
- tooluniverse/tools/get_rdkit_info.py +46 -0
- tooluniverse/tools/get_refinement_resolution_by_pdb_id.py +49 -0
- tooluniverse/tools/get_release_deposit_dates_by_pdb_id.py +49 -0
- tooluniverse/tools/get_reportlab_info.py +49 -0
- tooluniverse/tools/get_requests_info.py +49 -0
- tooluniverse/tools/get_ruptures_info.py +46 -0
- tooluniverse/tools/get_scanorama_info.py +44 -0
- tooluniverse/tools/get_scanpy_info.py +49 -0
- tooluniverse/tools/get_schnetpack_info.py +49 -0
- tooluniverse/tools/get_scholarly_info.py +46 -0
- tooluniverse/tools/get_scikit_bio_info.py +49 -0
- tooluniverse/tools/get_scikit_image_info.py +46 -0
- tooluniverse/tools/get_scikit_learn_info.py +49 -0
- tooluniverse/tools/get_scipy_info.py +46 -0
- tooluniverse/tools/get_scrublet_info.py +49 -0
- tooluniverse/tools/get_scvelo_info.py +49 -0
- tooluniverse/tools/get_scvi_tools_info.py +44 -0
- tooluniverse/tools/get_seaborn_info.py +49 -0
- tooluniverse/tools/get_sequence_by_pdb_id.py +46 -0
- tooluniverse/tools/get_sequence_lengths_by_pdb_id.py +46 -0
- tooluniverse/tools/get_sequence_positional_features_by_instance_id.py +49 -0
- tooluniverse/tools/get_skopt_info.py +44 -0
- tooluniverse/tools/get_souporcell_info.py +46 -0
- tooluniverse/tools/get_source_organism_by_pdb_id.py +46 -0
- tooluniverse/tools/get_space_group_by_pdb_id.py +46 -0
- tooluniverse/tools/get_statsmodels_info.py +49 -0
- tooluniverse/tools/get_structure_determination_software_by_pdb_id.py +49 -0
- tooluniverse/tools/get_structure_title_by_pdb_id.py +46 -0
- tooluniverse/tools/get_structure_validation_metrics_by_pdb_id.py +49 -0
- tooluniverse/tools/get_sunpy_info.py +44 -0
- tooluniverse/tools/get_sympy_info.py +46 -0
- tooluniverse/tools/get_target_cofactor_info.py +46 -0
- tooluniverse/tools/get_taxonomy_by_pdb_id.py +46 -0
- tooluniverse/tools/get_tiledb_info.py +46 -0
- tooluniverse/tools/get_tiledbsoma_info.py +46 -0
- tooluniverse/tools/get_torch_geometric_info.py +49 -0
- tooluniverse/tools/get_tqdm_info.py +46 -0
- tooluniverse/tools/get_trackpy_info.py +46 -0
- tooluniverse/tools/get_tskit_info.py +46 -0
- tooluniverse/tools/get_umap_learn_info.py +49 -0
- tooluniverse/tools/get_uniprot_accession_by_entity_id.py +49 -0
- tooluniverse/tools/get_velocyto_info.py +44 -0
- tooluniverse/tools/get_viennarna_info.py +49 -0
- tooluniverse/tools/get_webpage_text_from_url.py +52 -0
- tooluniverse/tools/get_webpage_title.py +49 -0
- tooluniverse/tools/get_xarray_info.py +44 -0
- tooluniverse/tools/get_xesmf_info.py +44 -0
- tooluniverse/tools/get_xgboost_info.py +44 -0
- tooluniverse/tools/get_zarr_info.py +44 -0
- tooluniverse/tools/gwas_get_association_by_id.py +49 -0
- tooluniverse/tools/gwas_get_associations_for_snp.py +67 -0
- tooluniverse/tools/gwas_get_associations_for_study.py +55 -0
- tooluniverse/tools/gwas_get_associations_for_trait.py +55 -0
- tooluniverse/tools/gwas_get_snp_by_id.py +46 -0
- tooluniverse/tools/gwas_get_snps_for_gene.py +55 -0
- tooluniverse/tools/gwas_get_studies_for_trait.py +75 -0
- tooluniverse/tools/gwas_get_study_by_id.py +46 -0
- tooluniverse/tools/gwas_get_variants_for_trait.py +55 -0
- tooluniverse/tools/gwas_search_associations.py +75 -0
- tooluniverse/tools/gwas_search_snps.py +63 -0
- tooluniverse/tools/gwas_search_studies.py +75 -0
- tooluniverse/tools/humanbase_ppi_analysis.py +67 -0
- tooluniverse/tools/mesh_get_subjects_by_pharmacological_action.py +63 -0
- tooluniverse/tools/mesh_get_subjects_by_subject_id.py +63 -0
- tooluniverse/tools/mesh_get_subjects_by_subject_name.py +63 -0
- tooluniverse/tools/mesh_get_subjects_by_subject_scope_or_definition.py +63 -0
- tooluniverse/tools/odphp_itemlist.py +49 -0
- tooluniverse/tools/odphp_myhealthfinder.py +67 -0
- tooluniverse/tools/odphp_outlink_fetch.py +59 -0
- tooluniverse/tools/odphp_topicsearch.py +67 -0
- tooluniverse/tools/openalex_literature_search.py +67 -0
- tooluniverse/tools/reactome_disease_target_score.py +52 -0
- tooluniverse/tools/search_clinical_trials.py +67 -0
- tooluniverse/tools/visualize_molecule_2d.py +83 -0
- tooluniverse/tools/visualize_molecule_3d.py +91 -0
- tooluniverse/tools/visualize_protein_structure_3d.py +79 -0
- tooluniverse/unified_guideline_tools.py +1210 -0
- tooluniverse/unpaywall_tool.py +62 -0
- tooluniverse/utils.py +71 -2
- tooluniverse/visualization_tool.py +897 -0
- tooluniverse/wikidata_sparql_tool.py +60 -0
- tooluniverse/zenodo_tool.py +72 -0
- {tooluniverse-1.0.5.dist-info → tooluniverse-1.0.7.dist-info}/METADATA +12 -2
- tooluniverse-1.0.7.dist-info/RECORD +855 -0
- {tooluniverse-1.0.5.dist-info → tooluniverse-1.0.7.dist-info}/entry_points.txt +4 -0
- tooluniverse/test/list_azure_openai_models.py +0 -210
- tooluniverse/test/mcp_server_test.py +0 -0
- tooluniverse/test/test_admetai_tool.py +0 -370
- tooluniverse/test/test_agentic_tool.py +0 -129
- tooluniverse/test/test_agentic_tool_azure_models.py +0 -91
- tooluniverse/test/test_alphafold_tool.py +0 -108
- tooluniverse/test/test_api_key_validation_min.py +0 -64
- tooluniverse/test/test_chem_tool.py +0 -37
- tooluniverse/test/test_claude_sdk.py +0 -86
- tooluniverse/test/test_compose_lieraturereview.py +0 -63
- tooluniverse/test/test_compose_tool.py +0 -448
- tooluniverse/test/test_dailymed.py +0 -69
- tooluniverse/test/test_dataset_tool.py +0 -200
- tooluniverse/test/test_disease_target_score.py +0 -56
- tooluniverse/test/test_drugbank_filter_examples.py +0 -179
- tooluniverse/test/test_efo.py +0 -31
- tooluniverse/test/test_enrichr_tool.py +0 -21
- tooluniverse/test/test_europe_pmc_tool.py +0 -20
- tooluniverse/test/test_fda_adv.py +0 -95
- tooluniverse/test/test_fda_drug_labeling.py +0 -91
- tooluniverse/test/test_gene_ontology_tools.py +0 -66
- tooluniverse/test/test_global_fallback.py +0 -288
- tooluniverse/test/test_gwas_tool.py +0 -139
- tooluniverse/test/test_hooks_direct.py +0 -219
- tooluniverse/test/test_hpa.py +0 -625
- tooluniverse/test/test_humanbase_tool.py +0 -20
- tooluniverse/test/test_idmap_tools.py +0 -61
- tooluniverse/test/test_list_built_in_tools.py +0 -33
- tooluniverse/test/test_mcp_server.py +0 -211
- tooluniverse/test/test_mcp_tool.py +0 -247
- tooluniverse/test/test_medlineplus.py +0 -220
- tooluniverse/test/test_odphp_tool.py +0 -166
- tooluniverse/test/test_openalex_tool.py +0 -32
- tooluniverse/test/test_openrouter_client.py +0 -288
- tooluniverse/test/test_opentargets.py +0 -28
- tooluniverse/test/test_pubchem_tool.py +0 -116
- tooluniverse/test/test_pubtator_tool.py +0 -37
- tooluniverse/test/test_rcsb_pdb_tool.py +0 -86
- tooluniverse/test/test_reactome.py +0 -54
- tooluniverse/test/test_semantic_scholar_tool.py +0 -24
- tooluniverse/test/test_software_tools.py +0 -147
- tooluniverse/test/test_stdio_hooks.py +0 -285
- tooluniverse/test/test_tool_description_optimizer.py +0 -49
- tooluniverse/test/test_tool_finder.py +0 -26
- tooluniverse/test/test_tool_finder_llm.py +0 -252
- tooluniverse/test/test_tools_find.py +0 -195
- tooluniverse/test/test_uniprot_tools.py +0 -74
- tooluniverse/test/test_uspto_tool.py +0 -72
- tooluniverse/test/test_xml_tool.py +0 -113
- tooluniverse-1.0.5.dist-info/RECORD +0 -198
- {tooluniverse-1.0.5.dist-info → tooluniverse-1.0.7.dist-info}/WHEEL +0 -0
- {tooluniverse-1.0.5.dist-info → tooluniverse-1.0.7.dist-info}/licenses/LICENSE +0 -0
- {tooluniverse-1.0.5.dist-info → tooluniverse-1.0.7.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,1332 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import re
|
|
3
|
+
import requests
|
|
4
|
+
from typing import Any, Dict, List, Tuple
|
|
5
|
+
from difflib import SequenceMatcher
|
|
6
|
+
|
|
7
|
+
from .base_tool import BaseTool
|
|
8
|
+
from .tool_registry import register_tool
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@register_tool("CellosaurusSearchTool")
|
|
12
|
+
class CellosaurusSearchTool(BaseTool):
|
|
13
|
+
"""
|
|
14
|
+
Tool to search Cellosaurus cell lines using the official API.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
def __init__(self, tool_config, base_url="https://api.cellosaurus.org"):
|
|
18
|
+
super().__init__(tool_config)
|
|
19
|
+
self.base_url = base_url
|
|
20
|
+
self.timeout_seconds = int(os.environ.get("CELLOSAURUS_TIMEOUT", "30"))
|
|
21
|
+
|
|
22
|
+
def run(self, arguments):
|
|
23
|
+
q = arguments.get("q")
|
|
24
|
+
offset = arguments.get("offset", 0)
|
|
25
|
+
size = arguments.get("size", 20)
|
|
26
|
+
|
|
27
|
+
if not q:
|
|
28
|
+
return {"error": "`q` parameter is required."}
|
|
29
|
+
|
|
30
|
+
return self._search_cell_lines(q, offset, size)
|
|
31
|
+
|
|
32
|
+
def _search_cell_lines(self, query, offset, size):
|
|
33
|
+
"""
|
|
34
|
+
Search Cellosaurus cell lines using the /search/cell-line endpoint.
|
|
35
|
+
"""
|
|
36
|
+
try:
|
|
37
|
+
params = {"q": query.strip(), "offset": offset, "size": size}
|
|
38
|
+
|
|
39
|
+
url = f"{self.base_url}/search/cell-line"
|
|
40
|
+
headers = {"Accept": "application/json"}
|
|
41
|
+
resp = requests.get(
|
|
42
|
+
url,
|
|
43
|
+
params=params,
|
|
44
|
+
headers=headers,
|
|
45
|
+
timeout=self.timeout_seconds,
|
|
46
|
+
)
|
|
47
|
+
resp.raise_for_status()
|
|
48
|
+
data = resp.json()
|
|
49
|
+
|
|
50
|
+
# Extract cell lines from the API response structure
|
|
51
|
+
cell_lines = []
|
|
52
|
+
total_count = 0
|
|
53
|
+
|
|
54
|
+
if isinstance(data, dict) and "Cellosaurus" in data:
|
|
55
|
+
cellosaurus_data = data["Cellosaurus"]
|
|
56
|
+
if "cell-line-list" in cellosaurus_data:
|
|
57
|
+
cell_lines = cellosaurus_data["cell-line-list"]
|
|
58
|
+
total_count = len(cell_lines)
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
"success": True,
|
|
62
|
+
"results": {
|
|
63
|
+
"cell_lines": cell_lines,
|
|
64
|
+
"total": total_count,
|
|
65
|
+
"offset": offset,
|
|
66
|
+
"size": size,
|
|
67
|
+
},
|
|
68
|
+
"query": query.strip(),
|
|
69
|
+
}
|
|
70
|
+
except requests.HTTPError as http_err:
|
|
71
|
+
status = getattr(http_err.response, "status_code", None)
|
|
72
|
+
return {"error": f"HTTP {status}: {http_err}"}
|
|
73
|
+
except Exception as e:
|
|
74
|
+
return {"error": str(e)}
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
@register_tool("CellosaurusQueryConverterTool")
|
|
78
|
+
class CellosaurusQueryConverterTool(BaseTool):
|
|
79
|
+
"""
|
|
80
|
+
Tool to convert natural language queries to Solr syntax for
|
|
81
|
+
Cellosaurus API.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
def __init__(self, tool_config):
|
|
85
|
+
super().__init__(tool_config)
|
|
86
|
+
|
|
87
|
+
# Complete Cellosaurus field definitions from official API
|
|
88
|
+
# documentation
|
|
89
|
+
# https://api.cellosaurus.org/api-fields
|
|
90
|
+
self.cellosaurus_fields = {
|
|
91
|
+
"id": {
|
|
92
|
+
"short_name": "-",
|
|
93
|
+
"description": (
|
|
94
|
+
"Recommended name. Most frequently the name of the cell "
|
|
95
|
+
"line as provided in the original publication."
|
|
96
|
+
),
|
|
97
|
+
"keywords": [
|
|
98
|
+
"name",
|
|
99
|
+
"cell line",
|
|
100
|
+
"cellline",
|
|
101
|
+
"recommended",
|
|
102
|
+
"publication",
|
|
103
|
+
],
|
|
104
|
+
},
|
|
105
|
+
"sy": {
|
|
106
|
+
"short_name": "-",
|
|
107
|
+
"description": (
|
|
108
|
+
"List of synonyms. We try to list all the different "
|
|
109
|
+
"synonyms for the cell line, including alternative use of "
|
|
110
|
+
"lower and upper cases characters. Misspellings are not "
|
|
111
|
+
'included in synonyms (see the "misspelling" tag).'
|
|
112
|
+
),
|
|
113
|
+
"keywords": [
|
|
114
|
+
"synonym",
|
|
115
|
+
"synonyms",
|
|
116
|
+
"alias",
|
|
117
|
+
"alternative",
|
|
118
|
+
"different names",
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
"idsy": {
|
|
122
|
+
"short_name": "-",
|
|
123
|
+
"description": (
|
|
124
|
+
"Recommended name with all its synonyms. Concatenation of "
|
|
125
|
+
"ID and SY."
|
|
126
|
+
),
|
|
127
|
+
"keywords": [
|
|
128
|
+
"name",
|
|
129
|
+
"synonyms",
|
|
130
|
+
"combined",
|
|
131
|
+
"concatenation",
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
"ac": {
|
|
135
|
+
"short_name": "-",
|
|
136
|
+
"description": (
|
|
137
|
+
"Primary accession. It is the unique identifier of the "
|
|
138
|
+
"cell line. It is normally stable across Cellosaurus "
|
|
139
|
+
"versions but when two entries are merged, one of the two "
|
|
140
|
+
"accessions stays primary while the second one becomes "
|
|
141
|
+
"secondary (see ACAS)"
|
|
142
|
+
),
|
|
143
|
+
"keywords": [
|
|
144
|
+
"accession",
|
|
145
|
+
"primary",
|
|
146
|
+
"identifier",
|
|
147
|
+
"unique",
|
|
148
|
+
"stable",
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
"acas": {
|
|
152
|
+
"short_name": "-",
|
|
153
|
+
"description": (
|
|
154
|
+
"Primary and secondary accession. Secondary accession are "
|
|
155
|
+
"former primary accession kept here to ensure the access "
|
|
156
|
+
"to a cell line via old identifiers."
|
|
157
|
+
),
|
|
158
|
+
"keywords": [
|
|
159
|
+
"accession",
|
|
160
|
+
"primary",
|
|
161
|
+
"secondary",
|
|
162
|
+
"former",
|
|
163
|
+
"old identifiers",
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
"dr": {
|
|
167
|
+
"short_name": "-",
|
|
168
|
+
"description": (
|
|
169
|
+
"Cross-references to external resources: cell catalogs, "
|
|
170
|
+
"databases, resources listing cell lines as samples or to "
|
|
171
|
+
"ontologies. A cross-reference has two parts: the short "
|
|
172
|
+
"name of the resource (i.e. CCLE) and an identifier used "
|
|
173
|
+
"to locate a particular entry of the resource related to "
|
|
174
|
+
"the cell line. For a formal description of all the "
|
|
175
|
+
"resources referred to in Cellosaurus, see here ."
|
|
176
|
+
),
|
|
177
|
+
"keywords": [
|
|
178
|
+
"cross-reference",
|
|
179
|
+
"external",
|
|
180
|
+
"catalog",
|
|
181
|
+
"database",
|
|
182
|
+
"atcc",
|
|
183
|
+
"dsmz",
|
|
184
|
+
"ccle",
|
|
185
|
+
"ecacc",
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
"ref": {
|
|
189
|
+
"short_name": "-",
|
|
190
|
+
"description": (
|
|
191
|
+
"Publication references. Mostly publications describing "
|
|
192
|
+
"the establishment of a cell line or its "
|
|
193
|
+
"characterization. Can be journal articles, book "
|
|
194
|
+
"chapters, patents and theses. Contains the "
|
|
195
|
+
"cross-reference of the publication, its title, authors "
|
|
196
|
+
"(or group/consortium) and citation elements."
|
|
197
|
+
),
|
|
198
|
+
"keywords": [
|
|
199
|
+
"reference",
|
|
200
|
+
"publication",
|
|
201
|
+
"paper",
|
|
202
|
+
"article",
|
|
203
|
+
"journal",
|
|
204
|
+
"book",
|
|
205
|
+
"patent",
|
|
206
|
+
"thesis",
|
|
207
|
+
],
|
|
208
|
+
},
|
|
209
|
+
"rx": {
|
|
210
|
+
"short_name": "-",
|
|
211
|
+
"description": (
|
|
212
|
+
"Publication cross-reference. A unique identifier "
|
|
213
|
+
"allowing access the publication online. The "
|
|
214
|
+
"cross-reference has two parts: the shortname of the "
|
|
215
|
+
"online resource (i.e. PubMed, DOI, PMCID, CLPUB) "
|
|
216
|
+
"and an identifier used to locate the particular "
|
|
217
|
+
"publication related to the cell line. For a formal "
|
|
218
|
+
"description of all the resources referred to in "
|
|
219
|
+
"Cellosaurus, see here ."
|
|
220
|
+
),
|
|
221
|
+
"keywords": [
|
|
222
|
+
"cross-reference",
|
|
223
|
+
"online",
|
|
224
|
+
"pubmed",
|
|
225
|
+
"doi",
|
|
226
|
+
"pmcid",
|
|
227
|
+
"clpub",
|
|
228
|
+
"patent",
|
|
229
|
+
"identifier",
|
|
230
|
+
],
|
|
231
|
+
},
|
|
232
|
+
"ra": {
|
|
233
|
+
"short_name": "-",
|
|
234
|
+
"description": (
|
|
235
|
+
"Publication authors. List of authors of a publication "
|
|
236
|
+
"referenced in a cell line entry."
|
|
237
|
+
),
|
|
238
|
+
"keywords": [
|
|
239
|
+
"author",
|
|
240
|
+
"authors",
|
|
241
|
+
"written by",
|
|
242
|
+
"publication",
|
|
243
|
+
],
|
|
244
|
+
},
|
|
245
|
+
"rt": {
|
|
246
|
+
"short_name": "-",
|
|
247
|
+
"description": (
|
|
248
|
+
"Publication title. Title of a publication referenced in "
|
|
249
|
+
"cell line entry."
|
|
250
|
+
),
|
|
251
|
+
"keywords": ["title", "paper", "article", "publication"],
|
|
252
|
+
},
|
|
253
|
+
"rl": {
|
|
254
|
+
"short_name": "-",
|
|
255
|
+
"description": (
|
|
256
|
+
"Publication citation elements. Citation elements of a "
|
|
257
|
+
"publication referenced in a cell line entry."
|
|
258
|
+
),
|
|
259
|
+
"keywords": ["citation", "cite", "reference", "elements"],
|
|
260
|
+
},
|
|
261
|
+
"ww": {
|
|
262
|
+
"short_name": "-",
|
|
263
|
+
"description": "Web page related to the cell line",
|
|
264
|
+
"keywords": ["website", "web page", "homepage", "url"],
|
|
265
|
+
},
|
|
266
|
+
"anc": {
|
|
267
|
+
"short_name": "genome-ancestry",
|
|
268
|
+
"description": (
|
|
269
|
+
"Estimated ethnic ancestry of the donor of a human cell "
|
|
270
|
+
"line based on the analysis of its genome."
|
|
271
|
+
),
|
|
272
|
+
"keywords": [
|
|
273
|
+
"ancestry",
|
|
274
|
+
"ethnic",
|
|
275
|
+
"genetic background",
|
|
276
|
+
"genome",
|
|
277
|
+
"donor",
|
|
278
|
+
],
|
|
279
|
+
},
|
|
280
|
+
"hla": {
|
|
281
|
+
"short_name": "-",
|
|
282
|
+
"description": (
|
|
283
|
+
"HLA typing information. Alleles identified on the MHC "
|
|
284
|
+
"type I and type II genes of the donor of a human cell "
|
|
285
|
+
"line."
|
|
286
|
+
),
|
|
287
|
+
"keywords": [
|
|
288
|
+
"hla",
|
|
289
|
+
"mhc",
|
|
290
|
+
"typing",
|
|
291
|
+
"alleles",
|
|
292
|
+
"genes",
|
|
293
|
+
"donor",
|
|
294
|
+
],
|
|
295
|
+
},
|
|
296
|
+
"reg": {
|
|
297
|
+
"short_name": "registration",
|
|
298
|
+
"description": (
|
|
299
|
+
"Official list, or register in which the cell line is "
|
|
300
|
+
"registered."
|
|
301
|
+
),
|
|
302
|
+
"keywords": [
|
|
303
|
+
"registration",
|
|
304
|
+
"registered",
|
|
305
|
+
"official",
|
|
306
|
+
"register",
|
|
307
|
+
],
|
|
308
|
+
},
|
|
309
|
+
"var": {
|
|
310
|
+
"short_name": "sequence-variation",
|
|
311
|
+
"description": (
|
|
312
|
+
"Important sequence variations of the cell line compared "
|
|
313
|
+
"to the reference genome of the species."
|
|
314
|
+
),
|
|
315
|
+
"keywords": [
|
|
316
|
+
"variation",
|
|
317
|
+
"mutation",
|
|
318
|
+
"sequence",
|
|
319
|
+
"variant",
|
|
320
|
+
"snv",
|
|
321
|
+
"indel",
|
|
322
|
+
],
|
|
323
|
+
},
|
|
324
|
+
"anec": {
|
|
325
|
+
"short_name": "anecdotal",
|
|
326
|
+
"description": (
|
|
327
|
+
"Anecdotal details regarding the cell line (its origin, "
|
|
328
|
+
"its name or any other particularity)."
|
|
329
|
+
),
|
|
330
|
+
"keywords": [
|
|
331
|
+
"anecdotal",
|
|
332
|
+
"story",
|
|
333
|
+
"history",
|
|
334
|
+
"background",
|
|
335
|
+
"origin",
|
|
336
|
+
],
|
|
337
|
+
},
|
|
338
|
+
"biot": {
|
|
339
|
+
"short_name": "biotechnology",
|
|
340
|
+
"description": (
|
|
341
|
+
"Type of use of the cell line in a biotechnological " "context."
|
|
342
|
+
),
|
|
343
|
+
"keywords": [
|
|
344
|
+
"biotechnology",
|
|
345
|
+
"biotech",
|
|
346
|
+
"production",
|
|
347
|
+
"manufacturing",
|
|
348
|
+
"use",
|
|
349
|
+
],
|
|
350
|
+
},
|
|
351
|
+
"breed": {
|
|
352
|
+
"short_name": "-",
|
|
353
|
+
"description": (
|
|
354
|
+
"Breed or subspecies an animal cell line is derived from "
|
|
355
|
+
"with breed identifiers from FlyBase_Strain, RS and VBO."
|
|
356
|
+
),
|
|
357
|
+
"keywords": [
|
|
358
|
+
"breed",
|
|
359
|
+
"subspecies",
|
|
360
|
+
"animal",
|
|
361
|
+
"flybase",
|
|
362
|
+
"strain",
|
|
363
|
+
],
|
|
364
|
+
},
|
|
365
|
+
"caution": {
|
|
366
|
+
"short_name": "-",
|
|
367
|
+
"description": (
|
|
368
|
+
"Errors, inconsistencies, ambiguities regarding the "
|
|
369
|
+
"origin or other aspects of the cell line."
|
|
370
|
+
),
|
|
371
|
+
"keywords": [
|
|
372
|
+
"caution",
|
|
373
|
+
"warning",
|
|
374
|
+
"error",
|
|
375
|
+
"inconsistency",
|
|
376
|
+
"ambiguity",
|
|
377
|
+
],
|
|
378
|
+
},
|
|
379
|
+
"cell": {
|
|
380
|
+
"short_name": "cell-type",
|
|
381
|
+
"description": ("Cell type from which the cell line is derived."),
|
|
382
|
+
"keywords": ["cell type", "cell", "derived", "type"],
|
|
383
|
+
},
|
|
384
|
+
"char": {
|
|
385
|
+
"short_name": "characteristics",
|
|
386
|
+
"description": (
|
|
387
|
+
"Production process or specific biological properties of "
|
|
388
|
+
"the cell line."
|
|
389
|
+
),
|
|
390
|
+
"keywords": [
|
|
391
|
+
"characteristics",
|
|
392
|
+
"properties",
|
|
393
|
+
"biological",
|
|
394
|
+
"production",
|
|
395
|
+
"process",
|
|
396
|
+
"cancer",
|
|
397
|
+
"tumor",
|
|
398
|
+
"malignant",
|
|
399
|
+
],
|
|
400
|
+
},
|
|
401
|
+
"donor": {
|
|
402
|
+
"short_name": "donor-info",
|
|
403
|
+
"description": (
|
|
404
|
+
"Miscellaneous information relevant to the donor of the "
|
|
405
|
+
"cell line."
|
|
406
|
+
),
|
|
407
|
+
"keywords": [
|
|
408
|
+
"donor",
|
|
409
|
+
"patient",
|
|
410
|
+
"miscellaneous",
|
|
411
|
+
"information",
|
|
412
|
+
],
|
|
413
|
+
},
|
|
414
|
+
"site": {
|
|
415
|
+
"short_name": "derived-from-site",
|
|
416
|
+
"description": (
|
|
417
|
+
"Body part (tissue or organ) the cell line is derived " "from."
|
|
418
|
+
),
|
|
419
|
+
"keywords": [
|
|
420
|
+
"site",
|
|
421
|
+
"tissue",
|
|
422
|
+
"organ",
|
|
423
|
+
"body part",
|
|
424
|
+
"derived",
|
|
425
|
+
"lung",
|
|
426
|
+
"breast",
|
|
427
|
+
"colon",
|
|
428
|
+
"skin",
|
|
429
|
+
"blood",
|
|
430
|
+
"bone",
|
|
431
|
+
"brain",
|
|
432
|
+
],
|
|
433
|
+
},
|
|
434
|
+
"disc": {
|
|
435
|
+
"short_name": "discontinued",
|
|
436
|
+
"description": (
|
|
437
|
+
"Discontinuation status of the cell line in a cell line " "catalog."
|
|
438
|
+
),
|
|
439
|
+
"keywords": [
|
|
440
|
+
"discontinued",
|
|
441
|
+
"unavailable",
|
|
442
|
+
"no longer available",
|
|
443
|
+
"status",
|
|
444
|
+
],
|
|
445
|
+
},
|
|
446
|
+
"time": {
|
|
447
|
+
"short_name": "doubling-time",
|
|
448
|
+
"description": "Population doubling-time of the cell line.",
|
|
449
|
+
"keywords": [
|
|
450
|
+
"doubling time",
|
|
451
|
+
"doubling",
|
|
452
|
+
"population",
|
|
453
|
+
"time",
|
|
454
|
+
"hours",
|
|
455
|
+
],
|
|
456
|
+
},
|
|
457
|
+
"from": {
|
|
458
|
+
"short_name": "-",
|
|
459
|
+
"description": (
|
|
460
|
+
"Laboratory, research institute, university having "
|
|
461
|
+
"established the cell line."
|
|
462
|
+
),
|
|
463
|
+
"keywords": [
|
|
464
|
+
"laboratory",
|
|
465
|
+
"lab",
|
|
466
|
+
"institute",
|
|
467
|
+
"university",
|
|
468
|
+
"established",
|
|
469
|
+
],
|
|
470
|
+
},
|
|
471
|
+
"group": {
|
|
472
|
+
"short_name": "-",
|
|
473
|
+
"description": (
|
|
474
|
+
"Specific group the cell line belongs to (example: fish "
|
|
475
|
+
"cell lines, vaccine production cell lines)."
|
|
476
|
+
),
|
|
477
|
+
"keywords": [
|
|
478
|
+
"group",
|
|
479
|
+
"fish cell lines",
|
|
480
|
+
"vaccine production",
|
|
481
|
+
"stem cell",
|
|
482
|
+
"embryonic",
|
|
483
|
+
],
|
|
484
|
+
},
|
|
485
|
+
"kar": {
|
|
486
|
+
"short_name": "karyotype",
|
|
487
|
+
"description": (
|
|
488
|
+
"Information relevant to the chromosomes of a cell line "
|
|
489
|
+
"(often to describe chromosomal abnormalities)."
|
|
490
|
+
),
|
|
491
|
+
"keywords": [
|
|
492
|
+
"karyotype",
|
|
493
|
+
"chromosome",
|
|
494
|
+
"chromosomal",
|
|
495
|
+
"abnormalities",
|
|
496
|
+
"defects",
|
|
497
|
+
],
|
|
498
|
+
},
|
|
499
|
+
"ko": {
|
|
500
|
+
"short_name": "knockout",
|
|
501
|
+
"description": (
|
|
502
|
+
"Gene(s) knocked-out in the cell line and method to "
|
|
503
|
+
"obtain the KO."
|
|
504
|
+
),
|
|
505
|
+
"keywords": ["knockout", "ko", "gene", "knocked-out"],
|
|
506
|
+
},
|
|
507
|
+
"msi": {
|
|
508
|
+
"short_name": "-",
|
|
509
|
+
"description": "Microsatellite instability degree.",
|
|
510
|
+
"keywords": ["msi", "microsatellite instability"],
|
|
511
|
+
},
|
|
512
|
+
"misc": {
|
|
513
|
+
"short_name": "miscellaneous",
|
|
514
|
+
"description": "Miscellaneous remarks about the cell line.",
|
|
515
|
+
"keywords": [
|
|
516
|
+
"miscellaneous",
|
|
517
|
+
"other",
|
|
518
|
+
"additional",
|
|
519
|
+
"notes",
|
|
520
|
+
"remarks",
|
|
521
|
+
],
|
|
522
|
+
},
|
|
523
|
+
"miss": {
|
|
524
|
+
"short_name": "misspelling",
|
|
525
|
+
"description": (
|
|
526
|
+
"Identified misspelling(s) of the cell line name with in "
|
|
527
|
+
"some case the specific publication or external resource "
|
|
528
|
+
"entry where it appears."
|
|
529
|
+
),
|
|
530
|
+
"keywords": ["misspelling", "misspelled", "typo"],
|
|
531
|
+
},
|
|
532
|
+
"mabi": {
|
|
533
|
+
"short_name": "mab-isotype",
|
|
534
|
+
"description": (
|
|
535
|
+
"Monoclonal antibody isotype. Examples: IgG2a, kappa; "
|
|
536
|
+
"IgM, lambda."
|
|
537
|
+
),
|
|
538
|
+
"keywords": [
|
|
539
|
+
"isotype",
|
|
540
|
+
"igg",
|
|
541
|
+
"igm",
|
|
542
|
+
"iga",
|
|
543
|
+
"ige",
|
|
544
|
+
"monoclonal antibody",
|
|
545
|
+
],
|
|
546
|
+
},
|
|
547
|
+
"mabt": {
|
|
548
|
+
"short_name": "mab-target",
|
|
549
|
+
"description": (
|
|
550
|
+
"Monoclonal antibody target molecule. Generally a "
|
|
551
|
+
"specific protein or chemical compound."
|
|
552
|
+
),
|
|
553
|
+
"keywords": [
|
|
554
|
+
"antibody",
|
|
555
|
+
"mab",
|
|
556
|
+
"target",
|
|
557
|
+
"targeting",
|
|
558
|
+
"protein",
|
|
559
|
+
"molecule",
|
|
560
|
+
],
|
|
561
|
+
},
|
|
562
|
+
"omics": {
|
|
563
|
+
"short_name": "-",
|
|
564
|
+
"description": ('"Omics" study(ies) carried out on the cell line.'),
|
|
565
|
+
"keywords": [
|
|
566
|
+
"omics",
|
|
567
|
+
"genomics",
|
|
568
|
+
"transcriptomics",
|
|
569
|
+
"proteomics",
|
|
570
|
+
"metabolomics",
|
|
571
|
+
"study",
|
|
572
|
+
],
|
|
573
|
+
},
|
|
574
|
+
"part": {
|
|
575
|
+
"short_name": "part-of",
|
|
576
|
+
"description": (
|
|
577
|
+
"The cell line belongs to a specific panel or collection "
|
|
578
|
+
"of cell lines."
|
|
579
|
+
),
|
|
580
|
+
"keywords": ["part", "panel", "collection", "belongs to"],
|
|
581
|
+
},
|
|
582
|
+
"pop": {
|
|
583
|
+
"short_name": "population",
|
|
584
|
+
"description": (
|
|
585
|
+
"Ethnic group, nationality of the individual from which "
|
|
586
|
+
"the cell line was sampled."
|
|
587
|
+
),
|
|
588
|
+
"keywords": [
|
|
589
|
+
"population",
|
|
590
|
+
"ethnic",
|
|
591
|
+
"nationality",
|
|
592
|
+
"caucasian",
|
|
593
|
+
"african",
|
|
594
|
+
"asian",
|
|
595
|
+
],
|
|
596
|
+
},
|
|
597
|
+
"prob": {
|
|
598
|
+
"short_name": "problematic",
|
|
599
|
+
"description": (
|
|
600
|
+
"Known problem(s) related to the cell line: contaminated, "
|
|
601
|
+
"misidentified, misclassified cell line or appearing in a "
|
|
602
|
+
"retracted paper."
|
|
603
|
+
),
|
|
604
|
+
"keywords": [
|
|
605
|
+
"problematic",
|
|
606
|
+
"contaminated",
|
|
607
|
+
"misidentified",
|
|
608
|
+
"problem",
|
|
609
|
+
"retracted",
|
|
610
|
+
],
|
|
611
|
+
},
|
|
612
|
+
"res": {
|
|
613
|
+
"short_name": "resistance",
|
|
614
|
+
"description": (
|
|
615
|
+
"Selected to be resistant to some chemical compound "
|
|
616
|
+
"(like a drug used in chemotherapy) or toxin. with a "
|
|
617
|
+
"cross-reference to either ChEBI, DrugBank, NCIt or "
|
|
618
|
+
"UniProtKB."
|
|
619
|
+
),
|
|
620
|
+
"keywords": [
|
|
621
|
+
"resistance",
|
|
622
|
+
"resistant",
|
|
623
|
+
"drug",
|
|
624
|
+
"chemotherapy",
|
|
625
|
+
"toxin",
|
|
626
|
+
"cisplatin",
|
|
627
|
+
"doxorubicin",
|
|
628
|
+
],
|
|
629
|
+
},
|
|
630
|
+
"sen": {
|
|
631
|
+
"short_name": "senescence",
|
|
632
|
+
"description": "When a finite cell line will senesce.",
|
|
633
|
+
"keywords": ["senescence", "senescent", "finite"],
|
|
634
|
+
},
|
|
635
|
+
"int": {
|
|
636
|
+
"short_name": "integrated",
|
|
637
|
+
"description": (
|
|
638
|
+
"Genetic element(s) integrated in the cell line: gene "
|
|
639
|
+
"name and identifier in CGNC, FlyBase, FPbase, HGNC, MGI, "
|
|
640
|
+
"RGD, UniProtKB, and VGNC."
|
|
641
|
+
),
|
|
642
|
+
"keywords": ["integrated", "genetic element", "gene"],
|
|
643
|
+
},
|
|
644
|
+
"tfor": {
|
|
645
|
+
"short_name": "transformant",
|
|
646
|
+
"description": (
|
|
647
|
+
"What caused the cell line to be transformed: generally a "
|
|
648
|
+
"virus (with a cross-reference to NCBI taxon identifier), "
|
|
649
|
+
"a chemical compound (with a cross-reference to ChEBI) or "
|
|
650
|
+
"a form of irradiation (with a cross-reference to NCIt)."
|
|
651
|
+
),
|
|
652
|
+
"keywords": [
|
|
653
|
+
"transformant",
|
|
654
|
+
"transformation",
|
|
655
|
+
"virus",
|
|
656
|
+
"chemical",
|
|
657
|
+
"irradiation",
|
|
658
|
+
],
|
|
659
|
+
},
|
|
660
|
+
"vir": {
|
|
661
|
+
"short_name": "virology",
|
|
662
|
+
"description": (
|
|
663
|
+
"Susceptibility of the cell line to viral infection, "
|
|
664
|
+
"presence of integrated viruses or any other "
|
|
665
|
+
"virology-related information."
|
|
666
|
+
),
|
|
667
|
+
"keywords": [
|
|
668
|
+
"virology",
|
|
669
|
+
"viral",
|
|
670
|
+
"virus",
|
|
671
|
+
"susceptibility",
|
|
672
|
+
"infection",
|
|
673
|
+
],
|
|
674
|
+
},
|
|
675
|
+
"cc": {
|
|
676
|
+
"short_name": "-",
|
|
677
|
+
"description": (
|
|
678
|
+
"Comment(s). Any content described in fields "
|
|
679
|
+
"genome-ancestry, hla, registration, sequence-variation, "
|
|
680
|
+
"anecdotal, biotechnology, breed, caution, "
|
|
681
|
+
"characteristics, discontinued, donor-info, "
|
|
682
|
+
"doubling-time, from, group, karyotype, knockout, "
|
|
683
|
+
"miscellaneous, misspelling, mab-isotype, mab-target, "
|
|
684
|
+
"msi, omics, population, problematic, resistance, "
|
|
685
|
+
"senescence, transfected, transformant, virology."
|
|
686
|
+
),
|
|
687
|
+
"keywords": ["comment", "note", "remark", "observation"],
|
|
688
|
+
},
|
|
689
|
+
"str": {
|
|
690
|
+
"short_name": "-",
|
|
691
|
+
"description": "Short tandem repeat profile.",
|
|
692
|
+
"keywords": [
|
|
693
|
+
"str",
|
|
694
|
+
"short tandem repeat",
|
|
695
|
+
"microsatellite",
|
|
696
|
+
"profile",
|
|
697
|
+
],
|
|
698
|
+
},
|
|
699
|
+
"di": {
|
|
700
|
+
"short_name": "-",
|
|
701
|
+
"description": (
|
|
702
|
+
"Disease(s) suffered by the individual from which the "
|
|
703
|
+
"cell line originated with its NCI Thesaurus or ORDO "
|
|
704
|
+
"identifier."
|
|
705
|
+
),
|
|
706
|
+
"keywords": [
|
|
707
|
+
"disease",
|
|
708
|
+
"condition",
|
|
709
|
+
"leukemia",
|
|
710
|
+
"lymphoma",
|
|
711
|
+
"carcinoma",
|
|
712
|
+
"sarcoma",
|
|
713
|
+
],
|
|
714
|
+
},
|
|
715
|
+
"din": {
|
|
716
|
+
"short_name": "-",
|
|
717
|
+
"description": (
|
|
718
|
+
"Disease(s) suffered by the individual from which the "
|
|
719
|
+
"cell line originated, restricted to diseases having a "
|
|
720
|
+
"NCI Thesaurus identifier."
|
|
721
|
+
),
|
|
722
|
+
"keywords": ["disease", "nci", "thesaurus"],
|
|
723
|
+
},
|
|
724
|
+
"dio": {
|
|
725
|
+
"short_name": "-",
|
|
726
|
+
"description": (
|
|
727
|
+
"Disease(s) suffered by the individual from which the "
|
|
728
|
+
"cell line originated, restricted to diseases having an "
|
|
729
|
+
"ORDO identifier."
|
|
730
|
+
),
|
|
731
|
+
"keywords": ["disease", "ordo"],
|
|
732
|
+
},
|
|
733
|
+
"ox": {
|
|
734
|
+
"short_name": "-",
|
|
735
|
+
"description": (
|
|
736
|
+
"Species of the individual from which the cell line "
|
|
737
|
+
"originates with its NCBI taxon identifier."
|
|
738
|
+
),
|
|
739
|
+
"keywords": [
|
|
740
|
+
"species",
|
|
741
|
+
"organism",
|
|
742
|
+
"human",
|
|
743
|
+
"mouse",
|
|
744
|
+
"rat",
|
|
745
|
+
"ncbi",
|
|
746
|
+
"taxon",
|
|
747
|
+
],
|
|
748
|
+
},
|
|
749
|
+
"sx": {
|
|
750
|
+
"short_name": "-",
|
|
751
|
+
"description": (
|
|
752
|
+
"Sex of the individual from which the cell line " "originates."
|
|
753
|
+
),
|
|
754
|
+
"keywords": [
|
|
755
|
+
"sex",
|
|
756
|
+
"gender",
|
|
757
|
+
"male",
|
|
758
|
+
"female",
|
|
759
|
+
"man",
|
|
760
|
+
"woman",
|
|
761
|
+
],
|
|
762
|
+
},
|
|
763
|
+
"ag": {
|
|
764
|
+
"short_name": "-",
|
|
765
|
+
"description": (
|
|
766
|
+
"Age at sampling time of the individual from which the "
|
|
767
|
+
"cell line was established."
|
|
768
|
+
),
|
|
769
|
+
"keywords": [
|
|
770
|
+
"age",
|
|
771
|
+
"aged",
|
|
772
|
+
"years",
|
|
773
|
+
"months",
|
|
774
|
+
"days",
|
|
775
|
+
"sampling",
|
|
776
|
+
],
|
|
777
|
+
},
|
|
778
|
+
"oi": {
|
|
779
|
+
"short_name": "-",
|
|
780
|
+
"description": (
|
|
781
|
+
"Cell line(s) originating from same individual (sister "
|
|
782
|
+
"cell lines)."
|
|
783
|
+
),
|
|
784
|
+
"keywords": [
|
|
785
|
+
"sister",
|
|
786
|
+
"sibling",
|
|
787
|
+
"related",
|
|
788
|
+
"same individual",
|
|
789
|
+
],
|
|
790
|
+
},
|
|
791
|
+
"hi": {
|
|
792
|
+
"short_name": "-",
|
|
793
|
+
"description": (
|
|
794
|
+
"Parent cell line from which the cell line originates."
|
|
795
|
+
),
|
|
796
|
+
"keywords": ["parent", "derived from"],
|
|
797
|
+
},
|
|
798
|
+
"ch": {
|
|
799
|
+
"short_name": "-",
|
|
800
|
+
"description": (
|
|
801
|
+
"Cell line(s) originated from the cell line (child cell " "lines)."
|
|
802
|
+
),
|
|
803
|
+
"keywords": ["child", "derived", "subclone"],
|
|
804
|
+
},
|
|
805
|
+
"ca": {
|
|
806
|
+
"short_name": "-",
|
|
807
|
+
"description": (
|
|
808
|
+
"Category to which a cell line belongs, one of 14 defined "
|
|
809
|
+
"terms. Example: cancer cell line, hybridoma, transformed "
|
|
810
|
+
"cell line."
|
|
811
|
+
),
|
|
812
|
+
"keywords": [
|
|
813
|
+
"category",
|
|
814
|
+
"cancer cell line",
|
|
815
|
+
"hybridoma",
|
|
816
|
+
"transformed",
|
|
817
|
+
"primary",
|
|
818
|
+
"immortalized",
|
|
819
|
+
],
|
|
820
|
+
},
|
|
821
|
+
"dt": {
|
|
822
|
+
"short_name": "-",
|
|
823
|
+
"description": (
|
|
824
|
+
"Creation date, last modification date and version number "
|
|
825
|
+
"of the cell line Cellosaurus entry."
|
|
826
|
+
),
|
|
827
|
+
"keywords": ["date", "creation", "modification", "version"],
|
|
828
|
+
},
|
|
829
|
+
"dtc": {
|
|
830
|
+
"short_name": "-",
|
|
831
|
+
"description": ("Creation date of the cell line Cellosaurus entry."),
|
|
832
|
+
"keywords": [
|
|
833
|
+
"created",
|
|
834
|
+
"creation",
|
|
835
|
+
"established",
|
|
836
|
+
"founded",
|
|
837
|
+
],
|
|
838
|
+
},
|
|
839
|
+
"dtu": {
|
|
840
|
+
"short_name": "-",
|
|
841
|
+
"description": (
|
|
842
|
+
"Last modification date of the cell line Cellosaurus " "entry."
|
|
843
|
+
),
|
|
844
|
+
"keywords": [
|
|
845
|
+
"modified",
|
|
846
|
+
"modification",
|
|
847
|
+
"updated",
|
|
848
|
+
"changed",
|
|
849
|
+
],
|
|
850
|
+
},
|
|
851
|
+
"dtv": {
|
|
852
|
+
"short_name": "-",
|
|
853
|
+
"description": ("Version number of the cell line Cellosaurus entry."),
|
|
854
|
+
"keywords": ["version", "v"],
|
|
855
|
+
},
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
# Special species mappings with NCBI taxon IDs
|
|
859
|
+
self.species_mappings = {
|
|
860
|
+
"human": "ox:9606",
|
|
861
|
+
"homo sapiens": "ox:9606",
|
|
862
|
+
"mouse": "ox:10090",
|
|
863
|
+
"mus musculus": "ox:10090",
|
|
864
|
+
"rat": "ox:10116",
|
|
865
|
+
"rattus norvegicus": "ox:10116",
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
# Boolean operator patterns
|
|
869
|
+
self.boolean_patterns = [
|
|
870
|
+
(r"\b(and|&)\b", " AND "),
|
|
871
|
+
(r"\b(or|\|)\b", " OR "),
|
|
872
|
+
(r"\b(not|!)\b", " NOT "),
|
|
873
|
+
]
|
|
874
|
+
|
|
875
|
+
# Wildcard patterns
|
|
876
|
+
self.wildcard_patterns = [
|
|
877
|
+
(r"\*", "*"),
|
|
878
|
+
(r"\?", "?"),
|
|
879
|
+
]
|
|
880
|
+
|
|
881
|
+
# Range query patterns
|
|
882
|
+
self.range_patterns = [
|
|
883
|
+
(
|
|
884
|
+
r"\b(\d+)\s*(?:to|-)\s*(\d+)\s*(hours?|days?|years?)\b",
|
|
885
|
+
r"[\1 TO \2] \3",
|
|
886
|
+
),
|
|
887
|
+
(
|
|
888
|
+
r"\bbetween\s+(\d+)\s+and\s+(\d+)\s*(hours?|days?|years?)\b",
|
|
889
|
+
r"[\1 TO \2] \3",
|
|
890
|
+
),
|
|
891
|
+
]
|
|
892
|
+
|
|
893
|
+
def run(self, arguments):
|
|
894
|
+
query = arguments.get("query")
|
|
895
|
+
include_explanation = arguments.get("include_explanation", True)
|
|
896
|
+
|
|
897
|
+
if not query:
|
|
898
|
+
return {"error": "`query` parameter is required."}
|
|
899
|
+
|
|
900
|
+
return self._convert_query(query, include_explanation)
|
|
901
|
+
|
|
902
|
+
def _calculate_similarity(self, term: str, text: str) -> float:
|
|
903
|
+
"""
|
|
904
|
+
Calculate similarity between a term and text using SequenceMatcher.
|
|
905
|
+
"""
|
|
906
|
+
return SequenceMatcher(None, term.lower(), text.lower()).ratio()
|
|
907
|
+
|
|
908
|
+
def _map_term_to_field(self, term: str) -> List[Tuple[str, float, str]]:
|
|
909
|
+
"""
|
|
910
|
+
Map a natural language term to Cellosaurus fields based on semantic
|
|
911
|
+
similarity.
|
|
912
|
+
"""
|
|
913
|
+
matches = []
|
|
914
|
+
term_lower = term.lower()
|
|
915
|
+
|
|
916
|
+
# Direct field tag matches
|
|
917
|
+
if term_lower in self.cellosaurus_fields:
|
|
918
|
+
matches.append((term_lower, 1.0, "direct_field_tag"))
|
|
919
|
+
|
|
920
|
+
# Species mappings
|
|
921
|
+
if term_lower in self.species_mappings:
|
|
922
|
+
field_tag = self.species_mappings[term_lower].split(":")[0]
|
|
923
|
+
matches.append((field_tag, 1.0, "species_mapping"))
|
|
924
|
+
|
|
925
|
+
# Keyword matching
|
|
926
|
+
for field_tag, field_info in self.cellosaurus_fields.items():
|
|
927
|
+
# Check keywords
|
|
928
|
+
for keyword in field_info["keywords"]:
|
|
929
|
+
if keyword.lower() in term_lower or term_lower in keyword.lower():
|
|
930
|
+
similarity = self._calculate_similarity(term, keyword)
|
|
931
|
+
matches.append((field_tag, similarity, "keyword_match:" + keyword))
|
|
932
|
+
|
|
933
|
+
# Check description similarity
|
|
934
|
+
desc_similarity = self._calculate_similarity(
|
|
935
|
+
term, field_info["description"]
|
|
936
|
+
)
|
|
937
|
+
if desc_similarity > 0.3: # Threshold for description matching
|
|
938
|
+
matches.append((field_tag, desc_similarity, "description_match"))
|
|
939
|
+
|
|
940
|
+
# Check short name similarity
|
|
941
|
+
if field_info["short_name"] != "-":
|
|
942
|
+
short_similarity = self._calculate_similarity(
|
|
943
|
+
term, field_info["short_name"]
|
|
944
|
+
)
|
|
945
|
+
if short_similarity > 0.3:
|
|
946
|
+
matches.append(
|
|
947
|
+
(
|
|
948
|
+
field_tag,
|
|
949
|
+
short_similarity,
|
|
950
|
+
"short_name_match:" + field_info["short_name"],
|
|
951
|
+
)
|
|
952
|
+
)
|
|
953
|
+
|
|
954
|
+
# Sort by similarity score (highest first)
|
|
955
|
+
matches.sort(key=lambda x: x[1], reverse=True)
|
|
956
|
+
return matches
|
|
957
|
+
|
|
958
|
+
def _extract_field_terms(self, query: str) -> List[Tuple[str, str, float, str]]:
|
|
959
|
+
"""
|
|
960
|
+
Extract field-specific terms from the query using semantic mapping.
|
|
961
|
+
"""
|
|
962
|
+
terms = []
|
|
963
|
+
query_lower = query.lower()
|
|
964
|
+
|
|
965
|
+
# Split query into words and phrases
|
|
966
|
+
words = re.findall(r"\b\w+\b", query_lower)
|
|
967
|
+
|
|
968
|
+
# Also extract common phrases
|
|
969
|
+
phrases = []
|
|
970
|
+
for i in range(len(words) - 1):
|
|
971
|
+
phrases.append(f"{words[i]} {words[i+1]}")
|
|
972
|
+
|
|
973
|
+
all_terms = words + phrases
|
|
974
|
+
|
|
975
|
+
# Map each term to fields
|
|
976
|
+
for term in all_terms:
|
|
977
|
+
if len(term) < 2: # Skip very short terms
|
|
978
|
+
continue
|
|
979
|
+
|
|
980
|
+
field_matches = self._map_term_to_field(term)
|
|
981
|
+
|
|
982
|
+
# Take the best match if confidence is high enough
|
|
983
|
+
if field_matches and field_matches[0][1] > 0.4:
|
|
984
|
+
field_tag, confidence, reason = field_matches[0]
|
|
985
|
+
|
|
986
|
+
# Handle special cases
|
|
987
|
+
if field_tag == "ox" and term in self.species_mappings:
|
|
988
|
+
# Use the full species mapping (e.g., "ox:9606")
|
|
989
|
+
field_tag = self.species_mappings[term]
|
|
990
|
+
value = ""
|
|
991
|
+
else:
|
|
992
|
+
value = term
|
|
993
|
+
|
|
994
|
+
terms.append((field_tag, value, confidence, reason))
|
|
995
|
+
|
|
996
|
+
# Remove duplicates while preserving order
|
|
997
|
+
seen = set()
|
|
998
|
+
unique_terms = []
|
|
999
|
+
for field_tag, value, confidence, reason in terms:
|
|
1000
|
+
key = (field_tag, value.lower())
|
|
1001
|
+
if key not in seen:
|
|
1002
|
+
seen.add(key)
|
|
1003
|
+
unique_terms.append((field_tag, value, confidence, reason))
|
|
1004
|
+
|
|
1005
|
+
return unique_terms
|
|
1006
|
+
|
|
1007
|
+
def _apply_boolean_operators(self, query: str) -> str:
|
|
1008
|
+
"""Convert natural language boolean operators to Solr syntax."""
|
|
1009
|
+
result = query
|
|
1010
|
+
for pattern, replacement in self.boolean_patterns:
|
|
1011
|
+
result = re.sub(pattern, replacement, result, flags=re.IGNORECASE)
|
|
1012
|
+
return result
|
|
1013
|
+
|
|
1014
|
+
def _apply_range_queries(self, query: str) -> str:
|
|
1015
|
+
"""Convert natural language ranges to Solr range syntax."""
|
|
1016
|
+
result = query
|
|
1017
|
+
for pattern, replacement in self.range_patterns:
|
|
1018
|
+
result = re.sub(pattern, replacement, result, flags=re.IGNORECASE)
|
|
1019
|
+
return result
|
|
1020
|
+
|
|
1021
|
+
def _apply_wildcards(self, query: str) -> str:
|
|
1022
|
+
"""Convert natural language wildcard patterns to Solr syntax."""
|
|
1023
|
+
result = query
|
|
1024
|
+
for pattern, replacement in self.wildcard_patterns:
|
|
1025
|
+
result = re.sub(pattern, replacement, result, flags=re.IGNORECASE)
|
|
1026
|
+
return result
|
|
1027
|
+
|
|
1028
|
+
def _construct_solr_query(
|
|
1029
|
+
self, terms: List[Tuple[str, str, float, str]], original_query: str
|
|
1030
|
+
) -> str:
|
|
1031
|
+
"""Construct the final Solr query from extracted terms."""
|
|
1032
|
+
if not terms:
|
|
1033
|
+
# If no field-specific terms found, return original query as
|
|
1034
|
+
# general search
|
|
1035
|
+
return self._apply_boolean_operators(original_query.strip())
|
|
1036
|
+
|
|
1037
|
+
# Build field-specific queries
|
|
1038
|
+
field_queries = []
|
|
1039
|
+
for field_tag, value, _confidence, _reason in terms:
|
|
1040
|
+
# Handle special field mappings that already include values
|
|
1041
|
+
# (like ox:9606)
|
|
1042
|
+
if ":" in field_tag and not value:
|
|
1043
|
+
field_queries.append(field_tag)
|
|
1044
|
+
elif ":" in field_tag and value:
|
|
1045
|
+
# Handle cases like "ox:9606" with additional value
|
|
1046
|
+
field_queries.append(
|
|
1047
|
+
f"{field_tag} AND {field_tag.split(':')[0]}:{value}"
|
|
1048
|
+
)
|
|
1049
|
+
else:
|
|
1050
|
+
# Escape special characters in values
|
|
1051
|
+
escaped_value = re.sub(r'([+\-&|!(){}[\]^"~*?:\\/])', r"\\\1", value)
|
|
1052
|
+
field_queries.append(f"{field_tag}:{escaped_value}")
|
|
1053
|
+
|
|
1054
|
+
# Join with AND by default (most restrictive)
|
|
1055
|
+
if len(field_queries) == 1:
|
|
1056
|
+
return field_queries[0]
|
|
1057
|
+
else:
|
|
1058
|
+
return f"({' AND '.join(field_queries)})"
|
|
1059
|
+
|
|
1060
|
+
def _validate_solr_query(self, query: str) -> Tuple[bool, str]:
|
|
1061
|
+
"""Basic validation of Solr query syntax."""
|
|
1062
|
+
try:
|
|
1063
|
+
# Check for balanced parentheses
|
|
1064
|
+
paren_count = query.count("(") - query.count(")")
|
|
1065
|
+
if paren_count != 0:
|
|
1066
|
+
return False, f"Unbalanced parentheses in query: {query}"
|
|
1067
|
+
|
|
1068
|
+
# Check for balanced brackets in ranges
|
|
1069
|
+
bracket_count = query.count("[") - query.count("]")
|
|
1070
|
+
if bracket_count != 0:
|
|
1071
|
+
return False, f"Unbalanced brackets in range query: {query}"
|
|
1072
|
+
|
|
1073
|
+
# Check for empty field queries
|
|
1074
|
+
if re.search(r":\s*$", query):
|
|
1075
|
+
return False, f"Empty field value in query: {query}"
|
|
1076
|
+
|
|
1077
|
+
return True, "Valid Solr query"
|
|
1078
|
+
|
|
1079
|
+
except Exception as e:
|
|
1080
|
+
return False, f"Query validation error: {str(e)}"
|
|
1081
|
+
|
|
1082
|
+
def _convert_query(
|
|
1083
|
+
self, natural_query: str, include_explanation: bool = True
|
|
1084
|
+
) -> Dict[str, Any]:
|
|
1085
|
+
"""
|
|
1086
|
+
Convert natural language query to Solr syntax using systematic field
|
|
1087
|
+
mapping.
|
|
1088
|
+
"""
|
|
1089
|
+
try:
|
|
1090
|
+
# Normalize input
|
|
1091
|
+
normalized_query = natural_query.lower()
|
|
1092
|
+
# Replace common conjunctions with spaces for better term
|
|
1093
|
+
# extraction
|
|
1094
|
+
normalized_query = re.sub(
|
|
1095
|
+
r"\b(with|from|in|of|for)\b", " ", normalized_query
|
|
1096
|
+
)
|
|
1097
|
+
# Remove extra whitespace
|
|
1098
|
+
normalized_query = re.sub(r"\s+", " ", normalized_query)
|
|
1099
|
+
|
|
1100
|
+
# Apply transformations
|
|
1101
|
+
processed_query = self._apply_boolean_operators(normalized_query)
|
|
1102
|
+
processed_query = self._apply_range_queries(processed_query)
|
|
1103
|
+
processed_query = self._apply_wildcards(processed_query)
|
|
1104
|
+
|
|
1105
|
+
# Extract field-specific terms using semantic mapping
|
|
1106
|
+
terms = self._extract_field_terms(natural_query)
|
|
1107
|
+
|
|
1108
|
+
# Construct Solr query
|
|
1109
|
+
solr_query = self._construct_solr_query(terms, processed_query)
|
|
1110
|
+
|
|
1111
|
+
# Validate the query
|
|
1112
|
+
is_valid, validation_msg = self._validate_solr_query(solr_query)
|
|
1113
|
+
|
|
1114
|
+
result = {
|
|
1115
|
+
"success": True,
|
|
1116
|
+
"original_query": natural_query,
|
|
1117
|
+
"solr_query": solr_query,
|
|
1118
|
+
"is_valid": is_valid,
|
|
1119
|
+
"validation_message": validation_msg,
|
|
1120
|
+
}
|
|
1121
|
+
|
|
1122
|
+
if include_explanation:
|
|
1123
|
+
result["explanation"] = {
|
|
1124
|
+
"extracted_terms": [
|
|
1125
|
+
{
|
|
1126
|
+
"field": field_tag,
|
|
1127
|
+
"value": value,
|
|
1128
|
+
"confidence": confidence,
|
|
1129
|
+
"match_reason": reason,
|
|
1130
|
+
}
|
|
1131
|
+
for field_tag, value, confidence, reason in terms
|
|
1132
|
+
],
|
|
1133
|
+
"transformations_applied": [
|
|
1134
|
+
"boolean_operators",
|
|
1135
|
+
"range_queries",
|
|
1136
|
+
"wildcards",
|
|
1137
|
+
],
|
|
1138
|
+
"available_fields": list(self.cellosaurus_fields.keys()),
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
return result
|
|
1142
|
+
|
|
1143
|
+
except Exception as e:
|
|
1144
|
+
return {
|
|
1145
|
+
"success": False,
|
|
1146
|
+
"error": f"Query conversion failed: {e}",
|
|
1147
|
+
"original_query": natural_query,
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
@register_tool("CellosaurusGetCellLineInfoTool")
|
|
1152
|
+
class CellosaurusGetCellLineInfoTool(BaseTool):
|
|
1153
|
+
"""
|
|
1154
|
+
Tool to get detailed information about a specific cell line using its
|
|
1155
|
+
accession number.
|
|
1156
|
+
"""
|
|
1157
|
+
|
|
1158
|
+
def __init__(self, tool_config, base_url="https://api.cellosaurus.org"):
|
|
1159
|
+
super().__init__(tool_config)
|
|
1160
|
+
self.base_url = base_url
|
|
1161
|
+
self.timeout_seconds = int(os.environ.get("CELLOSAURUS_TIMEOUT", "30"))
|
|
1162
|
+
|
|
1163
|
+
def run(self, arguments):
|
|
1164
|
+
accession = arguments.get("accession")
|
|
1165
|
+
format_type = arguments.get("format", "json")
|
|
1166
|
+
fields = arguments.get("fields")
|
|
1167
|
+
|
|
1168
|
+
if not accession:
|
|
1169
|
+
return {"error": "`accession` parameter is required."}
|
|
1170
|
+
|
|
1171
|
+
return self._get_cell_line_info(accession, format_type, fields)
|
|
1172
|
+
|
|
1173
|
+
def _get_cell_line_info(self, accession, format_type, fields):
|
|
1174
|
+
"""Get detailed cell line information by accession number."""
|
|
1175
|
+
try:
|
|
1176
|
+
# Validate accession format
|
|
1177
|
+
# (Cellosaurus accessions start with CVCL_)
|
|
1178
|
+
if not accession.startswith("CVCL_"):
|
|
1179
|
+
return {
|
|
1180
|
+
"error": (
|
|
1181
|
+
"Accession must start with 'CVCL_' " "(Cellosaurus format)"
|
|
1182
|
+
)
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
# Validate format
|
|
1186
|
+
valid_formats = ["json", "xml", "txt", "fasta"]
|
|
1187
|
+
if format_type not in valid_formats:
|
|
1188
|
+
return {
|
|
1189
|
+
"error": ("Format must be one of: " f"{', '.join(valid_formats)}")
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
# Validate fields if provided
|
|
1193
|
+
if fields is not None:
|
|
1194
|
+
if not isinstance(fields, list):
|
|
1195
|
+
return {"error": "Fields must be a list of field names"}
|
|
1196
|
+
|
|
1197
|
+
# Valid Cellosaurus field tags
|
|
1198
|
+
valid_fields = {
|
|
1199
|
+
"id",
|
|
1200
|
+
"sy",
|
|
1201
|
+
"idsy",
|
|
1202
|
+
"ac",
|
|
1203
|
+
"acas",
|
|
1204
|
+
"dr",
|
|
1205
|
+
"ref",
|
|
1206
|
+
"rx",
|
|
1207
|
+
"ra",
|
|
1208
|
+
"rt",
|
|
1209
|
+
"rl",
|
|
1210
|
+
"ww",
|
|
1211
|
+
"anc",
|
|
1212
|
+
"hla",
|
|
1213
|
+
"reg",
|
|
1214
|
+
"var",
|
|
1215
|
+
"anec",
|
|
1216
|
+
"biot",
|
|
1217
|
+
"breed",
|
|
1218
|
+
"caution",
|
|
1219
|
+
"cell",
|
|
1220
|
+
"char",
|
|
1221
|
+
"donor",
|
|
1222
|
+
"site",
|
|
1223
|
+
"disc",
|
|
1224
|
+
"time",
|
|
1225
|
+
"from",
|
|
1226
|
+
"group",
|
|
1227
|
+
"kar",
|
|
1228
|
+
"ko",
|
|
1229
|
+
"msi",
|
|
1230
|
+
"misc",
|
|
1231
|
+
"miss",
|
|
1232
|
+
"mabi",
|
|
1233
|
+
"mabt",
|
|
1234
|
+
"omics",
|
|
1235
|
+
"part",
|
|
1236
|
+
"pop",
|
|
1237
|
+
"prob",
|
|
1238
|
+
"res",
|
|
1239
|
+
"sen",
|
|
1240
|
+
"int",
|
|
1241
|
+
"tfor",
|
|
1242
|
+
"vir",
|
|
1243
|
+
"cc",
|
|
1244
|
+
"str",
|
|
1245
|
+
"di",
|
|
1246
|
+
"din",
|
|
1247
|
+
"dio",
|
|
1248
|
+
"ox",
|
|
1249
|
+
"sx",
|
|
1250
|
+
"ag",
|
|
1251
|
+
"oi",
|
|
1252
|
+
"hi",
|
|
1253
|
+
"ch",
|
|
1254
|
+
"ca",
|
|
1255
|
+
"dt",
|
|
1256
|
+
"dtc",
|
|
1257
|
+
"dtu",
|
|
1258
|
+
"dtv",
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1261
|
+
invalid_fields = set(fields) - valid_fields
|
|
1262
|
+
if invalid_fields:
|
|
1263
|
+
return {"error": f"Invalid fields: {list(invalid_fields)}"}
|
|
1264
|
+
|
|
1265
|
+
# Prepare request parameters
|
|
1266
|
+
params = {"format": format_type}
|
|
1267
|
+
if fields:
|
|
1268
|
+
params["fields"] = ",".join(fields)
|
|
1269
|
+
|
|
1270
|
+
# Make API request
|
|
1271
|
+
url = f"{self.base_url}/cell-line/{accession}"
|
|
1272
|
+
headers = {"Accept": f"application/{format_type}"}
|
|
1273
|
+
|
|
1274
|
+
resp = requests.get(
|
|
1275
|
+
url,
|
|
1276
|
+
params=params,
|
|
1277
|
+
headers=headers,
|
|
1278
|
+
timeout=self.timeout_seconds,
|
|
1279
|
+
)
|
|
1280
|
+
resp.raise_for_status()
|
|
1281
|
+
|
|
1282
|
+
# Parse response based on format
|
|
1283
|
+
if format_type == "json":
|
|
1284
|
+
data = resp.json()
|
|
1285
|
+
|
|
1286
|
+
# Extract cell line data from nested structure
|
|
1287
|
+
cell_line_data = None
|
|
1288
|
+
if isinstance(data, dict) and "Cellosaurus" in data:
|
|
1289
|
+
cellosaurus_data = data["Cellosaurus"]
|
|
1290
|
+
if (
|
|
1291
|
+
"cell-line-list" in cellosaurus_data
|
|
1292
|
+
and cellosaurus_data["cell-line-list"]
|
|
1293
|
+
):
|
|
1294
|
+
cell_line_data = cellosaurus_data["cell-line-list"][0]
|
|
1295
|
+
|
|
1296
|
+
if not cell_line_data:
|
|
1297
|
+
return {
|
|
1298
|
+
"error": (
|
|
1299
|
+
"No cell line data found for accession " f"{accession}"
|
|
1300
|
+
)
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
# Apply field filtering if requested
|
|
1304
|
+
if fields:
|
|
1305
|
+
filtered_data = {}
|
|
1306
|
+
for field in fields:
|
|
1307
|
+
if field in cell_line_data:
|
|
1308
|
+
filtered_data[field] = cell_line_data[field]
|
|
1309
|
+
cell_line_data = filtered_data
|
|
1310
|
+
|
|
1311
|
+
return {
|
|
1312
|
+
"success": True,
|
|
1313
|
+
"accession": accession,
|
|
1314
|
+
"data": cell_line_data,
|
|
1315
|
+
"format": format_type,
|
|
1316
|
+
}
|
|
1317
|
+
else:
|
|
1318
|
+
# For non-JSON formats, return the raw content
|
|
1319
|
+
return {
|
|
1320
|
+
"success": True,
|
|
1321
|
+
"accession": accession,
|
|
1322
|
+
"data": resp.text,
|
|
1323
|
+
"format": format_type,
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
except requests.HTTPError as http_err:
|
|
1327
|
+
status = getattr(http_err.response, "status_code", None)
|
|
1328
|
+
if status == 404:
|
|
1329
|
+
return {"error": f"Cell line with accession {accession} not found"}
|
|
1330
|
+
return {"error": f"HTTP {status}: {http_err}"}
|
|
1331
|
+
except Exception as e:
|
|
1332
|
+
return {"error": str(e)}
|