tooluniverse 0.2.0__py3-none-any.whl → 1.0.1__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 +340 -4
- tooluniverse/admetai_tool.py +84 -0
- tooluniverse/agentic_tool.py +563 -0
- tooluniverse/alphafold_tool.py +96 -0
- tooluniverse/base_tool.py +129 -6
- tooluniverse/boltz_tool.py +207 -0
- tooluniverse/chem_tool.py +192 -0
- tooluniverse/compose_scripts/__init__.py +1 -0
- tooluniverse/compose_scripts/biomarker_discovery.py +293 -0
- tooluniverse/compose_scripts/comprehensive_drug_discovery.py +186 -0
- tooluniverse/compose_scripts/drug_safety_analyzer.py +89 -0
- tooluniverse/compose_scripts/literature_tool.py +34 -0
- tooluniverse/compose_scripts/output_summarizer.py +279 -0
- tooluniverse/compose_scripts/tool_description_optimizer.py +681 -0
- tooluniverse/compose_scripts/tool_discover.py +705 -0
- tooluniverse/compose_scripts/tool_graph_composer.py +448 -0
- tooluniverse/compose_tool.py +371 -0
- tooluniverse/ctg_tool.py +1002 -0
- tooluniverse/custom_tool.py +81 -0
- tooluniverse/dailymed_tool.py +108 -0
- tooluniverse/data/admetai_tools.json +155 -0
- tooluniverse/data/adverse_event_tools.json +108 -0
- tooluniverse/data/agentic_tools.json +1156 -0
- tooluniverse/data/alphafold_tools.json +87 -0
- tooluniverse/data/boltz_tools.json +9 -0
- tooluniverse/data/chembl_tools.json +16 -0
- tooluniverse/data/clinicaltrials_gov_tools.json +326 -0
- tooluniverse/data/compose_tools.json +202 -0
- tooluniverse/data/dailymed_tools.json +70 -0
- tooluniverse/data/dataset_tools.json +646 -0
- tooluniverse/data/disease_target_score_tools.json +712 -0
- tooluniverse/data/efo_tools.json +17 -0
- tooluniverse/data/embedding_tools.json +319 -0
- tooluniverse/data/enrichr_tools.json +31 -0
- tooluniverse/data/europe_pmc_tools.json +22 -0
- tooluniverse/data/expert_feedback_tools.json +10 -0
- tooluniverse/data/fda_drug_adverse_event_tools.json +491 -0
- tooluniverse/data/fda_drug_labeling_tools.json +1 -1
- tooluniverse/data/fda_drugs_with_brand_generic_names_for_tool.py +76929 -148860
- tooluniverse/data/finder_tools.json +209 -0
- tooluniverse/data/gene_ontology_tools.json +113 -0
- tooluniverse/data/gwas_tools.json +1082 -0
- tooluniverse/data/hpa_tools.json +333 -0
- tooluniverse/data/humanbase_tools.json +47 -0
- tooluniverse/data/idmap_tools.json +74 -0
- tooluniverse/data/mcp_client_tools_example.json +113 -0
- tooluniverse/data/mcpautoloadertool_defaults.json +28 -0
- tooluniverse/data/medlineplus_tools.json +141 -0
- tooluniverse/data/monarch_tools.json +1 -1
- tooluniverse/data/openalex_tools.json +36 -0
- tooluniverse/data/opentarget_tools.json +1 -1
- tooluniverse/data/output_summarization_tools.json +101 -0
- tooluniverse/data/packages/bioinformatics_core_tools.json +1756 -0
- tooluniverse/data/packages/categorized_tools.txt +206 -0
- tooluniverse/data/packages/cheminformatics_tools.json +347 -0
- tooluniverse/data/packages/earth_sciences_tools.json +74 -0
- tooluniverse/data/packages/genomics_tools.json +776 -0
- tooluniverse/data/packages/image_processing_tools.json +38 -0
- tooluniverse/data/packages/machine_learning_tools.json +789 -0
- tooluniverse/data/packages/neuroscience_tools.json +62 -0
- tooluniverse/data/packages/original_tools.txt +0 -0
- tooluniverse/data/packages/physics_astronomy_tools.json +62 -0
- tooluniverse/data/packages/scientific_computing_tools.json +560 -0
- tooluniverse/data/packages/single_cell_tools.json +453 -0
- tooluniverse/data/packages/structural_biology_tools.json +396 -0
- tooluniverse/data/packages/visualization_tools.json +399 -0
- tooluniverse/data/pubchem_tools.json +215 -0
- tooluniverse/data/pubtator_tools.json +68 -0
- tooluniverse/data/rcsb_pdb_tools.json +1332 -0
- tooluniverse/data/reactome_tools.json +19 -0
- tooluniverse/data/semantic_scholar_tools.json +26 -0
- tooluniverse/data/special_tools.json +2 -25
- tooluniverse/data/tool_composition_tools.json +88 -0
- tooluniverse/data/toolfinderkeyword_defaults.json +34 -0
- tooluniverse/data/txagent_client_tools.json +9 -0
- tooluniverse/data/uniprot_tools.json +211 -0
- tooluniverse/data/url_fetch_tools.json +94 -0
- tooluniverse/data/uspto_downloader_tools.json +9 -0
- tooluniverse/data/uspto_tools.json +811 -0
- tooluniverse/data/xml_tools.json +3275 -0
- tooluniverse/dataset_tool.py +296 -0
- tooluniverse/default_config.py +165 -0
- tooluniverse/efo_tool.py +42 -0
- tooluniverse/embedding_database.py +630 -0
- tooluniverse/embedding_sync.py +396 -0
- tooluniverse/enrichr_tool.py +266 -0
- tooluniverse/europe_pmc_tool.py +52 -0
- tooluniverse/execute_function.py +1775 -95
- tooluniverse/extended_hooks.py +444 -0
- tooluniverse/gene_ontology_tool.py +194 -0
- tooluniverse/graphql_tool.py +158 -36
- tooluniverse/gwas_tool.py +358 -0
- tooluniverse/hpa_tool.py +1645 -0
- tooluniverse/humanbase_tool.py +389 -0
- tooluniverse/logging_config.py +254 -0
- tooluniverse/mcp_client_tool.py +764 -0
- tooluniverse/mcp_integration.py +413 -0
- tooluniverse/mcp_tool_registry.py +925 -0
- tooluniverse/medlineplus_tool.py +337 -0
- tooluniverse/openalex_tool.py +228 -0
- tooluniverse/openfda_adv_tool.py +283 -0
- tooluniverse/openfda_tool.py +393 -160
- tooluniverse/output_hook.py +1122 -0
- tooluniverse/package_tool.py +195 -0
- tooluniverse/pubchem_tool.py +158 -0
- tooluniverse/pubtator_tool.py +168 -0
- tooluniverse/rcsb_pdb_tool.py +38 -0
- tooluniverse/reactome_tool.py +108 -0
- tooluniverse/remote/boltz/boltz_mcp_server.py +50 -0
- tooluniverse/remote/depmap_24q2/depmap_24q2_mcp_tool.py +442 -0
- tooluniverse/remote/expert_feedback/human_expert_mcp_tools.py +2013 -0
- tooluniverse/remote/expert_feedback/simple_test.py +23 -0
- tooluniverse/remote/expert_feedback/start_web_interface.py +188 -0
- tooluniverse/remote/expert_feedback/web_only_interface.py +0 -0
- tooluniverse/remote/immune_compass/compass_tool.py +327 -0
- tooluniverse/remote/pinnacle/pinnacle_tool.py +328 -0
- tooluniverse/remote/transcriptformer/transcriptformer_tool.py +586 -0
- tooluniverse/remote/uspto_downloader/uspto_downloader_mcp_server.py +61 -0
- tooluniverse/remote/uspto_downloader/uspto_downloader_tool.py +120 -0
- tooluniverse/remote_tool.py +99 -0
- tooluniverse/restful_tool.py +53 -30
- tooluniverse/scripts/generate_tool_graph.py +408 -0
- tooluniverse/scripts/visualize_tool_graph.py +829 -0
- tooluniverse/semantic_scholar_tool.py +62 -0
- tooluniverse/smcp.py +2452 -0
- tooluniverse/smcp_server.py +975 -0
- tooluniverse/test/mcp_server_test.py +0 -0
- tooluniverse/test/test_admetai_tool.py +370 -0
- tooluniverse/test/test_agentic_tool.py +129 -0
- tooluniverse/test/test_alphafold_tool.py +71 -0
- tooluniverse/test/test_chem_tool.py +37 -0
- tooluniverse/test/test_compose_lieraturereview.py +63 -0
- tooluniverse/test/test_compose_tool.py +448 -0
- tooluniverse/test/test_dailymed.py +69 -0
- tooluniverse/test/test_dataset_tool.py +200 -0
- tooluniverse/test/test_disease_target_score.py +56 -0
- tooluniverse/test/test_drugbank_filter_examples.py +179 -0
- tooluniverse/test/test_efo.py +31 -0
- tooluniverse/test/test_enrichr_tool.py +21 -0
- tooluniverse/test/test_europe_pmc_tool.py +20 -0
- tooluniverse/test/test_fda_adv.py +95 -0
- tooluniverse/test/test_fda_drug_labeling.py +91 -0
- tooluniverse/test/test_gene_ontology_tools.py +66 -0
- tooluniverse/test/test_gwas_tool.py +139 -0
- tooluniverse/test/test_hpa.py +625 -0
- tooluniverse/test/test_humanbase_tool.py +20 -0
- tooluniverse/test/test_idmap_tools.py +61 -0
- tooluniverse/test/test_mcp_server.py +211 -0
- tooluniverse/test/test_mcp_tool.py +247 -0
- tooluniverse/test/test_medlineplus.py +220 -0
- tooluniverse/test/test_openalex_tool.py +32 -0
- tooluniverse/test/test_opentargets.py +28 -0
- tooluniverse/test/test_pubchem_tool.py +116 -0
- tooluniverse/test/test_pubtator_tool.py +37 -0
- tooluniverse/test/test_rcsb_pdb_tool.py +86 -0
- tooluniverse/test/test_reactome.py +54 -0
- tooluniverse/test/test_semantic_scholar_tool.py +24 -0
- tooluniverse/test/test_software_tools.py +147 -0
- tooluniverse/test/test_tool_description_optimizer.py +49 -0
- tooluniverse/test/test_tool_finder.py +26 -0
- tooluniverse/test/test_tool_finder_llm.py +252 -0
- tooluniverse/test/test_tools_find.py +195 -0
- tooluniverse/test/test_uniprot_tools.py +74 -0
- tooluniverse/test/test_uspto_tool.py +72 -0
- tooluniverse/test/test_xml_tool.py +113 -0
- tooluniverse/tool_finder_embedding.py +267 -0
- tooluniverse/tool_finder_keyword.py +693 -0
- tooluniverse/tool_finder_llm.py +699 -0
- tooluniverse/tool_graph_web_ui.py +955 -0
- tooluniverse/tool_registry.py +416 -0
- tooluniverse/uniprot_tool.py +155 -0
- tooluniverse/url_tool.py +253 -0
- tooluniverse/uspto_tool.py +240 -0
- tooluniverse/utils.py +369 -41
- tooluniverse/xml_tool.py +369 -0
- tooluniverse-1.0.1.dist-info/METADATA +387 -0
- tooluniverse-1.0.1.dist-info/RECORD +182 -0
- tooluniverse-1.0.1.dist-info/entry_points.txt +9 -0
- tooluniverse/generate_mcp_tools.py +0 -113
- tooluniverse/mcp_server.py +0 -3340
- tooluniverse-0.2.0.dist-info/METADATA +0 -139
- tooluniverse-0.2.0.dist-info/RECORD +0 -21
- tooluniverse-0.2.0.dist-info/entry_points.txt +0 -4
- {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.1.dist-info}/WHEEL +0 -0
- {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.1.dist-info}/licenses/LICENSE +0 -0
- {tooluniverse-0.2.0.dist-info → tooluniverse-1.0.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"type": "PackageTool",
|
|
4
|
+
"name": "get_biopandas_info",
|
|
5
|
+
"description": "Get comprehensive information about BioPandas – pandas-based molecular structure analysis",
|
|
6
|
+
"parameter": {
|
|
7
|
+
"type": "object",
|
|
8
|
+
"properties": {
|
|
9
|
+
"include_examples": {
|
|
10
|
+
"type": "boolean",
|
|
11
|
+
"description": "Whether to include usage examples and quick start guide",
|
|
12
|
+
"default": true
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"package_name": "biopandas",
|
|
17
|
+
"local_info": {
|
|
18
|
+
"name": "BioPandas",
|
|
19
|
+
"description": "Python library for working with molecular structures in pandas DataFrames. Provides convenient tools for parsing, analyzing, and manipulating PDB and MOL2 files.",
|
|
20
|
+
"category": "Structural Biology",
|
|
21
|
+
"import_name": "biopandas",
|
|
22
|
+
"popularity": 60,
|
|
23
|
+
"keywords": [
|
|
24
|
+
"PDB files",
|
|
25
|
+
"molecular structures",
|
|
26
|
+
"protein analysis",
|
|
27
|
+
"structural biology",
|
|
28
|
+
"pandas"
|
|
29
|
+
],
|
|
30
|
+
"documentation": "http://rasbt.github.io/biopandas/",
|
|
31
|
+
"repository": "https://github.com/BioPandas/biopandas",
|
|
32
|
+
"installation": {
|
|
33
|
+
"pip": "pip install biopandas",
|
|
34
|
+
"conda": "conda install -c conda-forge biopandas"
|
|
35
|
+
},
|
|
36
|
+
"usage_example": "from biopandas.pdb import PandasPdb\n\n# Load PDB structure\nppdb = PandasPdb().fetch_pdb('4hhb') # Hemoglobin\n\n# Access atomic coordinates\nprint(ppdb.df['ATOM'].head())\n\n# Filter atoms\nca_atoms = ppdb.df['ATOM'][ppdb.df['ATOM']['atom_name'] == 'CA']\nprint(f'Number of CA atoms: {len(ca_atoms)}')\n\n# Calculate center of mass\nprint(ppdb.df['ATOM'][['x_coord', 'y_coord', 'z_coord']].mean())",
|
|
37
|
+
"quick_start": [
|
|
38
|
+
"Install: pip install biopandas",
|
|
39
|
+
"Load PDB: ppdb = PandasPdb().fetch_pdb('1abc')",
|
|
40
|
+
"Access atoms: ppdb.df['ATOM']",
|
|
41
|
+
"Filter: ppdb.df['ATOM'][condition]",
|
|
42
|
+
"Analysis: Calculate distances, angles, etc."
|
|
43
|
+
]
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "PackageTool",
|
|
48
|
+
"name": "get_openmm_info",
|
|
49
|
+
"description": "Get comprehensive information about OpenMM – molecular dynamics simulation toolkit",
|
|
50
|
+
"parameter": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"properties": {
|
|
53
|
+
"include_examples": {
|
|
54
|
+
"type": "boolean",
|
|
55
|
+
"description": "Whether to include usage examples and quick start guide",
|
|
56
|
+
"default": true
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"package_name": "openmm",
|
|
61
|
+
"local_info": {
|
|
62
|
+
"name": "OpenMM",
|
|
63
|
+
"description": "High-performance toolkit for molecular simulation. Use it as a library, application, or reference for developing your own simulation tools. Supports GPU acceleration for fast simulations.",
|
|
64
|
+
"category": "Molecular Dynamics",
|
|
65
|
+
"import_name": "openmm",
|
|
66
|
+
"popularity": 88,
|
|
67
|
+
"keywords": [
|
|
68
|
+
"molecular dynamics",
|
|
69
|
+
"simulation",
|
|
70
|
+
"GPU acceleration",
|
|
71
|
+
"force fields",
|
|
72
|
+
"protein dynamics"
|
|
73
|
+
],
|
|
74
|
+
"documentation": "http://docs.openmm.org/",
|
|
75
|
+
"repository": "https://github.com/openmm/openmm",
|
|
76
|
+
"installation": {
|
|
77
|
+
"pip": "pip install openmm",
|
|
78
|
+
"conda": "conda install -c conda-forge openmm"
|
|
79
|
+
},
|
|
80
|
+
"usage_example": "from openmm.app import *\nfrom openmm import *\nfrom openmm.unit import *\n\n# Load structure\npdb = PDBFile('input.pdb')\n\n# Create system with force field\nforcefield = ForceField('amber14-all.xml', 'amber14/tip3pfb.xml')\nsystem = forcefield.createSystem(pdb.topology, nonbondedMethod=PME)\n\n# Set up integrator and simulation\nintegrator = LangevinMiddleIntegrator(300*kelvin, 1/picosecond, 0.004*picoseconds)\nsimulation = Simulation(pdb.topology, system, integrator)\nsimulation.context.setPositions(pdb.positions)\n\n# Run simulation\nsimulation.step(10000)",
|
|
81
|
+
"quick_start": [
|
|
82
|
+
"Install: conda install -c conda-forge openmm",
|
|
83
|
+
"Load structure: pdb = PDBFile('protein.pdb')",
|
|
84
|
+
"Create system: system = forcefield.createSystem(topology)",
|
|
85
|
+
"Set integrator: integrator = LangevinMiddleIntegrator()",
|
|
86
|
+
"Run: simulation.step(n_steps)"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"type": "PackageTool",
|
|
92
|
+
"name": "get_mdanalysis_info",
|
|
93
|
+
"description": "Get comprehensive information about MDAnalysis – molecular dynamics trajectory analysis",
|
|
94
|
+
"parameter": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"properties": {
|
|
97
|
+
"info_type": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"enum": [
|
|
100
|
+
"overview",
|
|
101
|
+
"installation",
|
|
102
|
+
"usage",
|
|
103
|
+
"documentation"
|
|
104
|
+
],
|
|
105
|
+
"description": "Type of information to retrieve about MDAnalysis"
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"required": [
|
|
109
|
+
"info_type"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
"package_name": "MDAnalysis",
|
|
113
|
+
"local_info": {
|
|
114
|
+
"name": "MDAnalysis",
|
|
115
|
+
"description": "Python library for the analysis of molecular dynamics trajectories and individual protein structures. Provides a unified interface for reading and writing different MD formats.",
|
|
116
|
+
"category": "Molecular Dynamics / Structural Analysis",
|
|
117
|
+
"import_name": "MDAnalysis",
|
|
118
|
+
"popularity": 85,
|
|
119
|
+
"keywords": [
|
|
120
|
+
"molecular dynamics",
|
|
121
|
+
"trajectory analysis",
|
|
122
|
+
"protein structure",
|
|
123
|
+
"simulation analysis",
|
|
124
|
+
"structural biology"
|
|
125
|
+
],
|
|
126
|
+
"documentation": "https://docs.mdanalysis.org/",
|
|
127
|
+
"repository": "https://github.com/MDAnalysis/mdanalysis",
|
|
128
|
+
"installation": {
|
|
129
|
+
"pip": "pip install MDAnalysis",
|
|
130
|
+
"conda": "conda install -c conda-forge mdanalysis"
|
|
131
|
+
},
|
|
132
|
+
"usage_example": "import MDAnalysis as mda\nfrom MDAnalysis.analysis import distances\n\n# Load trajectory\nu = mda.Universe('topology.pdb', 'trajectory.xtc')\n\n# Select atoms\nprotein = u.select_atoms('protein')\nbackbone = u.select_atoms('backbone')\n\n# Analyze trajectory\nfor ts in u.trajectory:\n # Calculate RMSD\n rmsd = distances.distance_array(backbone.positions, backbone.positions[0])\n print(f'Frame {ts.frame}: RMSD = {rmsd.mean():.2f} Å')",
|
|
133
|
+
"quick_start": [
|
|
134
|
+
"Install: pip install MDAnalysis",
|
|
135
|
+
"Load: u = mda.Universe('topology.pdb', 'traj.xtc')",
|
|
136
|
+
"Select: protein = u.select_atoms('protein')",
|
|
137
|
+
"Analyze: Loop through trajectory frames",
|
|
138
|
+
"Calculate: distances, angles, RMSD, etc."
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"type": "PackageTool",
|
|
144
|
+
"name": "get_ase_info",
|
|
145
|
+
"description": "Get comprehensive information about ASE (Atomic Simulation Environment) – a toolkit for building, running and analysing atomistic simulations.",
|
|
146
|
+
"parameter": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"properties": {
|
|
149
|
+
"include_examples": {
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"description": "Whether to include usage examples and quick start guide",
|
|
152
|
+
"default": true
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
"package_name": "ase",
|
|
157
|
+
"local_info": {
|
|
158
|
+
"name": "ASE (Atomic Simulation Environment)",
|
|
159
|
+
"description": "Python tools and modules for setting up, manipulating, executing, visualising and analysing atomistic simulations with many external codes.",
|
|
160
|
+
"category": "AI for Science / Atomistic Simulations",
|
|
161
|
+
"import_name": "ase",
|
|
162
|
+
"popularity": 85,
|
|
163
|
+
"keywords": [
|
|
164
|
+
"atomistic simulations",
|
|
165
|
+
"density functional theory",
|
|
166
|
+
"molecular dynamics",
|
|
167
|
+
"materials",
|
|
168
|
+
"quantum chemistry"
|
|
169
|
+
],
|
|
170
|
+
"documentation": "https://wiki.fysik.dtu.dk/ase/",
|
|
171
|
+
"repository": "https://gitlab.com/ase/ase",
|
|
172
|
+
"installation": {
|
|
173
|
+
"pip": "pip install ase",
|
|
174
|
+
"conda": "conda install -c conda-forge ase"
|
|
175
|
+
},
|
|
176
|
+
"usage_example": "from ase.build import molecule\nfrom ase.calculators.emt import EMT\n\natoms = molecule('H2O')\natoms.set_calculator(EMT())\nenergy = atoms.get_potential_energy()\nprint('Energy:', energy)",
|
|
177
|
+
"quick_start": [
|
|
178
|
+
"Install: pip install ase",
|
|
179
|
+
"Build: from ase.build import molecule, bulk",
|
|
180
|
+
"Create: atoms = molecule('H2O')",
|
|
181
|
+
"Calculate: atoms.set_calculator(); energy = atoms.get_potential_energy()",
|
|
182
|
+
"Optimize: from ase.optimize import BFGS; BFGS(atoms).run()"
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"type": "PackageTool",
|
|
188
|
+
"name": "get_pyscf_info",
|
|
189
|
+
"description": "Get comprehensive information about PySCF – a versatile quantum-chemistry framework in Python.",
|
|
190
|
+
"parameter": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"properties": {
|
|
193
|
+
"include_examples": {
|
|
194
|
+
"type": "boolean",
|
|
195
|
+
"description": "Whether to include usage examples and quick start guide",
|
|
196
|
+
"default": true
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"package_name": "pyscf",
|
|
201
|
+
"local_info": {
|
|
202
|
+
"name": "PySCF",
|
|
203
|
+
"description": "Python-based Simulations of Chemistry Framework providing modular, efficient implementations of ab-initio quantum-chemistry methods.",
|
|
204
|
+
"category": "AI for Science / Quantum Chemistry",
|
|
205
|
+
"import_name": "pyscf",
|
|
206
|
+
"popularity": 75,
|
|
207
|
+
"keywords": [
|
|
208
|
+
"quantum chemistry",
|
|
209
|
+
"density functional theory",
|
|
210
|
+
"ab-initio",
|
|
211
|
+
"electronic structure",
|
|
212
|
+
"molecular orbitals"
|
|
213
|
+
],
|
|
214
|
+
"documentation": "https://pyscf.org/",
|
|
215
|
+
"repository": "https://github.com/pyscf/pyscf",
|
|
216
|
+
"installation": {
|
|
217
|
+
"pip": "pip install pyscf",
|
|
218
|
+
"conda": "conda install -c conda-forge pyscf"
|
|
219
|
+
},
|
|
220
|
+
"usage_example": "from pyscf import gto, scf\n\nmol = gto.M(atom='H 0 0 0; H 0 0 0.74', basis='sto-3g')\nmf = scf.RHF(mol)\nenergy = mf.kernel()\nprint('HF energy:', energy)",
|
|
221
|
+
"quick_start": [
|
|
222
|
+
"Install: pip install pyscf",
|
|
223
|
+
"Define molecule: mol = gto.M(atom='H 0 0 0; H 0 0 0.74')",
|
|
224
|
+
"Choose a method: scf.RHF / DFT / CCSD",
|
|
225
|
+
"Run calculation: energy = mf.kernel()",
|
|
226
|
+
"Analyse further properties: gradients, frequencies, etc."
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"type": "PackageTool",
|
|
232
|
+
"name": "get_diffdock_info",
|
|
233
|
+
"description": "Get comprehensive information about DiffDock – diffusion model for molecular docking",
|
|
234
|
+
"parameter": {
|
|
235
|
+
"type": "object",
|
|
236
|
+
"properties": {
|
|
237
|
+
"info_type": {
|
|
238
|
+
"type": "string",
|
|
239
|
+
"enum": [
|
|
240
|
+
"overview",
|
|
241
|
+
"installation",
|
|
242
|
+
"usage",
|
|
243
|
+
"documentation"
|
|
244
|
+
],
|
|
245
|
+
"description": "Type of information to retrieve about DiffDock"
|
|
246
|
+
}
|
|
247
|
+
},
|
|
248
|
+
"required": [
|
|
249
|
+
"info_type"
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
"package_name": "diffdock",
|
|
253
|
+
"local_info": {
|
|
254
|
+
"name": "DiffDock",
|
|
255
|
+
"description": "Diffusion model for molecular docking. Uses generative AI and diffusion models to predict how small molecules bind to protein targets, revolutionizing computational drug discovery with state-of-the-art accuracy.",
|
|
256
|
+
"category": "Drug Discovery / Molecular Docking",
|
|
257
|
+
"import_name": "diffdock",
|
|
258
|
+
"popularity": 85,
|
|
259
|
+
"keywords": [
|
|
260
|
+
"molecular docking",
|
|
261
|
+
"diffusion models",
|
|
262
|
+
"drug discovery",
|
|
263
|
+
"protein-ligand",
|
|
264
|
+
"generative AI"
|
|
265
|
+
],
|
|
266
|
+
"documentation": "https://github.com/gcorso/DiffDock",
|
|
267
|
+
"repository": "https://github.com/gcorso/DiffDock",
|
|
268
|
+
"installation": {
|
|
269
|
+
"pip": "pip install diffdock",
|
|
270
|
+
"conda": "conda install -c conda-forge diffdock"
|
|
271
|
+
},
|
|
272
|
+
"usage_example": "# DiffDock molecular docking simulation\n# This demonstrates the concepts and workflow\n\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom scipy.spatial.distance import cdist\nfrom sklearn.cluster import DBSCAN\nimport tempfile\nimport os\n\nprint('DiffDock - Diffusion Model for Molecular Docking')\nprint('=' * 50)\n\n# Overview of DiffDock approach\nprint('DiffDock Innovation:')\nprint('• Uses diffusion models for pose generation')\nprint('• End-to-end learning without hand-crafted features')\nprint('• Handles both rigid and flexible docking')\nprint('• State-of-the-art accuracy on benchmarks')\nprint('• Fast inference with GPU acceleration')\n\nprint('\\nKey Advantages over Traditional Docking:')\nprint('• No need for extensive sampling')\nprint('• Better handling of conformational flexibility')\nprint('• Learned representations from large datasets')\nprint('• Robust to protein structure variations')\n\n# Simulate molecular docking workflow\nprint('\\n=== Molecular Docking Simulation ===')\n\nnp.random.seed(42)\n\n# Define protein binding site\nprint('Defining protein binding site...')\nbinding_site_center = np.array([0.0, 0.0, 0.0])\nbinding_site_radius = 8.0\n\n# Generate protein surface points\nn_surface_points = 200\ntheta = np.random.uniform(0, 2*np.pi, n_surface_points)\nphi = np.random.uniform(0, np.pi, n_surface_points)\nr = np.random.uniform(5.0, 8.0, n_surface_points)\n\nprotein_surface = np.column_stack([\n r * np.sin(phi) * np.cos(theta),\n r * np.sin(phi) * np.sin(theta),\n r * np.cos(phi)\n])\n\nprint(f'Generated {n_surface_points} protein surface points')\nprint(f'Binding site radius: {binding_site_radius:.1f} Å')\n\n# Define ligand structure\nprint('\\nDefining ligand structure...')\nligand_atoms = {\n 'C1': np.array([0.0, 0.0, 0.0]),\n 'C2': np.array([1.5, 0.0, 0.0]),\n 'C3': np.array([2.2, 1.3, 0.0]),\n 'N1': np.array([1.5, 2.6, 0.0]),\n 'O1': np.array([0.0, 2.6, 0.5]),\n 'C4': np.array([-0.7, 1.3, 0.5])\n}\n\nligand_center = np.mean(list(ligand_atoms.values()), axis=0)\nligand_coords = np.array(list(ligand_atoms.values()))\nligand_coords_centered = ligand_coords - ligand_center\n\nprint(f'Ligand atoms: {len(ligand_atoms)}')\nprint(f'Ligand center: ({ligand_center[0]:.1f}, {ligand_center[1]:.1f}, {ligand_center[2]:.1f})')\nprint(f'Ligand size: {np.max(cdist(ligand_coords, ligand_coords)):.1f} Å')\n\n# Simulate diffusion-based pose generation\nprint('\\n=== Diffusion-Based Pose Generation ===')\n\ndef rotation_matrix(axis, angle):\n \"\"\"Generate rotation matrix for given axis and angle\"\"\"\n axis = axis / np.linalg.norm(axis)\n cos_angle = np.cos(angle)\n sin_angle = np.sin(angle)\n \n return (\n cos_angle * np.eye(3) +\n sin_angle * np.array([[0, -axis[2], axis[1]],\n [axis[2], 0, -axis[0]],\n [-axis[1], axis[0], 0]]) +\n (1 - cos_angle) * np.outer(axis, axis)\n )\n\ndef generate_pose(translation, rotation_axis, rotation_angle):\n \"\"\"Generate ligand pose from translation and rotation\"\"\"\n rot_matrix = rotation_matrix(rotation_axis, rotation_angle)\n rotated_ligand = np.dot(ligand_coords_centered, rot_matrix.T)\n posed_ligand = rotated_ligand + translation\n return posed_ligand\n\ndef calculate_docking_score(posed_ligand, protein_surface):\n \"\"\"Calculate simplified docking score\"\"\"\n # Distance-based scoring\n min_distances = np.min(cdist(posed_ligand, protein_surface), axis=1)\n \n # Prefer poses where ligand is close to protein surface\n distance_score = -np.mean(np.maximum(0, min_distances - 2.0))\n \n # Penalty for steric clashes (too close)\n clash_penalty = -np.sum(np.maximum(0, 1.5 - min_distances)) * 10\n \n # Bonus for being in binding site\n center_distances = np.linalg.norm(posed_ligand - binding_site_center, axis=1)\n binding_site_bonus = -np.mean(np.maximum(0, center_distances - binding_site_radius))\n \n total_score = distance_score + clash_penalty + binding_site_bonus\n return total_score, distance_score, clash_penalty, binding_site_bonus\n\n# Generate multiple poses using diffusion-like sampling\nprint('Generating poses via diffusion sampling...')\nn_poses = 1000\nposes = []\nscores = []\nscore_components = []\n\nfor i in range(n_poses):\n # Sample translation (biased toward binding site)\n translation = binding_site_center + np.random.normal(0, 3.0, 3)\n \n # Sample rotation\n rotation_axis = np.random.normal(0, 1, 3)\n rotation_axis = rotation_axis / np.linalg.norm(rotation_axis)\n rotation_angle = np.random.uniform(0, 2*np.pi)\n \n # Generate pose\n posed_ligand = generate_pose(translation, rotation_axis, rotation_angle)\n \n # Calculate score\n total_score, dist_score, clash_penalty, binding_bonus = calculate_docking_score(\n posed_ligand, protein_surface)\n \n poses.append({\n 'id': i,\n 'translation': translation,\n 'rotation_axis': rotation_axis,\n 'rotation_angle': rotation_angle,\n 'coordinates': posed_ligand,\n 'score': total_score,\n 'distance_score': dist_score,\n 'clash_penalty': clash_penalty,\n 'binding_bonus': binding_bonus\n })\n \n scores.append(total_score)\n score_components.append([dist_score, clash_penalty, binding_bonus])\n\nscores = np.array(scores)\nscore_components = np.array(score_components)\n\nprint(f'Generated {n_poses} poses')\nprint(f'Score range: {np.min(scores):.2f} to {np.max(scores):.2f}')\nprint(f'Mean score: {np.mean(scores):.2f} ± {np.std(scores):.2f}')\n\n# Select top poses\ntop_indices = np.argsort(scores)[-50:] # Top 50 poses\ntop_poses = [poses[i] for i in top_indices]\ntop_scores = scores[top_indices]\n\nprint(f'\\nTop 10 pose scores: {top_scores[-10:]}')\n\n# Cluster top poses\nprint('\\n=== Pose Clustering ===')\n\n# Extract center positions of top poses\ntop_centers = np.array([np.mean(pose['coordinates'], axis=0) for pose in top_poses])\n\n# Cluster by position\ndbscan = DBSCAN(eps=2.0, min_samples=3)\ncluster_labels = dbscan.fit_predict(top_centers)\n\nn_clusters = len(set(cluster_labels)) - (1 if -1 in cluster_labels else 0)\nn_noise = list(cluster_labels).count(-1)\n\nprint(f'Found {n_clusters} pose clusters')\nprint(f'Noise points: {n_noise}')\n\n# Analyze clusters\ncluster_info = []\nfor cluster_id in range(n_clusters):\n cluster_mask = cluster_labels == cluster_id\n cluster_poses = [top_poses[i] for i in range(len(top_poses)) if cluster_mask[i]]\n cluster_scores = top_scores[cluster_mask]\n \n cluster_center = np.mean(top_centers[cluster_mask], axis=0)\n best_score = np.max(cluster_scores)\n cluster_size = len(cluster_poses)\n \n cluster_info.append({\n 'id': cluster_id,\n 'size': cluster_size,\n 'best_score': best_score,\n 'center': cluster_center,\n 'poses': cluster_poses\n })\n \n print(f' Cluster {cluster_id}: {cluster_size} poses, '\n f'best score: {best_score:.2f}, '\n f'center: ({cluster_center[0]:.1f}, {cluster_center[1]:.1f}, {cluster_center[2]:.1f})')\n\n# Select representative poses\nprint('\\n=== Representative Pose Selection ===')\n\nrepresentative_poses = []\nfor cluster in sorted(cluster_info, key=lambda x: x['best_score'], reverse=True):\n # Select best pose from each cluster\n best_pose_idx = np.argmax([pose['score'] for pose in cluster['poses']])\n best_pose = cluster['poses'][best_pose_idx]\n \n representative_poses.append({\n 'cluster_id': cluster['id'],\n 'pose': best_pose,\n 'cluster_size': cluster['size']\n })\n \n print(f'Cluster {cluster[\"id\"]}: Score {best_pose[\"score\"]:.2f}, '\n f'Position ({np.mean(best_pose[\"coordinates\"], axis=0)})')\n\n# Analyze binding mode\nprint('\\n=== Binding Mode Analysis ===')\n\nif representative_poses:\n best_overall = representative_poses[0]['pose']\n \n print(f'Best pose analysis:')\n print(f' Total score: {best_overall[\"score\"]:.2f}')\n print(f' Distance score: {best_overall[\"distance_score\"]:.2f}')\n print(f' Clash penalty: {best_overall[\"clash_penalty\"]:.2f}')\n print(f' Binding site bonus: {best_overall[\"binding_bonus\"]:.2f}')\n \n # Calculate interactions\n best_coords = best_overall['coordinates']\n distances_to_surface = cdist(best_coords, protein_surface)\n min_distances = np.min(distances_to_surface, axis=1)\n \n print(f'\\n Ligand-protein distances:')\n for i, (atom_name, distance) in enumerate(zip(ligand_atoms.keys(), min_distances)):\n print(f' {atom_name}: {distance:.2f} Å')\n \n # Identify close contacts\n close_contacts = min_distances < 3.0\n print(f'\\n Close contacts (< 3.0 Å): {np.sum(close_contacts)} atoms')\n \n # Center of mass analysis\n com_distance = np.linalg.norm(np.mean(best_coords, axis=0) - binding_site_center)\n print(f' Distance from binding site center: {com_distance:.2f} Å')\n\n# Confidence estimation\nprint('\\n=== Confidence Estimation ===')\n\n# Score-based confidence\ntop_10_scores = top_scores[-10:]\nscore_std = np.std(top_10_scores)\nscore_confidence = 1.0 / (1.0 + score_std) # Higher std = lower confidence\n\n# Clustering-based confidence\nif n_clusters > 0:\n largest_cluster_size = max(cluster['size'] for cluster in cluster_info)\n cluster_confidence = largest_cluster_size / len(top_poses)\nelse:\n cluster_confidence = 0.0\n\n# Combined confidence\noverall_confidence = (score_confidence + cluster_confidence) / 2.0\n\nprint(f'Score-based confidence: {score_confidence:.3f}')\nprint(f'Clustering confidence: {cluster_confidence:.3f}')\nprint(f'Overall confidence: {overall_confidence:.3f}')\n\n# Quality metrics\nprint('\\n=== Quality Metrics ===')\n\n# Pose diversity\nall_centers = np.array([np.mean(pose['coordinates'], axis=0) for pose in poses])\nposition_diversity = np.mean(cdist(all_centers, all_centers))\n\n# Energy landscape analysis\nenergy_range = np.max(scores) - np.min(scores)\nfunnel_quality = (np.max(scores) - np.mean(scores)) / np.std(scores)\n\nprint(f'Position diversity: {position_diversity:.2f} Å')\nprint(f'Energy range: {energy_range:.2f}')\nprint(f'Funnel quality: {funnel_quality:.2f}')\n\n# Visualization\nprint('\\n=== Visualization ===')\n\nfig = plt.figure(figsize=(16, 12))\n\n# 3D visualization of binding site and top poses\nax1 = fig.add_subplot(221, projection='3d')\n\n# Plot protein surface\nax1.scatter(protein_surface[:, 0], protein_surface[:, 1], protein_surface[:, 2], \n c='lightblue', alpha=0.3, s=20, label='Protein surface')\n\n# Plot binding site center\nax1.scatter(*binding_site_center, c='red', s=100, marker='*', label='Binding site')\n\n# Plot top poses\ncolors = plt.cm.viridis(np.linspace(0, 1, len(representative_poses)))\nfor i, rep_pose in enumerate(representative_poses[:5]): # Show top 5\n coords = rep_pose['pose']['coordinates']\n ax1.scatter(coords[:, 0], coords[:, 1], coords[:, 2], \n c=[colors[i]], s=50, alpha=0.8, label=f'Pose {i+1}')\n\nax1.set_xlabel('X (Å)')\nax1.set_ylabel('Y (Å)')\nax1.set_zlabel('Z (Å)')\nax1.set_title('3D Binding Site and Top Poses')\nax1.legend()\n\n# Score distribution\nax2 = fig.add_subplot(222)\nax2.hist(scores, bins=50, alpha=0.7, color='skyblue', edgecolor='black')\nax2.axvline(np.mean(scores), color='red', linestyle='--', label=f'Mean: {np.mean(scores):.2f}')\nax2.axvline(np.percentile(scores, 95), color='green', linestyle='--', \n label=f'95th percentile: {np.percentile(scores, 95):.2f}')\nax2.set_xlabel('Docking Score')\nax2.set_ylabel('Frequency')\nax2.set_title('Score Distribution')\nax2.legend()\n\n# Score components\nax3 = fig.add_subplot(223)\ncomponent_names = ['Distance', 'Clash Penalty', 'Binding Bonus']\nfor i, name in enumerate(component_names):\n ax3.scatter(range(len(top_poses)), score_components[top_indices, i], \n alpha=0.6, label=name, s=20)\nax3.set_xlabel('Pose Index (sorted by score)')\nax3.set_ylabel('Score Component')\nax3.set_title('Score Components for Top Poses')\nax3.legend()\nax3.grid(True, alpha=0.3)\n\n# Cluster analysis\nax4 = fig.add_subplot(224)\nif n_clusters > 0:\n for cluster_id in range(n_clusters):\n cluster_mask = cluster_labels == cluster_id\n if np.any(cluster_mask):\n cluster_centers = top_centers[cluster_mask]\n cluster_scores = top_scores[cluster_mask]\n ax4.scatter(cluster_centers[:, 0], cluster_centers[:, 1], \n c=cluster_scores, s=50, alpha=0.7, \n label=f'Cluster {cluster_id}', cmap='viridis')\n \n # Noise points\n noise_mask = cluster_labels == -1\n if np.any(noise_mask):\n ax4.scatter(top_centers[noise_mask, 0], top_centers[noise_mask, 1], \n c='gray', s=20, alpha=0.5, label='Noise')\n \n ax4.scatter(*binding_site_center[:2], c='red', s=100, marker='*', \n label='Binding site')\n \n ax4.set_xlabel('X (Å)')\n ax4.set_ylabel('Y (Å)')\n ax4.set_title('Pose Clusters (XY projection)')\n ax4.legend()\n ax4.grid(True, alpha=0.3)\n\nplt.tight_layout()\n\n# Save visualization\nwith tempfile.NamedTemporaryFile(suffix='.png', delete=False) as tmp:\n plt.savefig(tmp.name, dpi=150, bbox_inches='tight')\n viz_file = tmp.name\n\nplt.close()\nprint(f'Docking visualization saved to: {viz_file}')\n\n# Summary report\nprint('\\n' + '=' * 50)\nprint('DIFFDOCK MOLECULAR DOCKING SUMMARY')\nprint('=' * 50)\nprint(f'Poses generated: {n_poses:,}')\nprint(f'Top poses analyzed: {len(top_poses)}')\nprint(f'Pose clusters found: {n_clusters}')\nprint(f'Best docking score: {np.max(scores):.2f}')\nprint(f'Confidence score: {overall_confidence:.3f}')\nprint(f'\\nBest pose location:')\nif representative_poses:\n best_com = np.mean(representative_poses[0]['pose']['coordinates'], axis=0)\n print(f' Center of mass: ({best_com[0]:.2f}, {best_com[1]:.2f}, {best_com[2]:.2f})')\n print(f' Distance from binding site: {np.linalg.norm(best_com - binding_site_center):.2f} Å')\n\nprint(f'\\nQuality metrics:')\nprint(f' Position diversity: {position_diversity:.2f} Å')\nprint(f' Energy range: {energy_range:.2f}')\nprint(f' Funnel quality: {funnel_quality:.2f}')\n\n# Cleanup\nos.unlink(viz_file)\nprint('\\nDemo complete - temporary files cleaned up')\n\nprint('\\nDiffDock provides:')\nprint('• State-of-the-art docking accuracy')\nprint('• End-to-end deep learning approach')\nprint('• Fast GPU-accelerated inference')\nprint('• Handling of flexible ligands and proteins')\nprint('• Confidence estimation for poses')\nprint('• Integration with drug discovery pipelines')\nprint('• Pre-trained models on large datasets')\n\nprint('\\nTypical DiffDock usage:')\nprint('python -m diffdock.inference --protein protein.pdb \\\\')\nprint(' --ligand ligand.sdf --out_dir results --inference_steps 20')",
|
|
273
|
+
"quick_start": [
|
|
274
|
+
"Install: pip install diffdock",
|
|
275
|
+
"Prepare: protein.pdb and ligand.sdf files",
|
|
276
|
+
"Run: python -m diffdock.inference --protein protein.pdb",
|
|
277
|
+
"Ligand: --ligand ligand.sdf",
|
|
278
|
+
"Output: --out_dir results",
|
|
279
|
+
"Check docked poses in results directory"
|
|
280
|
+
]
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"type": "PackageTool",
|
|
285
|
+
"name": "get_descriptastorus_info",
|
|
286
|
+
"description": "Get comprehensive information about Descriptastorus – molecular descriptor calculation",
|
|
287
|
+
"parameter": {
|
|
288
|
+
"type": "object",
|
|
289
|
+
"properties": {
|
|
290
|
+
"info_type": {
|
|
291
|
+
"type": "string",
|
|
292
|
+
"enum": [
|
|
293
|
+
"overview",
|
|
294
|
+
"installation",
|
|
295
|
+
"usage",
|
|
296
|
+
"documentation"
|
|
297
|
+
],
|
|
298
|
+
"description": "Type of information to retrieve about Descriptastorus"
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
"required": [
|
|
302
|
+
"info_type"
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
"package_name": "descriptastorus",
|
|
306
|
+
"local_info": {
|
|
307
|
+
"name": "Descriptastorus",
|
|
308
|
+
"description": "High-performance molecular descriptor calculation toolkit. Provides efficient computation of molecular descriptors for cheminformatics applications including QSAR modeling and virtual screening.",
|
|
309
|
+
"category": "Cheminformatics / Molecular Descriptors",
|
|
310
|
+
"import_name": "descriptastorus",
|
|
311
|
+
"popularity": 58,
|
|
312
|
+
"keywords": [
|
|
313
|
+
"molecular descriptors",
|
|
314
|
+
"QSAR",
|
|
315
|
+
"cheminformatics",
|
|
316
|
+
"virtual screening",
|
|
317
|
+
"molecular properties"
|
|
318
|
+
],
|
|
319
|
+
"documentation": "https://github.com/bp-kelley/descriptastorus",
|
|
320
|
+
"repository": "https://github.com/bp-kelley/descriptastorus",
|
|
321
|
+
"installation": {
|
|
322
|
+
"pip": "pip install descriptastorus",
|
|
323
|
+
"conda": "conda install -c conda-forge descriptastorus"
|
|
324
|
+
},
|
|
325
|
+
"usage_example": "from descriptastorus.descriptors import rdDescriptors, rdNormalizedDescriptors\nfrom rdkit import Chem\nimport pandas as pd\n\n# Sample molecules (SMILES)\nsmiles_list = [\n 'CCO', # Ethanol\n 'CC(C)O', # Isopropanol\n 'c1ccccc1', # Benzene\n 'CCN(CC)CC', # Triethylamine\n 'CC(=O)O' # Acetic acid\n]\n\n# Convert to molecule objects\nmols = [Chem.MolFromSmiles(smi) for smi in smiles_list]\nvalid_mols = [mol for mol in mols if mol is not None]\n\nprint(f'Processing {len(valid_mols)} valid molecules')\n\n# Initialize descriptor calculator\ngenerator = rdNormalizedDescriptors.RDKit2DNormalized()\n\n# Calculate descriptors\ndescriptors = []\nfor i, mol in enumerate(valid_mols):\n desc = generator.process(smiles_list[i])[1:] # Skip first element (SMILES)\n descriptors.append(desc)\n\n# Get descriptor names\ndesc_names = generator.columns[1:] # Skip SMILES column\n\n# Create DataFrame\ndf = pd.DataFrame(descriptors, columns=desc_names, index=smiles_list[:len(valid_mols)])\n\nprint(f'Calculated {len(desc_names)} descriptors')\nprint(f'DataFrame shape: {df.shape}')\nprint('\\nFirst 5 descriptors for each molecule:')\nprint(df.iloc[:, :5])\n\n# Example analysis\nprint(f'\\nMolecular weight range: {df[\"MolWt\"].min():.2f} - {df[\"MolWt\"].max():.2f}')\nprint(f'LogP range: {df[\"MolLogP\"].min():.2f} - {df[\"MolLogP\"].max():.2f}')\n\n# Filter descriptors by variance (remove low-variance descriptors)\nvariances = df.var()\nhigh_var_descriptors = variances[variances > 0.01].index\nprint(f'High-variance descriptors: {len(high_var_descriptors)}')",
|
|
326
|
+
"quick_start": [
|
|
327
|
+
"Install: pip install descriptastorus",
|
|
328
|
+
"Import: from descriptastorus.descriptors import rdNormalizedDescriptors",
|
|
329
|
+
"Initialize: generator = rdNormalizedDescriptors.RDKit2DNormalized()",
|
|
330
|
+
"Calculate: descriptors = generator.process(smiles)",
|
|
331
|
+
"Get names: desc_names = generator.columns",
|
|
332
|
+
"Use for QSAR modeling or similarity analysis"
|
|
333
|
+
]
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"type": "PackageTool",
|
|
338
|
+
"name": "get_mdtraj_info",
|
|
339
|
+
"description": "Get information about the mdtraj package. Modern library for molecular dynamics trajectory analysis",
|
|
340
|
+
"package_name": "mdtraj",
|
|
341
|
+
"parameter": {
|
|
342
|
+
"type": "object",
|
|
343
|
+
"properties": {},
|
|
344
|
+
"required": []
|
|
345
|
+
},
|
|
346
|
+
"required": []
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"type": "PackageTool",
|
|
350
|
+
"name": "get_nglview_info",
|
|
351
|
+
"description": "Get information about the nglview package. Jupyter widget for molecular visualization",
|
|
352
|
+
"package_name": "nglview",
|
|
353
|
+
"parameter": {
|
|
354
|
+
"type": "object",
|
|
355
|
+
"properties": {},
|
|
356
|
+
"required": []
|
|
357
|
+
},
|
|
358
|
+
"required": []
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
"type": "PackageTool",
|
|
362
|
+
"name": "get_freesasa_info",
|
|
363
|
+
"description": "Get information about the freesasa package. Calculate solvent accessible surface areas of proteins",
|
|
364
|
+
"package_name": "freesasa",
|
|
365
|
+
"parameter": {
|
|
366
|
+
"type": "object",
|
|
367
|
+
"properties": {},
|
|
368
|
+
"required": []
|
|
369
|
+
},
|
|
370
|
+
"required": []
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"type": "PackageTool",
|
|
374
|
+
"name": "get_htmd_info",
|
|
375
|
+
"description": "Get information about the htmd package. High throughput molecular dynamics platform",
|
|
376
|
+
"package_name": "htmd",
|
|
377
|
+
"parameter": {
|
|
378
|
+
"type": "object",
|
|
379
|
+
"properties": {},
|
|
380
|
+
"required": []
|
|
381
|
+
},
|
|
382
|
+
"required": []
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"type": "PackageTool",
|
|
386
|
+
"name": "get_pyrosetta_info",
|
|
387
|
+
"description": "Get information about the pyrosetta package. Python interface to Rosetta macromolecular modeling suite",
|
|
388
|
+
"package_name": "pyrosetta",
|
|
389
|
+
"parameter": {
|
|
390
|
+
"type": "object",
|
|
391
|
+
"properties": {},
|
|
392
|
+
"required": []
|
|
393
|
+
},
|
|
394
|
+
"required": []
|
|
395
|
+
}
|
|
396
|
+
]
|