@wentorai/research-plugins 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -22
- package/curated/analysis/README.md +82 -56
- package/curated/domains/README.md +225 -69
- package/curated/literature/README.md +115 -46
- package/curated/research/README.md +106 -58
- package/curated/tools/README.md +107 -87
- package/curated/writing/README.md +92 -45
- package/mcp-configs/academic-db/alphafold-mcp.json +20 -0
- package/mcp-configs/academic-db/brightspace-mcp.json +21 -0
- package/mcp-configs/academic-db/climatiq-mcp.json +20 -0
- package/mcp-configs/academic-db/gibs-mcp.json +20 -0
- package/mcp-configs/academic-db/gis-mcp-server.json +22 -0
- package/mcp-configs/academic-db/google-earth-engine-mcp.json +21 -0
- package/mcp-configs/academic-db/m4-clinical-mcp.json +21 -0
- package/mcp-configs/academic-db/medical-mcp.json +21 -0
- package/mcp-configs/academic-db/nexonco-mcp.json +20 -0
- package/mcp-configs/academic-db/omop-mcp.json +20 -0
- package/mcp-configs/academic-db/onekgpd-mcp.json +20 -0
- package/mcp-configs/academic-db/openedu-mcp.json +20 -0
- package/mcp-configs/academic-db/opengenes-mcp.json +20 -0
- package/mcp-configs/academic-db/openstax-mcp.json +21 -0
- package/mcp-configs/academic-db/openstreetmap-mcp.json +21 -0
- package/mcp-configs/academic-db/opentargets-mcp.json +21 -0
- package/mcp-configs/academic-db/pdb-mcp.json +21 -0
- package/mcp-configs/academic-db/smithsonian-mcp.json +20 -0
- package/mcp-configs/ai-platform/magi-researchers.json +21 -0
- package/mcp-configs/ai-platform/mcp-academic-researcher.json +22 -0
- package/mcp-configs/ai-platform/open-paper-machine.json +21 -0
- package/mcp-configs/ai-platform/paper-intelligence.json +21 -0
- package/mcp-configs/ai-platform/paper-reader.json +21 -0
- package/mcp-configs/ai-platform/paperdebugger.json +21 -0
- package/mcp-configs/browser/exa-mcp.json +20 -0
- package/mcp-configs/browser/mcp-searxng.json +21 -0
- package/mcp-configs/browser/mcp-webresearch.json +20 -0
- package/mcp-configs/cloud-docs/confluence-mcp.json +37 -0
- package/mcp-configs/cloud-docs/google-drive-mcp.json +35 -0
- package/mcp-configs/cloud-docs/notion-mcp.json +29 -0
- package/mcp-configs/communication/discord-mcp.json +29 -0
- package/mcp-configs/communication/discourse-mcp.json +21 -0
- package/mcp-configs/communication/slack-mcp.json +29 -0
- package/mcp-configs/communication/telegram-mcp.json +28 -0
- package/mcp-configs/data-platform/automl-stat-mcp.json +21 -0
- package/mcp-configs/data-platform/jefferson-stats-mcp.json +22 -0
- package/mcp-configs/data-platform/mcp-excel-server.json +21 -0
- package/mcp-configs/data-platform/mcp-stata.json +21 -0
- package/mcp-configs/data-platform/mcpstack-jupyter.json +21 -0
- package/mcp-configs/data-platform/ml-mcp.json +21 -0
- package/mcp-configs/data-platform/nasdaq-data-link-mcp.json +20 -0
- package/mcp-configs/data-platform/numpy-mcp.json +21 -0
- package/mcp-configs/database/neo4j-mcp.json +37 -0
- package/mcp-configs/database/postgres-mcp.json +28 -0
- package/mcp-configs/database/sqlite-mcp.json +29 -0
- package/mcp-configs/dev-platform/geogebra-mcp.json +21 -0
- package/mcp-configs/dev-platform/github-mcp.json +31 -0
- package/mcp-configs/dev-platform/gitlab-mcp.json +34 -0
- package/mcp-configs/dev-platform/latex-mcp-server.json +21 -0
- package/mcp-configs/dev-platform/manim-mcp.json +20 -0
- package/mcp-configs/dev-platform/mcp-echarts.json +20 -0
- package/mcp-configs/dev-platform/panel-viz-mcp.json +20 -0
- package/mcp-configs/dev-platform/paperbanana.json +20 -0
- package/mcp-configs/dev-platform/texflow-mcp.json +20 -0
- package/mcp-configs/dev-platform/texmcp.json +20 -0
- package/mcp-configs/dev-platform/typst-mcp.json +21 -0
- package/mcp-configs/dev-platform/vizro-mcp.json +20 -0
- package/mcp-configs/email/email-mcp.json +40 -0
- package/mcp-configs/email/gmail-mcp.json +37 -0
- package/mcp-configs/note-knowledge/local-faiss-mcp.json +21 -0
- package/mcp-configs/note-knowledge/mcp-memory-service.json +21 -0
- package/mcp-configs/note-knowledge/mcp-obsidian.json +23 -0
- package/mcp-configs/note-knowledge/mcp-ragdocs.json +20 -0
- package/mcp-configs/note-knowledge/mcp-summarizer.json +21 -0
- package/mcp-configs/note-knowledge/mediawiki-mcp.json +21 -0
- package/mcp-configs/note-knowledge/openzim-mcp.json +20 -0
- package/mcp-configs/note-knowledge/zettelkasten-mcp.json +21 -0
- package/mcp-configs/reference-mgr/academic-paper-mcp-http.json +20 -0
- package/mcp-configs/reference-mgr/academix.json +20 -0
- package/mcp-configs/reference-mgr/arxiv-research-mcp.json +21 -0
- package/mcp-configs/reference-mgr/google-scholar-abstract-mcp.json +19 -0
- package/mcp-configs/reference-mgr/google-scholar-mcp.json +20 -0
- package/mcp-configs/reference-mgr/mcp-paperswithcode.json +21 -0
- package/mcp-configs/reference-mgr/mcp-scholarly.json +20 -0
- package/mcp-configs/reference-mgr/mcp-simple-arxiv.json +20 -0
- package/mcp-configs/reference-mgr/mcp-simple-pubmed.json +20 -0
- package/mcp-configs/reference-mgr/mcp-zotero.json +21 -0
- package/mcp-configs/reference-mgr/mendeley-mcp.json +20 -0
- package/mcp-configs/reference-mgr/ncbi-mcp-server.json +22 -0
- package/mcp-configs/reference-mgr/onecite.json +21 -0
- package/mcp-configs/reference-mgr/paper-search-mcp.json +21 -0
- package/mcp-configs/reference-mgr/pubmed-search-mcp.json +21 -0
- package/mcp-configs/reference-mgr/scholar-mcp.json +21 -0
- package/mcp-configs/reference-mgr/scholar-multi-mcp.json +21 -0
- package/mcp-configs/reference-mgr/seerai.json +21 -0
- package/mcp-configs/reference-mgr/semantic-scholar-fastmcp.json +21 -0
- package/mcp-configs/reference-mgr/sourcelibrary.json +20 -0
- package/mcp-configs/registry.json +178 -149
- package/mcp-configs/repository/dataverse-mcp.json +33 -0
- package/mcp-configs/repository/huggingface-mcp.json +29 -0
- package/openclaw.plugin.json +2 -2
- package/package.json +2 -2
- package/skills/analysis/dataviz/algorithm-visualizer-guide/SKILL.md +259 -0
- package/skills/analysis/dataviz/bokeh-visualization-guide/SKILL.md +270 -0
- package/skills/analysis/dataviz/chart-image-generator/SKILL.md +229 -0
- package/skills/analysis/dataviz/citation-map-guide/SKILL.md +184 -0
- package/skills/analysis/dataviz/d3-visualization-guide/SKILL.md +281 -0
- package/skills/analysis/dataviz/data-visualization-principles/SKILL.md +171 -0
- package/skills/analysis/dataviz/echarts-visualization-guide/SKILL.md +250 -0
- package/skills/analysis/dataviz/metabase-analytics-guide/SKILL.md +242 -0
- package/skills/analysis/dataviz/plotly-interactive-guide/SKILL.md +266 -0
- package/skills/analysis/dataviz/redash-analytics-guide/SKILL.md +284 -0
- package/skills/analysis/econometrics/econml-causal-guide/SKILL.md +163 -0
- package/skills/analysis/econometrics/empirical-paper-analysis/SKILL.md +192 -0
- package/skills/analysis/econometrics/mostly-harmless-guide/SKILL.md +139 -0
- package/skills/analysis/econometrics/panel-data-analyst/SKILL.md +259 -0
- package/skills/analysis/econometrics/panel-data-regression-workflow/SKILL.md +267 -0
- package/skills/analysis/econometrics/python-causality-guide/SKILL.md +134 -0
- package/skills/analysis/econometrics/stata-accounting-guide/SKILL.md +269 -0
- package/skills/analysis/econometrics/stata-analyst-guide/SKILL.md +245 -0
- package/skills/analysis/econometrics/stata-reference-guide/SKILL.md +293 -0
- package/skills/analysis/statistics/data-anomaly-detection/SKILL.md +157 -0
- package/skills/analysis/statistics/general-statistics-guide/SKILL.md +226 -0
- package/skills/analysis/statistics/infiagent-benchmark-guide/SKILL.md +106 -0
- package/skills/analysis/statistics/ml-experiment-tracker/SKILL.md +212 -0
- package/skills/analysis/statistics/pywayne-statistics-guide/SKILL.md +192 -0
- package/skills/analysis/statistics/quantitative-methods-guide/SKILL.md +193 -0
- package/skills/analysis/statistics/senior-data-scientist-guide/SKILL.md +223 -0
- package/skills/analysis/wrangling/claude-data-analysis-guide/SKILL.md +100 -0
- package/skills/analysis/wrangling/csv-data-analyzer/SKILL.md +170 -0
- package/skills/analysis/wrangling/data-cleaning-pipeline/SKILL.md +266 -0
- package/skills/analysis/wrangling/data-cog-guide/SKILL.md +178 -0
- package/skills/analysis/wrangling/open-data-scientist-guide/SKILL.md +197 -0
- package/skills/analysis/wrangling/stata-data-cleaning/SKILL.md +276 -0
- package/skills/analysis/wrangling/streamline-analyst-guide/SKILL.md +119 -0
- package/skills/analysis/wrangling/survey-data-processing/SKILL.md +298 -0
- package/skills/domains/ai-ml/ai-agent-papers-guide/SKILL.md +146 -0
- package/skills/domains/ai-ml/ai-model-benchmarking/SKILL.md +209 -0
- package/skills/domains/ai-ml/annotated-dl-papers-guide/SKILL.md +159 -0
- package/skills/domains/ai-ml/anomaly-detection-papers-guide/SKILL.md +167 -0
- package/skills/domains/ai-ml/autonomous-agents-papers-guide/SKILL.md +178 -0
- package/skills/domains/ai-ml/dl-transformer-finetune/SKILL.md +239 -0
- package/skills/domains/ai-ml/domain-adaptation-papers-guide/SKILL.md +173 -0
- package/skills/domains/ai-ml/generative-ai-guide/SKILL.md +146 -0
- package/skills/domains/ai-ml/graph-learning-papers-guide/SKILL.md +125 -0
- package/skills/domains/ai-ml/huggingface-inference-guide/SKILL.md +196 -0
- package/skills/domains/ai-ml/keras-deep-learning/SKILL.md +210 -0
- package/skills/domains/ai-ml/kolmogorov-arnold-networks-guide/SKILL.md +185 -0
- package/skills/domains/ai-ml/llm-from-scratch-guide/SKILL.md +124 -0
- package/skills/domains/ai-ml/ml-pipeline-guide/SKILL.md +295 -0
- package/skills/domains/ai-ml/nlp-toolkit-guide/SKILL.md +247 -0
- package/skills/domains/ai-ml/npcpy-research-guide/SKILL.md +137 -0
- package/skills/domains/ai-ml/pytorch-guide/SKILL.md +281 -0
- package/skills/domains/ai-ml/pytorch-lightning-guide/SKILL.md +244 -0
- package/skills/domains/ai-ml/responsible-ai-guide/SKILL.md +126 -0
- package/skills/domains/ai-ml/tensorflow-guide/SKILL.md +241 -0
- package/skills/domains/ai-ml/vmas-simulator-guide/SKILL.md +129 -0
- package/skills/domains/biomedical/bioagents-guide/SKILL.md +308 -0
- package/skills/domains/biomedical/clawbio-guide/SKILL.md +167 -0
- package/skills/domains/biomedical/clinical-dialogue-agents-guide/SKILL.md +145 -0
- package/skills/domains/biomedical/ena-sequence-api/SKILL.md +175 -0
- package/skills/domains/biomedical/genomas-guide/SKILL.md +126 -0
- package/skills/domains/biomedical/genotex-benchmark-guide/SKILL.md +125 -0
- package/skills/domains/biomedical/med-researcher-guide/SKILL.md +161 -0
- package/skills/domains/biomedical/med-researcher-r1-guide/SKILL.md +146 -0
- package/skills/domains/biomedical/medgeclaw-guide/SKILL.md +345 -0
- package/skills/domains/biomedical/medical-imaging-guide/SKILL.md +305 -0
- package/skills/domains/biomedical/ncbi-blast-api/SKILL.md +195 -0
- package/skills/domains/biomedical/ncbi-datasets-api/SKILL.md +220 -0
- package/skills/domains/biomedical/quickgo-api/SKILL.md +181 -0
- package/skills/domains/business/architecture-design-guide/SKILL.md +279 -0
- package/skills/domains/business/innovation-management-guide/SKILL.md +257 -0
- package/skills/domains/business/operations-research-guide/SKILL.md +258 -0
- package/skills/domains/business/xpert-bi-guide/SKILL.md +84 -0
- package/skills/domains/chemistry/cactus-cheminformatics-guide/SKILL.md +89 -0
- package/skills/domains/chemistry/chemeagle-guide/SKILL.md +147 -0
- package/skills/domains/chemistry/chemgraph-agent-guide/SKILL.md +120 -0
- package/skills/domains/chemistry/molecular-dynamics-guide/SKILL.md +237 -0
- package/skills/domains/chemistry/pubchem-api-guide/SKILL.md +180 -0
- package/skills/domains/chemistry/spectroscopy-analysis-guide/SKILL.md +290 -0
- package/skills/domains/cs/ai-security-papers-guide/SKILL.md +103 -0
- package/skills/domains/cs/code-llm-papers-guide/SKILL.md +131 -0
- package/skills/domains/cs/distributed-systems-guide/SKILL.md +268 -0
- package/skills/domains/cs/formal-verification-guide/SKILL.md +298 -0
- package/skills/domains/cs/gaussian-splatting-papers-guide/SKILL.md +158 -0
- package/skills/domains/cs/llm-aiops-guide/SKILL.md +70 -0
- package/skills/domains/cs/software-heritage-api/SKILL.md +200 -0
- package/skills/domains/ecology/species-distribution-guide/SKILL.md +343 -0
- package/skills/domains/economics/imf-data-api-guide/SKILL.md +174 -0
- package/skills/domains/economics/nber-working-papers-api/SKILL.md +177 -0
- package/skills/domains/economics/post-labor-economics/SKILL.md +254 -0
- package/skills/domains/economics/pricing-psychology-guide/SKILL.md +273 -0
- package/skills/domains/economics/repec-economics-api/SKILL.md +188 -0
- package/skills/domains/economics/world-bank-data-guide/SKILL.md +179 -0
- package/skills/domains/education/academic-study-methods/SKILL.md +228 -0
- package/skills/domains/education/assessment-design-guide/SKILL.md +213 -0
- package/skills/domains/education/educational-research-methods/SKILL.md +179 -0
- package/skills/domains/education/edumcp-guide/SKILL.md +74 -0
- package/skills/domains/education/mooc-analytics-guide/SKILL.md +206 -0
- package/skills/domains/education/open-syllabus-api/SKILL.md +171 -0
- package/skills/domains/finance/akshare-finance-data/SKILL.md +207 -0
- package/skills/domains/finance/finsight-research-guide/SKILL.md +113 -0
- package/skills/domains/finance/options-analytics-agent-guide/SKILL.md +117 -0
- package/skills/domains/finance/portfolio-optimization-guide/SKILL.md +279 -0
- package/skills/domains/finance/risk-modeling-guide/SKILL.md +260 -0
- package/skills/domains/finance/stata-accounting-research/SKILL.md +372 -0
- package/skills/domains/geoscience/climate-modeling-guide/SKILL.md +215 -0
- package/skills/domains/geoscience/pangaea-data-api/SKILL.md +197 -0
- package/skills/domains/geoscience/satellite-remote-sensing/SKILL.md +193 -0
- package/skills/domains/geoscience/seismology-data-guide/SKILL.md +208 -0
- package/skills/domains/humanities/digital-humanities-methods/SKILL.md +232 -0
- package/skills/domains/humanities/ethical-philosophy-guide/SKILL.md +244 -0
- package/skills/domains/humanities/history-research-guide/SKILL.md +260 -0
- package/skills/domains/humanities/political-history-guide/SKILL.md +241 -0
- package/skills/domains/law/caselaw-access-api/SKILL.md +149 -0
- package/skills/domains/law/legal-agent-skills-guide/SKILL.md +132 -0
- package/skills/domains/law/legal-nlp-guide/SKILL.md +236 -0
- package/skills/domains/law/legal-research-methods/SKILL.md +190 -0
- package/skills/domains/law/opencontracts-guide/SKILL.md +168 -0
- package/skills/domains/law/patent-analysis-guide/SKILL.md +257 -0
- package/skills/domains/law/regulatory-compliance-guide/SKILL.md +267 -0
- package/skills/domains/math/lean-theorem-proving-guide/SKILL.md +140 -0
- package/skills/domains/math/symbolic-computation-guide/SKILL.md +263 -0
- package/skills/domains/math/topology-data-analysis/SKILL.md +305 -0
- package/skills/domains/pharma/clinical-trial-design-guide/SKILL.md +271 -0
- package/skills/domains/pharma/drug-target-interaction/SKILL.md +242 -0
- package/skills/domains/pharma/madd-drug-discovery-guide/SKILL.md +153 -0
- package/skills/domains/pharma/pharmacovigilance-guide/SKILL.md +216 -0
- package/skills/domains/physics/astrophysics-data-guide/SKILL.md +305 -0
- package/skills/domains/physics/particle-physics-guide/SKILL.md +287 -0
- package/skills/domains/social-science/ipums-microdata-api/SKILL.md +211 -0
- package/skills/domains/social-science/network-analysis-guide/SKILL.md +310 -0
- package/skills/domains/social-science/psychology-research-guide/SKILL.md +270 -0
- package/skills/domains/social-science/sociology-research-guide/SKILL.md +238 -0
- package/skills/domains/social-science/sociology-research-methods/SKILL.md +181 -0
- package/skills/literature/discovery/arxiv-paper-monitoring/SKILL.md +233 -0
- package/skills/literature/discovery/paper-recommendation-guide/SKILL.md +120 -0
- package/skills/literature/discovery/papers-we-love-guide/SKILL.md +169 -0
- package/skills/literature/discovery/semantic-paper-radar/SKILL.md +144 -0
- package/skills/literature/discovery/zotero-arxiv-daily-guide/SKILL.md +94 -0
- package/skills/literature/fulltext/bioc-pmc-api/SKILL.md +146 -0
- package/skills/literature/fulltext/core-api-guide/SKILL.md +144 -0
- package/skills/literature/fulltext/dataverse-api/SKILL.md +215 -0
- package/skills/literature/fulltext/hal-archive-api/SKILL.md +218 -0
- package/skills/literature/fulltext/institutional-repository-guide/SKILL.md +212 -0
- package/skills/literature/fulltext/open-access-mining-guide/SKILL.md +341 -0
- package/skills/literature/fulltext/osf-api/SKILL.md +212 -0
- package/skills/literature/fulltext/pmc-ftp-bulk-download/SKILL.md +182 -0
- package/skills/literature/fulltext/zotero-ai-butler-guide/SKILL.md +166 -0
- package/skills/literature/fulltext/zotero-scihub-guide/SKILL.md +168 -0
- package/skills/literature/metadata/academic-paper-summarizer/SKILL.md +101 -0
- package/skills/literature/metadata/bibliometrix-guide/SKILL.md +164 -0
- package/skills/literature/metadata/crossref-event-data-api/SKILL.md +183 -0
- package/skills/literature/metadata/doi-content-negotiation/SKILL.md +202 -0
- package/skills/literature/metadata/orkg-api/SKILL.md +153 -0
- package/skills/literature/metadata/plumx-metrics-api/SKILL.md +188 -0
- package/skills/literature/metadata/ror-organization-api/SKILL.md +208 -0
- package/skills/literature/metadata/sophosia-reference-guide/SKILL.md +110 -0
- package/skills/literature/metadata/viaf-authority-api/SKILL.md +209 -0
- package/skills/literature/metadata/wikidata-api-guide/SKILL.md +156 -0
- package/skills/literature/metadata/zoplicate-dedup-guide/SKILL.md +147 -0
- package/skills/literature/metadata/zotero-actions-tags-guide/SKILL.md +212 -0
- package/skills/literature/metadata/zotmoov-guide/SKILL.md +120 -0
- package/skills/literature/metadata/zutilo-guide/SKILL.md +140 -0
- package/skills/literature/search/arxiv-batch-reporting/SKILL.md +133 -0
- package/skills/literature/search/arxiv-cli-tools/SKILL.md +172 -0
- package/skills/literature/search/arxiv-osiris/SKILL.md +199 -0
- package/skills/literature/search/arxiv-paper-processor/SKILL.md +141 -0
- package/skills/literature/search/baidu-scholar-guide/SKILL.md +110 -0
- package/skills/literature/search/base-academic-search/SKILL.md +196 -0
- package/skills/literature/search/chatpaper-guide/SKILL.md +122 -0
- package/skills/literature/search/citeseerx-api/SKILL.md +183 -0
- package/skills/literature/search/deep-literature-search/SKILL.md +149 -0
- package/skills/literature/search/deepgit-search-guide/SKILL.md +147 -0
- package/skills/literature/search/eric-education-api/SKILL.md +199 -0
- package/skills/literature/search/findpapers-guide/SKILL.md +177 -0
- package/skills/literature/search/ieee-xplore-api/SKILL.md +177 -0
- package/skills/literature/search/lens-scholarly-api/SKILL.md +211 -0
- package/skills/literature/search/multi-database-literature-search/SKILL.md +198 -0
- package/skills/literature/search/open-library-api/SKILL.md +196 -0
- package/skills/literature/search/open-semantic-search-guide/SKILL.md +190 -0
- package/skills/literature/search/openaire-api/SKILL.md +141 -0
- package/skills/literature/search/paper-search-mcp-guide/SKILL.md +107 -0
- package/skills/literature/search/papers-chat-guide/SKILL.md +194 -0
- package/skills/literature/search/pasa-paper-search-guide/SKILL.md +138 -0
- package/skills/literature/search/plos-open-access-api/SKILL.md +203 -0
- package/skills/literature/search/scielo-api/SKILL.md +182 -0
- package/skills/literature/search/share-research-api/SKILL.md +129 -0
- package/skills/literature/search/worldcat-search-api/SKILL.md +224 -0
- package/skills/research/automation/ai-scientist-v2-guide/SKILL.md +284 -0
- package/skills/research/automation/aim-experiment-guide/SKILL.md +234 -0
- package/skills/research/automation/claude-academic-workflow-guide/SKILL.md +202 -0
- package/skills/research/automation/coexist-ai-guide/SKILL.md +149 -0
- package/skills/research/automation/datagen-research-guide/SKILL.md +131 -0
- package/skills/research/automation/foam-agent-guide/SKILL.md +203 -0
- package/skills/research/automation/kedro-pipeline-guide/SKILL.md +216 -0
- package/skills/research/automation/mle-agent-guide/SKILL.md +139 -0
- package/skills/research/automation/paper-to-agent-guide/SKILL.md +116 -0
- package/skills/research/automation/rd-agent-guide/SKILL.md +246 -0
- package/skills/research/automation/research-paper-orchestrator/SKILL.md +254 -0
- package/skills/research/deep-research/academic-deep-research/SKILL.md +190 -0
- package/skills/research/deep-research/auto-deep-research-guide/SKILL.md +141 -0
- package/skills/research/deep-research/cognitive-kernel-guide/SKILL.md +200 -0
- package/skills/research/deep-research/corvus-research-guide/SKILL.md +132 -0
- package/skills/research/deep-research/deep-research-pro/SKILL.md +213 -0
- package/skills/research/deep-research/deep-research-work/SKILL.md +204 -0
- package/skills/research/deep-research/deep-searcher-guide/SKILL.md +253 -0
- package/skills/research/deep-research/gpt-researcher-guide/SKILL.md +191 -0
- package/skills/research/deep-research/in-depth-research-guide/SKILL.md +205 -0
- package/skills/research/deep-research/khoj-research-guide/SKILL.md +200 -0
- package/skills/research/deep-research/kosmos-scientist-guide/SKILL.md +185 -0
- package/skills/research/deep-research/llm-scientific-discovery-guide/SKILL.md +178 -0
- package/skills/research/deep-research/local-deep-research-guide/SKILL.md +253 -0
- package/skills/research/deep-research/open-researcher-guide/SKILL.md +138 -0
- package/skills/research/deep-research/tongyi-deep-research-guide/SKILL.md +217 -0
- package/skills/research/funding/eu-horizon-guide/SKILL.md +244 -0
- package/skills/research/funding/grant-budget-guide/SKILL.md +284 -0
- package/skills/research/funding/nih-reporter-api-guide/SKILL.md +166 -0
- package/skills/research/funding/nsf-award-api-guide/SKILL.md +133 -0
- package/skills/research/methodology/academic-mentor-guide/SKILL.md +169 -0
- package/skills/research/methodology/claude-scientific-guide/SKILL.md +122 -0
- package/skills/research/methodology/deep-innovator-guide/SKILL.md +242 -0
- package/skills/research/methodology/osf-api-guide/SKILL.md +165 -0
- package/skills/research/methodology/parsifal-slr-guide/SKILL.md +154 -0
- package/skills/research/methodology/research-paper-kb/SKILL.md +263 -0
- package/skills/research/methodology/research-pipeline-units-guide/SKILL.md +169 -0
- package/skills/research/methodology/research-town-guide/SKILL.md +263 -0
- package/skills/research/methodology/slr-automation-guide/SKILL.md +235 -0
- package/skills/research/paper-review/automated-review-guide/SKILL.md +281 -0
- package/skills/research/paper-review/latte-review-guide/SKILL.md +175 -0
- package/skills/research/paper-review/paper-compare-guide/SKILL.md +238 -0
- package/skills/research/paper-review/paper-critique-framework/SKILL.md +181 -0
- package/skills/research/paper-review/paper-digest-guide/SKILL.md +240 -0
- package/skills/research/paper-review/paper-research-assistant/SKILL.md +231 -0
- package/skills/research/paper-review/research-quality-filter/SKILL.md +261 -0
- package/skills/research/paper-review/review-response-guide/SKILL.md +275 -0
- package/skills/tools/code-exec/contextplus-mcp-guide/SKILL.md +110 -0
- package/skills/tools/code-exec/google-colab-guide/SKILL.md +276 -0
- package/skills/tools/code-exec/kaggle-api-guide/SKILL.md +216 -0
- package/skills/tools/code-exec/overleaf-cli-guide/SKILL.md +279 -0
- package/skills/tools/diagram/clawphd-guide/SKILL.md +149 -0
- package/skills/tools/diagram/code-flow-visualizer/SKILL.md +197 -0
- package/skills/tools/diagram/excalidraw-diagram-guide/SKILL.md +170 -0
- package/skills/tools/diagram/json-data-visualizer/SKILL.md +270 -0
- package/skills/tools/diagram/kroki-diagram-api/SKILL.md +198 -0
- package/skills/tools/diagram/mermaid-architect-guide/SKILL.md +219 -0
- package/skills/tools/diagram/scientific-graphical-abstract/SKILL.md +201 -0
- package/skills/tools/diagram/tldraw-whiteboard-guide/SKILL.md +397 -0
- package/skills/tools/document/docsgpt-guide/SKILL.md +130 -0
- package/skills/tools/document/large-document-reader/SKILL.md +202 -0
- package/skills/tools/document/md2pdf-xelatex/SKILL.md +212 -0
- package/skills/tools/document/openpaper-guide/SKILL.md +232 -0
- package/skills/tools/document/paper-parse-guide/SKILL.md +243 -0
- package/skills/tools/document/weknora-guide/SKILL.md +216 -0
- package/skills/tools/document/zotero-addon-market-guide/SKILL.md +108 -0
- package/skills/tools/document/zotero-night-theme-guide/SKILL.md +142 -0
- package/skills/tools/document/zotero-style-guide/SKILL.md +217 -0
- package/skills/tools/knowledge-graph/citation-network-builder/SKILL.md +244 -0
- package/skills/tools/knowledge-graph/concept-map-generator/SKILL.md +284 -0
- package/skills/tools/knowledge-graph/graphiti-guide/SKILL.md +219 -0
- package/skills/tools/knowledge-graph/mimir-memory-guide/SKILL.md +135 -0
- package/skills/tools/knowledge-graph/notero-zotero-notion-guide/SKILL.md +187 -0
- package/skills/tools/knowledge-graph/open-webui-tools-guide/SKILL.md +156 -0
- package/skills/tools/knowledge-graph/openspg-guide/SKILL.md +210 -0
- package/skills/tools/knowledge-graph/paperpile-notion-guide/SKILL.md +84 -0
- package/skills/tools/knowledge-graph/zotero-markdb-connect-guide/SKILL.md +162 -0
- package/skills/tools/ocr-translate/latex-translation-guide/SKILL.md +176 -0
- package/skills/tools/ocr-translate/math-equation-renderer/SKILL.md +198 -0
- package/skills/tools/ocr-translate/pdf-math-translate-guide/SKILL.md +141 -0
- package/skills/tools/ocr-translate/zotero-pdf-translate-guide/SKILL.md +95 -0
- package/skills/tools/ocr-translate/zotero-pdf2zh-guide/SKILL.md +143 -0
- package/skills/tools/scraping/dataset-finder-guide/SKILL.md +253 -0
- package/skills/tools/scraping/easy-spider-guide/SKILL.md +250 -0
- package/skills/tools/scraping/google-scholar-scraper/SKILL.md +255 -0
- package/skills/tools/scraping/repository-harvesting-guide/SKILL.md +310 -0
- package/skills/writing/citation/academic-citation-manager/SKILL.md +314 -0
- package/skills/writing/citation/academic-citation-manager-guide/SKILL.md +182 -0
- package/skills/writing/citation/citation-assistant-skill/SKILL.md +192 -0
- package/skills/writing/citation/jabref-reference-guide/SKILL.md +127 -0
- package/skills/writing/citation/jasminum-zotero-guide/SKILL.md +103 -0
- package/skills/writing/citation/mendeley-api/SKILL.md +231 -0
- package/skills/writing/citation/obsidian-citation-guide/SKILL.md +164 -0
- package/skills/writing/citation/obsidian-zotero-guide/SKILL.md +137 -0
- package/skills/writing/citation/onecite-reference-guide/SKILL.md +168 -0
- package/skills/writing/citation/papersgpt-zotero-guide/SKILL.md +132 -0
- package/skills/writing/citation/papis-cli-guide/SKILL.md +213 -0
- package/skills/writing/citation/zotero-better-bibtex-guide/SKILL.md +107 -0
- package/skills/writing/citation/zotero-better-notes-guide/SKILL.md +121 -0
- package/skills/writing/citation/zotero-gpt-guide/SKILL.md +111 -0
- package/skills/writing/citation/zotero-mcp-guide/SKILL.md +164 -0
- package/skills/writing/citation/zotero-mdnotes-guide/SKILL.md +162 -0
- package/skills/writing/citation/zotero-reference-guide/SKILL.md +139 -0
- package/skills/writing/citation/zotero-scholar-guide/SKILL.md +294 -0
- package/skills/writing/citation/zotfile-attachment-guide/SKILL.md +140 -0
- package/skills/writing/composition/ml-paper-writing/SKILL.md +163 -0
- package/skills/writing/composition/opendraft-thesis-guide/SKILL.md +200 -0
- package/skills/writing/composition/paper-debugger-guide/SKILL.md +143 -0
- package/skills/writing/composition/paperforge-guide/SKILL.md +205 -0
- package/skills/writing/composition/research-paper-writer/SKILL.md +226 -0
- package/skills/writing/composition/scientific-writing-resources/SKILL.md +151 -0
- package/skills/writing/composition/scientific-writing-wrapper/SKILL.md +153 -0
- package/skills/writing/latex/academic-writing-latex/SKILL.md +285 -0
- package/skills/writing/latex/latex-drawing-collection/SKILL.md +154 -0
- package/skills/writing/latex/latex-templates-collection/SKILL.md +159 -0
- package/skills/writing/latex/md-to-pdf-academic/SKILL.md +230 -0
- package/skills/writing/latex/tex-render-guide/SKILL.md +243 -0
- package/skills/writing/polish/academic-tone-guide/SKILL.md +209 -0
- package/skills/writing/polish/chinese-text-humanizer/SKILL.md +140 -0
- package/skills/writing/polish/conciseness-editing-guide/SKILL.md +225 -0
- package/skills/writing/polish/paper-polish-guide/SKILL.md +160 -0
- package/skills/writing/templates/arxiv-preprint-template/SKILL.md +184 -0
- package/skills/writing/templates/elegant-paper-template/SKILL.md +141 -0
- package/skills/writing/templates/graphical-abstract-guide/SKILL.md +183 -0
- package/skills/writing/templates/novathesis-guide/SKILL.md +152 -0
- package/skills/writing/templates/scientific-article-pdf/SKILL.md +261 -0
- package/skills/writing/templates/sjtuthesis-guide/SKILL.md +197 -0
- package/skills/writing/templates/thuthesis-guide/SKILL.md +181 -0
- package/skills/literature/fulltext/repository-harvesting-guide/SKILL.md +0 -207
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: clinical-trial-design-guide
|
|
3
|
+
description: "Clinical trial methodology, biostatistics, and study design guidance"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "test-tube"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "pharma"
|
|
9
|
+
keywords: ["clinical-trial", "biostatistics", "randomization", "sample-size", "survival-analysis", "rct"]
|
|
10
|
+
source: "wentor"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Clinical Trial Design Guide
|
|
14
|
+
|
|
15
|
+
A skill for designing and analyzing clinical trials, covering study design selection, sample size calculation, randomization methods, interim analysis, survival endpoints, and regulatory considerations. Essential for pharmaceutical researchers, biostatisticians, and clinical scientists.
|
|
16
|
+
|
|
17
|
+
## Clinical Trial Phases
|
|
18
|
+
|
|
19
|
+
### Phase Overview
|
|
20
|
+
|
|
21
|
+
| Phase | Objective | Typical N | Duration | Primary Endpoints |
|
|
22
|
+
|-------|-----------|----------|----------|-------------------|
|
|
23
|
+
| Phase I | Safety, dose-finding | 20-80 | Months | MTD, DLT, PK profile |
|
|
24
|
+
| Phase II | Efficacy signal, dosing | 100-300 | 1-2 years | Response rate, biomarker |
|
|
25
|
+
| Phase III | Confirmatory efficacy | 300-3,000+ | 2-4 years | OS, PFS, clinical outcome |
|
|
26
|
+
| Phase IV | Post-marketing surveillance | 1,000+ | Ongoing | Safety, real-world effectiveness |
|
|
27
|
+
|
|
28
|
+
## Study Design Selection
|
|
29
|
+
|
|
30
|
+
### Common Designs
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Parallel Group (most common Phase III):
|
|
34
|
+
R --> Treatment A --> Outcome assessment
|
|
35
|
+
R --> Treatment B --> Outcome assessment
|
|
36
|
+
|
|
37
|
+
Crossover:
|
|
38
|
+
R --> Treatment A --> Washout --> Treatment B --> Outcome
|
|
39
|
+
R --> Treatment B --> Washout --> Treatment A --> Outcome
|
|
40
|
+
|
|
41
|
+
Factorial (2x2):
|
|
42
|
+
R --> Drug A + Drug B
|
|
43
|
+
R --> Drug A + Placebo B
|
|
44
|
+
R --> Placebo A + Drug B
|
|
45
|
+
R --> Placebo A + Placebo B
|
|
46
|
+
|
|
47
|
+
Adaptive:
|
|
48
|
+
Stage 1: Enroll n1 patients --> Interim analysis
|
|
49
|
+
Stage 2: Modify design (dose, sample size, arm dropping) --> Continue
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Design Selection Criteria
|
|
53
|
+
|
|
54
|
+
| Factor | Recommended Design |
|
|
55
|
+
|--------|-------------------|
|
|
56
|
+
| Chronic disease, stable condition | Crossover (within-subject comparison) |
|
|
57
|
+
| Acute condition, one-time treatment | Parallel group |
|
|
58
|
+
| Multiple drugs to evaluate | Factorial or multi-arm |
|
|
59
|
+
| High uncertainty in effect size | Adaptive (sample size re-estimation) |
|
|
60
|
+
| Rare disease, limited patients | Bayesian adaptive, single-arm with historical control |
|
|
61
|
+
|
|
62
|
+
## Sample Size Calculation
|
|
63
|
+
|
|
64
|
+
### Two-Sample Comparison of Means
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from scipy.stats import norm
|
|
68
|
+
import numpy as np
|
|
69
|
+
|
|
70
|
+
def sample_size_two_means(delta: float, sigma: float,
|
|
71
|
+
alpha: float = 0.05, power: float = 0.80,
|
|
72
|
+
ratio: float = 1.0) -> dict:
|
|
73
|
+
"""
|
|
74
|
+
Sample size for comparing two group means (two-sided test).
|
|
75
|
+
delta: minimum clinically important difference
|
|
76
|
+
sigma: pooled standard deviation
|
|
77
|
+
alpha: type I error rate
|
|
78
|
+
power: desired power (1 - beta)
|
|
79
|
+
ratio: allocation ratio (n2/n1)
|
|
80
|
+
"""
|
|
81
|
+
z_alpha = norm.ppf(1 - alpha / 2)
|
|
82
|
+
z_beta = norm.ppf(power)
|
|
83
|
+
effect = delta / sigma
|
|
84
|
+
|
|
85
|
+
n1 = ((z_alpha + z_beta) ** 2 * (1 + 1 / ratio)) / effect ** 2
|
|
86
|
+
n2 = ratio * n1
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
"n_per_group_1": int(np.ceil(n1)),
|
|
90
|
+
"n_per_group_2": int(np.ceil(n2)),
|
|
91
|
+
"total": int(np.ceil(n1) + np.ceil(n2)),
|
|
92
|
+
"effect_size": round(effect, 3),
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
# Example: detect 5-point difference, SD=15, 80% power
|
|
96
|
+
result = sample_size_two_means(delta=5, sigma=15)
|
|
97
|
+
print(f"Required: {result['total']} total patients")
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Sample Size for Survival Endpoints
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
def sample_size_logrank(hazard_ratio: float, alpha: float = 0.05,
|
|
104
|
+
power: float = 0.80, ratio: float = 1.0,
|
|
105
|
+
median_control: float = 12.0,
|
|
106
|
+
accrual_time: float = 24.0,
|
|
107
|
+
followup_time: float = 12.0) -> dict:
|
|
108
|
+
"""
|
|
109
|
+
Sample size for log-rank test comparing two survival curves.
|
|
110
|
+
hazard_ratio: expected HR (treatment/control), <1 means treatment better
|
|
111
|
+
median_control: median survival in control arm (months)
|
|
112
|
+
"""
|
|
113
|
+
z_alpha = norm.ppf(1 - alpha / 2)
|
|
114
|
+
z_beta = norm.ppf(power)
|
|
115
|
+
|
|
116
|
+
# Required number of events (Schoenfeld formula)
|
|
117
|
+
d = ((z_alpha + z_beta) ** 2 * (1 + ratio) ** 2) / (
|
|
118
|
+
ratio * (np.log(hazard_ratio)) ** 2
|
|
119
|
+
)
|
|
120
|
+
d = int(np.ceil(d))
|
|
121
|
+
|
|
122
|
+
# Estimate probability of event during study
|
|
123
|
+
lambda_c = np.log(2) / median_control
|
|
124
|
+
lambda_t = lambda_c * hazard_ratio
|
|
125
|
+
|
|
126
|
+
# Average probability of event (simplified uniform accrual)
|
|
127
|
+
p_event_c = 1 - np.exp(-lambda_c * followup_time)
|
|
128
|
+
p_event_t = 1 - np.exp(-lambda_t * followup_time)
|
|
129
|
+
p_event_avg = (p_event_c + ratio * p_event_t) / (1 + ratio)
|
|
130
|
+
|
|
131
|
+
n_total = int(np.ceil(d / p_event_avg))
|
|
132
|
+
|
|
133
|
+
return {
|
|
134
|
+
"events_required": d,
|
|
135
|
+
"total_patients": n_total,
|
|
136
|
+
"hazard_ratio": hazard_ratio,
|
|
137
|
+
"p_event_avg": round(p_event_avg, 3),
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Randomization Methods
|
|
142
|
+
|
|
143
|
+
### Implementation
|
|
144
|
+
|
|
145
|
+
```python
|
|
146
|
+
import random
|
|
147
|
+
|
|
148
|
+
def stratified_block_randomization(strata: list[str],
|
|
149
|
+
block_sizes: list[int] = [4, 6],
|
|
150
|
+
ratio: tuple = (1, 1),
|
|
151
|
+
seed: int = 42) -> list[str]:
|
|
152
|
+
"""
|
|
153
|
+
Stratified permuted block randomization.
|
|
154
|
+
strata: list of stratum labels for each patient (in enrollment order)
|
|
155
|
+
block_sizes: list of possible block sizes (randomly selected)
|
|
156
|
+
ratio: allocation ratio (e.g., (1,1) for 1:1, (2,1) for 2:1)
|
|
157
|
+
Returns list of treatment assignments ('A' or 'B').
|
|
158
|
+
"""
|
|
159
|
+
rng = random.Random(seed)
|
|
160
|
+
stratum_queues = {}
|
|
161
|
+
assignments = []
|
|
162
|
+
|
|
163
|
+
for stratum in strata:
|
|
164
|
+
if stratum not in stratum_queues:
|
|
165
|
+
stratum_queues[stratum] = []
|
|
166
|
+
|
|
167
|
+
if not stratum_queues[stratum]:
|
|
168
|
+
# Generate new block
|
|
169
|
+
block_size = rng.choice(block_sizes)
|
|
170
|
+
n_a = block_size * ratio[0] // sum(ratio)
|
|
171
|
+
n_b = block_size - n_a
|
|
172
|
+
block = ["A"] * n_a + ["B"] * n_b
|
|
173
|
+
rng.shuffle(block)
|
|
174
|
+
stratum_queues[stratum] = block
|
|
175
|
+
|
|
176
|
+
assignments.append(stratum_queues[stratum].pop(0))
|
|
177
|
+
|
|
178
|
+
return assignments
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Interim Analysis and Monitoring
|
|
182
|
+
|
|
183
|
+
### Group Sequential Design
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
def obrien_fleming_boundary(n_looks: int, alpha: float = 0.05) -> list[float]:
|
|
187
|
+
"""
|
|
188
|
+
Compute O'Brien-Fleming spending function boundaries.
|
|
189
|
+
Provides very conservative early stopping with near-nominal final alpha.
|
|
190
|
+
"""
|
|
191
|
+
from scipy.stats import norm
|
|
192
|
+
boundaries = []
|
|
193
|
+
for k in range(1, n_looks + 1):
|
|
194
|
+
info_fraction = k / n_looks
|
|
195
|
+
z_boundary = norm.ppf(1 - alpha / 2) / np.sqrt(info_fraction)
|
|
196
|
+
p_boundary = 2 * (1 - norm.cdf(z_boundary))
|
|
197
|
+
boundaries.append({
|
|
198
|
+
"look": k,
|
|
199
|
+
"info_fraction": round(info_fraction, 3),
|
|
200
|
+
"z_boundary": round(z_boundary, 4),
|
|
201
|
+
"p_boundary": round(p_boundary, 6),
|
|
202
|
+
})
|
|
203
|
+
return boundaries
|
|
204
|
+
|
|
205
|
+
# Example: 3 interim looks + 1 final
|
|
206
|
+
boundaries = obrien_fleming_boundary(4)
|
|
207
|
+
for b in boundaries:
|
|
208
|
+
print(f"Look {b['look']}: Z={b['z_boundary']}, p={b['p_boundary']}")
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Survival Analysis
|
|
212
|
+
|
|
213
|
+
### Kaplan-Meier and Log-Rank Test
|
|
214
|
+
|
|
215
|
+
```python
|
|
216
|
+
from lifelines import KaplanMeierFitter
|
|
217
|
+
from lifelines.statistics import logrank_test
|
|
218
|
+
|
|
219
|
+
def analyze_survival(time: pd.Series, event: pd.Series,
|
|
220
|
+
group: pd.Series) -> dict:
|
|
221
|
+
"""
|
|
222
|
+
Perform Kaplan-Meier estimation and log-rank test.
|
|
223
|
+
time: follow-up duration
|
|
224
|
+
event: 1=event occurred, 0=censored
|
|
225
|
+
group: treatment group labels
|
|
226
|
+
"""
|
|
227
|
+
groups = group.unique()
|
|
228
|
+
kmf_results = {}
|
|
229
|
+
|
|
230
|
+
for g in groups:
|
|
231
|
+
mask = group == g
|
|
232
|
+
kmf = KaplanMeierFitter()
|
|
233
|
+
kmf.fit(time[mask], event[mask], label=str(g))
|
|
234
|
+
kmf_results[g] = {
|
|
235
|
+
"median_survival": kmf.median_survival_time_,
|
|
236
|
+
"survival_at_12m": kmf.predict(12),
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
# Log-rank test
|
|
240
|
+
mask_a = group == groups[0]
|
|
241
|
+
lr = logrank_test(
|
|
242
|
+
time[mask_a], time[~mask_a],
|
|
243
|
+
event[mask_a], event[~mask_a],
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
return {
|
|
247
|
+
"group_results": kmf_results,
|
|
248
|
+
"logrank_statistic": lr.test_statistic,
|
|
249
|
+
"logrank_p_value": lr.p_value,
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Regulatory Considerations
|
|
254
|
+
|
|
255
|
+
Key regulatory documents for clinical trial design:
|
|
256
|
+
|
|
257
|
+
- **ICH E6 (R2)**: Good Clinical Practice guidelines
|
|
258
|
+
- **ICH E9 (R1)**: Statistical Principles, estimands framework
|
|
259
|
+
- **ICH E8 (R1)**: General Considerations for Clinical Studies
|
|
260
|
+
- **FDA 21 CFR Part 312**: Investigational New Drug regulations
|
|
261
|
+
- **EMA Scientific Guidelines**: Disease-specific guidance documents
|
|
262
|
+
|
|
263
|
+
## Tools and Software
|
|
264
|
+
|
|
265
|
+
- **R survival package**: Kaplan-Meier, Cox regression, log-rank test
|
|
266
|
+
- **lifelines (Python)**: Survival analysis library
|
|
267
|
+
- **gsDesign (R)**: Group sequential design and monitoring boundaries
|
|
268
|
+
- **PASS / nQuery**: Commercial sample size software
|
|
269
|
+
- **EAST (Cytel)**: Adaptive and group sequential design software
|
|
270
|
+
- **REDCap**: Electronic data capture for clinical research
|
|
271
|
+
- **ClinicalTrials.gov API**: Trial registry search and data access
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: drug-target-interaction
|
|
3
|
+
description: "Computational drug-target interaction prediction and virtual screening"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "pill"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "pharma"
|
|
9
|
+
keywords: ["drug-target", "virtual-screening", "molecular-docking", "binding-affinity", "cheminformatics"]
|
|
10
|
+
source: "wentor"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Drug-Target Interaction Prediction
|
|
14
|
+
|
|
15
|
+
A skill for computational prediction of drug-target interactions (DTI), covering molecular docking, machine learning-based binding affinity prediction, compound library screening, and target identification using cheminformatics and structural biology tools.
|
|
16
|
+
|
|
17
|
+
## Drug-Target Interaction Databases
|
|
18
|
+
|
|
19
|
+
### Key Data Resources
|
|
20
|
+
|
|
21
|
+
| Database | Content | Access |
|
|
22
|
+
|----------|---------|--------|
|
|
23
|
+
| ChEMBL | 2.4M compounds, 15M bioactivities | REST API, SQL dump |
|
|
24
|
+
| BindingDB | 2.8M binding data points | Bulk download, REST API |
|
|
25
|
+
| DrugBank | 15,000+ drug entries with targets | Academic license |
|
|
26
|
+
| PDB (Protein Data Bank) | 220,000+ 3D structures | Free download, REST API |
|
|
27
|
+
| UniProt | 250M+ protein sequences | Free, REST API |
|
|
28
|
+
| STITCH | Chemical-protein interactions | Free academic access |
|
|
29
|
+
|
|
30
|
+
### Fetching Bioactivity Data
|
|
31
|
+
|
|
32
|
+
```python
|
|
33
|
+
from chembl_webresource_client.new_client import new_client
|
|
34
|
+
|
|
35
|
+
def get_target_bioactivities(target_chembl_id: str,
|
|
36
|
+
activity_type: str = "IC50",
|
|
37
|
+
max_nm: float = 10000) -> list[dict]:
|
|
38
|
+
"""
|
|
39
|
+
Retrieve bioactivity data for a protein target from ChEMBL.
|
|
40
|
+
Returns compounds with measured binding/inhibition values.
|
|
41
|
+
"""
|
|
42
|
+
activity = new_client.activity
|
|
43
|
+
results = activity.filter(
|
|
44
|
+
target_chembl_id=target_chembl_id,
|
|
45
|
+
standard_type=activity_type,
|
|
46
|
+
standard_relation="=",
|
|
47
|
+
standard_units="nM",
|
|
48
|
+
).only([
|
|
49
|
+
"molecule_chembl_id", "canonical_smiles",
|
|
50
|
+
"standard_value", "standard_type",
|
|
51
|
+
"pchembl_value", "assay_description",
|
|
52
|
+
])
|
|
53
|
+
|
|
54
|
+
filtered = []
|
|
55
|
+
for r in results:
|
|
56
|
+
if r.get("standard_value") and float(r["standard_value"]) <= max_nm:
|
|
57
|
+
filtered.append({
|
|
58
|
+
"molecule_id": r["molecule_chembl_id"],
|
|
59
|
+
"smiles": r["canonical_smiles"],
|
|
60
|
+
"activity_type": r["standard_type"],
|
|
61
|
+
"value_nM": float(r["standard_value"]),
|
|
62
|
+
"pchembl": float(r["pchembl_value"]) if r.get("pchembl_value") else None,
|
|
63
|
+
})
|
|
64
|
+
return filtered
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Molecular Fingerprints and Descriptors
|
|
68
|
+
|
|
69
|
+
### Computing Molecular Representations
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
from rdkit import Chem
|
|
73
|
+
from rdkit.Chem import AllChem, Descriptors, rdMolDescriptors
|
|
74
|
+
import numpy as np
|
|
75
|
+
|
|
76
|
+
def compute_fingerprints(smiles_list: list[str],
|
|
77
|
+
fp_type: str = "morgan",
|
|
78
|
+
radius: int = 2,
|
|
79
|
+
n_bits: int = 2048) -> np.ndarray:
|
|
80
|
+
"""
|
|
81
|
+
Compute molecular fingerprints from SMILES strings.
|
|
82
|
+
fp_type: 'morgan' (ECFP-like), 'maccs', 'rdkit', 'topological'
|
|
83
|
+
"""
|
|
84
|
+
fps = []
|
|
85
|
+
for smi in smiles_list:
|
|
86
|
+
mol = Chem.MolFromSmiles(smi)
|
|
87
|
+
if mol is None:
|
|
88
|
+
fps.append(np.zeros(n_bits))
|
|
89
|
+
continue
|
|
90
|
+
|
|
91
|
+
if fp_type == "morgan":
|
|
92
|
+
fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=n_bits)
|
|
93
|
+
elif fp_type == "maccs":
|
|
94
|
+
fp = rdMolDescriptors.GetMACCSKeysFingerprint(mol)
|
|
95
|
+
elif fp_type == "rdkit":
|
|
96
|
+
fp = Chem.RDKFingerprint(mol, fpSize=n_bits)
|
|
97
|
+
else:
|
|
98
|
+
fp = AllChem.GetMorganFingerprintAsBitVect(mol, radius, nBits=n_bits)
|
|
99
|
+
|
|
100
|
+
arr = np.zeros(len(fp))
|
|
101
|
+
Chem.DataStructs.ConvertToNumpyArray(fp, arr)
|
|
102
|
+
fps.append(arr)
|
|
103
|
+
|
|
104
|
+
return np.array(fps)
|
|
105
|
+
|
|
106
|
+
def compute_descriptors(smiles: str) -> dict:
|
|
107
|
+
"""Compute physicochemical descriptors for a molecule."""
|
|
108
|
+
mol = Chem.MolFromSmiles(smiles)
|
|
109
|
+
if mol is None:
|
|
110
|
+
return {}
|
|
111
|
+
return {
|
|
112
|
+
"molecular_weight": Descriptors.MolWt(mol),
|
|
113
|
+
"logP": Descriptors.MolLogP(mol),
|
|
114
|
+
"hbd": Descriptors.NumHDonors(mol),
|
|
115
|
+
"hba": Descriptors.NumHAcceptors(mol),
|
|
116
|
+
"tpsa": Descriptors.TPSA(mol),
|
|
117
|
+
"rotatable_bonds": Descriptors.NumRotatableBonds(mol),
|
|
118
|
+
"aromatic_rings": Descriptors.NumAromaticRings(mol),
|
|
119
|
+
"lipinski_violations": sum([
|
|
120
|
+
Descriptors.MolWt(mol) > 500,
|
|
121
|
+
Descriptors.MolLogP(mol) > 5,
|
|
122
|
+
Descriptors.NumHDonors(mol) > 5,
|
|
123
|
+
Descriptors.NumHAcceptors(mol) > 10,
|
|
124
|
+
]),
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Machine Learning for DTI Prediction
|
|
129
|
+
|
|
130
|
+
### Binary Classification Model
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from sklearn.ensemble import RandomForestClassifier
|
|
134
|
+
from sklearn.model_selection import StratifiedKFold
|
|
135
|
+
from sklearn.metrics import roc_auc_score, average_precision_score
|
|
136
|
+
|
|
137
|
+
def train_dti_classifier(compound_fps: np.ndarray,
|
|
138
|
+
target_features: np.ndarray,
|
|
139
|
+
labels: np.ndarray) -> dict:
|
|
140
|
+
"""
|
|
141
|
+
Train a DTI classifier using compound-target pair features.
|
|
142
|
+
compound_fps: molecular fingerprints (n_samples, fp_dim)
|
|
143
|
+
target_features: protein descriptors (n_samples, target_dim)
|
|
144
|
+
labels: binary interaction labels (1=interacts, 0=no interaction)
|
|
145
|
+
"""
|
|
146
|
+
# Concatenate compound and target features
|
|
147
|
+
X = np.hstack([compound_fps, target_features])
|
|
148
|
+
y = labels
|
|
149
|
+
|
|
150
|
+
skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
|
|
151
|
+
metrics = {"auroc": [], "auprc": []}
|
|
152
|
+
|
|
153
|
+
for train_idx, test_idx in skf.split(X, y):
|
|
154
|
+
model = RandomForestClassifier(
|
|
155
|
+
n_estimators=500, max_depth=20, n_jobs=-1, random_state=42
|
|
156
|
+
)
|
|
157
|
+
model.fit(X[train_idx], y[train_idx])
|
|
158
|
+
pred_proba = model.predict_proba(X[test_idx])[:, 1]
|
|
159
|
+
|
|
160
|
+
metrics["auroc"].append(roc_auc_score(y[test_idx], pred_proba))
|
|
161
|
+
metrics["auprc"].append(average_precision_score(y[test_idx], pred_proba))
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
"mean_auroc": np.mean(metrics["auroc"]),
|
|
165
|
+
"mean_auprc": np.mean(metrics["auprc"]),
|
|
166
|
+
"model": model,
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Deep Learning Approaches
|
|
171
|
+
|
|
172
|
+
Modern DTI prediction architectures:
|
|
173
|
+
|
|
174
|
+
| Method | Compound Representation | Target Representation | Architecture |
|
|
175
|
+
|--------|------------------------|----------------------|-------------|
|
|
176
|
+
| DeepDTA | SMILES (1D CNN) | Protein sequence (1D CNN) | Concatenation + FC |
|
|
177
|
+
| GraphDTA | Molecular graph (GCN/GAT) | Protein sequence (CNN) | Graph + sequence fusion |
|
|
178
|
+
| MolTrans | SMILES (Transformer) | Protein sequence (Transformer) | Cross-attention |
|
|
179
|
+
| DrugBAN | Molecular graph | Protein graph | Bilinear attention |
|
|
180
|
+
|
|
181
|
+
## Molecular Docking
|
|
182
|
+
|
|
183
|
+
### Structure-Based Virtual Screening
|
|
184
|
+
|
|
185
|
+
```python
|
|
186
|
+
import subprocess
|
|
187
|
+
|
|
188
|
+
def run_autodock_vina(receptor_pdbqt: str, ligand_pdbqt: str,
|
|
189
|
+
center: tuple, box_size: tuple = (20, 20, 20),
|
|
190
|
+
exhaustiveness: int = 8) -> dict:
|
|
191
|
+
"""
|
|
192
|
+
Run AutoDock Vina for molecular docking.
|
|
193
|
+
receptor_pdbqt: path to prepared receptor file
|
|
194
|
+
ligand_pdbqt: path to prepared ligand file
|
|
195
|
+
center: (x, y, z) coordinates of the binding site center
|
|
196
|
+
Returns docking scores and poses.
|
|
197
|
+
"""
|
|
198
|
+
cmd = [
|
|
199
|
+
"vina",
|
|
200
|
+
"--receptor", receptor_pdbqt,
|
|
201
|
+
"--ligand", ligand_pdbqt,
|
|
202
|
+
"--center_x", str(center[0]),
|
|
203
|
+
"--center_y", str(center[1]),
|
|
204
|
+
"--center_z", str(center[2]),
|
|
205
|
+
"--size_x", str(box_size[0]),
|
|
206
|
+
"--size_y", str(box_size[1]),
|
|
207
|
+
"--size_z", str(box_size[2]),
|
|
208
|
+
"--exhaustiveness", str(exhaustiveness),
|
|
209
|
+
"--num_modes", "9",
|
|
210
|
+
]
|
|
211
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
212
|
+
# Parse output for binding affinities
|
|
213
|
+
scores = []
|
|
214
|
+
for line in result.stdout.split("\n"):
|
|
215
|
+
parts = line.split()
|
|
216
|
+
if len(parts) >= 4 and parts[0].isdigit():
|
|
217
|
+
scores.append({
|
|
218
|
+
"mode": int(parts[0]),
|
|
219
|
+
"affinity_kcal_mol": float(parts[1]),
|
|
220
|
+
"rmsd_lb": float(parts[2]),
|
|
221
|
+
"rmsd_ub": float(parts[3]),
|
|
222
|
+
})
|
|
223
|
+
return {"scores": scores, "best_affinity": scores[0]["affinity_kcal_mol"] if scores else None}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Validation and Benchmarking
|
|
227
|
+
|
|
228
|
+
Standard benchmarks for DTI prediction:
|
|
229
|
+
|
|
230
|
+
- **DUD-E**: Directory of Useful Decoys, Enhanced (102 targets, 22,886 actives)
|
|
231
|
+
- **MUV**: Maximum Unbiased Validation datasets (17 targets)
|
|
232
|
+
- **LIT-PCBA**: Large-scale confirmatory bioassay benchmark
|
|
233
|
+
- **Davis and KIBA**: Kinase binding affinity datasets for regression
|
|
234
|
+
|
|
235
|
+
## Tools and Libraries
|
|
236
|
+
|
|
237
|
+
- **RDKit**: Open-source cheminformatics toolkit
|
|
238
|
+
- **AutoDock Vina / Smina**: Molecular docking engines
|
|
239
|
+
- **OpenMM**: GPU-accelerated molecular dynamics
|
|
240
|
+
- **DeepChem**: Deep learning for drug discovery
|
|
241
|
+
- **PyMOL / ChimeraX**: Molecular visualization
|
|
242
|
+
- **Open Babel**: Chemical file format conversion
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: madd-drug-discovery-guide
|
|
3
|
+
description: "Multi-agent system for automated drug discovery pipelines"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "💊"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "pharma"
|
|
9
|
+
keywords: ["drug discovery", "multi-agent", "molecular design", "ADMET", "virtual screening", "pharma AI"]
|
|
10
|
+
source: "https://github.com/sb-ai-lab/MADD"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# MADD: Multi-Agent Drug Discovery Guide
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
MADD (Multi-Agent Drug Discovery) is a multi-agent system that automates key stages of the drug discovery pipeline — target identification, molecule generation, property prediction (ADMET), docking simulation, and lead optimization. Specialized agents collaborate to propose, evaluate, and refine drug candidates, reducing the manual effort in early-stage drug discovery research.
|
|
18
|
+
|
|
19
|
+
## Agent Pipeline
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Target Protein
|
|
23
|
+
↓
|
|
24
|
+
Target Analysis Agent (binding site, druggability)
|
|
25
|
+
↓
|
|
26
|
+
Molecule Generation Agent (de novo design)
|
|
27
|
+
↓
|
|
28
|
+
Property Prediction Agent (ADMET screening)
|
|
29
|
+
↓
|
|
30
|
+
Docking Agent (binding affinity estimation)
|
|
31
|
+
↓
|
|
32
|
+
Optimization Agent (lead optimization cycle)
|
|
33
|
+
↓
|
|
34
|
+
Report Agent (candidate ranking + rationale)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from madd import DrugDiscoveryPipeline
|
|
41
|
+
|
|
42
|
+
pipeline = DrugDiscoveryPipeline(
|
|
43
|
+
llm_provider="anthropic",
|
|
44
|
+
tools=["rdkit", "autodock_vina", "admet_predictor"],
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Run discovery pipeline
|
|
48
|
+
results = pipeline.discover(
|
|
49
|
+
target_protein="6LU7", # PDB ID (SARS-CoV-2 Mpro)
|
|
50
|
+
target_site="active_site",
|
|
51
|
+
constraints={
|
|
52
|
+
"molecular_weight": (200, 500), # Lipinski
|
|
53
|
+
"logP": (-0.4, 5.6),
|
|
54
|
+
"hbd": (0, 5),
|
|
55
|
+
"hba": (0, 10),
|
|
56
|
+
"tpsa": (0, 140),
|
|
57
|
+
},
|
|
58
|
+
num_candidates=100,
|
|
59
|
+
optimization_rounds=3,
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
# Top candidates
|
|
63
|
+
for i, mol in enumerate(results.top_candidates[:5]):
|
|
64
|
+
print(f"\nCandidate {i+1}: {mol.smiles}")
|
|
65
|
+
print(f" Docking score: {mol.docking_score:.2f} kcal/mol")
|
|
66
|
+
print(f" QED: {mol.qed:.3f}")
|
|
67
|
+
print(f" Synthetic accessibility: {mol.sa_score:.2f}")
|
|
68
|
+
print(f" ADMET: {mol.admet_summary}")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## ADMET Prediction
|
|
72
|
+
|
|
73
|
+
```python
|
|
74
|
+
from madd.agents import ADMETAgent
|
|
75
|
+
|
|
76
|
+
admet = ADMETAgent()
|
|
77
|
+
|
|
78
|
+
# Predict ADMET properties for a molecule
|
|
79
|
+
props = admet.predict("CC(=O)Oc1ccccc1C(=O)O") # Aspirin
|
|
80
|
+
|
|
81
|
+
print(f"Absorption: {props.absorption}")
|
|
82
|
+
print(f"Distribution: {props.distribution}")
|
|
83
|
+
print(f"Metabolism: {props.metabolism}")
|
|
84
|
+
print(f"Excretion: {props.excretion}")
|
|
85
|
+
print(f"Toxicity: {props.toxicity}")
|
|
86
|
+
print(f"BBB penetration: {props.bbb_penetration}")
|
|
87
|
+
print(f"CYP inhibition: {props.cyp_inhibition}")
|
|
88
|
+
print(f"hERG liability: {props.herg_risk}")
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Molecule Generation
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from madd.agents import MolGenAgent
|
|
95
|
+
|
|
96
|
+
gen = MolGenAgent(method="reinforcement_learning")
|
|
97
|
+
|
|
98
|
+
# Generate molecules targeting a binding site
|
|
99
|
+
molecules = gen.generate(
|
|
100
|
+
target_pdb="6LU7",
|
|
101
|
+
binding_site="active_site",
|
|
102
|
+
num_molecules=500,
|
|
103
|
+
diversity_threshold=0.5, # Tanimoto diversity
|
|
104
|
+
constraints={
|
|
105
|
+
"drug_likeness": True, # Lipinski + Veber
|
|
106
|
+
"novelty": True, # Not in ChEMBL
|
|
107
|
+
},
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
print(f"Generated: {len(molecules)}")
|
|
111
|
+
print(f"Drug-like: {sum(1 for m in molecules if m.is_drug_like)}")
|
|
112
|
+
print(f"Novel: {sum(1 for m in molecules if m.is_novel)}")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Lead Optimization
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from madd.agents import OptimizationAgent
|
|
119
|
+
|
|
120
|
+
optimizer = OptimizationAgent()
|
|
121
|
+
|
|
122
|
+
# Optimize a lead compound
|
|
123
|
+
optimized = optimizer.optimize(
|
|
124
|
+
lead_smiles="c1ccc(-c2ncc(F)c(N)n2)cc1",
|
|
125
|
+
objectives=[
|
|
126
|
+
("docking_score", "minimize"),
|
|
127
|
+
("qed", "maximize"),
|
|
128
|
+
("sa_score", "minimize"),
|
|
129
|
+
("solubility", "maximize"),
|
|
130
|
+
],
|
|
131
|
+
num_iterations=50,
|
|
132
|
+
keep_scaffold=True, # Maintain core structure
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
for mol in optimized.pareto_front[:5]:
|
|
136
|
+
print(f"SMILES: {mol.smiles}")
|
|
137
|
+
print(f" Docking: {mol.docking_score:.2f}")
|
|
138
|
+
print(f" QED: {mol.qed:.3f}")
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Use Cases
|
|
142
|
+
|
|
143
|
+
1. **Hit discovery**: Generate novel drug candidates for targets
|
|
144
|
+
2. **Lead optimization**: Improve properties of promising compounds
|
|
145
|
+
3. **ADMET screening**: Predict pharmacokinetic properties
|
|
146
|
+
4. **Virtual screening**: Score large molecule libraries
|
|
147
|
+
5. **Drug repurposing**: Evaluate known drugs for new targets
|
|
148
|
+
|
|
149
|
+
## References
|
|
150
|
+
|
|
151
|
+
- [MADD GitHub](https://github.com/sb-ai-lab/MADD)
|
|
152
|
+
- [RDKit](https://www.rdkit.org/) — Chemistry toolkit
|
|
153
|
+
- [AutoDock Vina](https://vina.scripps.edu/) — Molecular docking
|