@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,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: medical-imaging-guide
|
|
3
|
+
description: "Medical image analysis with deep learning for research applications"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "microscope"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "biomedical"
|
|
9
|
+
keywords: ["medical imaging", "deep learning", "image segmentation", "radiology AI", "pathology", "convolutional neural networks"]
|
|
10
|
+
source: "wentor-research-plugins"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Medical Imaging Guide
|
|
14
|
+
|
|
15
|
+
A skill for applying deep learning to medical image analysis in research settings. Covers common imaging modalities, preprocessing pipelines, architecture selection for classification and segmentation tasks, handling small datasets with transfer learning and data augmentation, evaluation metrics specific to medical imaging, and regulatory and ethical considerations for clinical translation.
|
|
16
|
+
|
|
17
|
+
## Imaging Modalities and Data Characteristics
|
|
18
|
+
|
|
19
|
+
### Common Modalities in Research
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Modality Overview:
|
|
23
|
+
|
|
24
|
+
X-ray / Radiography:
|
|
25
|
+
- 2D grayscale images
|
|
26
|
+
- Resolution: typically 2000x2000 to 4000x4000 pixels
|
|
27
|
+
- Format: DICOM (.dcm)
|
|
28
|
+
- Common tasks: pneumonia detection, fracture detection,
|
|
29
|
+
cardiomegaly screening
|
|
30
|
+
- Dataset examples: CheXpert, MIMIC-CXR, NIH ChestX-ray14
|
|
31
|
+
|
|
32
|
+
CT (Computed Tomography):
|
|
33
|
+
- 3D volumetric data (stack of 2D slices)
|
|
34
|
+
- Resolution: 512x512 per slice, 50-500+ slices
|
|
35
|
+
- Format: DICOM series, NIfTI (.nii.gz)
|
|
36
|
+
- Common tasks: lung nodule detection, organ segmentation,
|
|
37
|
+
COVID-19 screening
|
|
38
|
+
- Dataset examples: LUNA16, DeepLesion, TotalSegmentator
|
|
39
|
+
|
|
40
|
+
MRI (Magnetic Resonance Imaging):
|
|
41
|
+
- 3D volumetric, multiple sequences (T1, T2, FLAIR, DWI)
|
|
42
|
+
- Resolution: 256x256 to 512x512 per slice
|
|
43
|
+
- Format: DICOM, NIfTI
|
|
44
|
+
- Common tasks: brain tumor segmentation, cardiac analysis,
|
|
45
|
+
knee injury classification
|
|
46
|
+
- Dataset examples: BraTS, ACDC, fastMRI
|
|
47
|
+
|
|
48
|
+
Histopathology:
|
|
49
|
+
- Whole slide images (WSI), extremely large
|
|
50
|
+
- Resolution: 100,000x100,000+ pixels at highest magnification
|
|
51
|
+
- Format: SVS, TIFF, NDPI (vendor-specific)
|
|
52
|
+
- Common tasks: cancer grading, mitosis detection,
|
|
53
|
+
tissue classification
|
|
54
|
+
- Dataset examples: Camelyon16/17, TCGA, PANDA
|
|
55
|
+
|
|
56
|
+
Retinal Imaging (Fundoscopy / OCT):
|
|
57
|
+
- 2D color fundus or 3D OCT volumes
|
|
58
|
+
- Common tasks: diabetic retinopathy grading, glaucoma detection
|
|
59
|
+
- Dataset examples: EyePACS, MESSIDOR, REFUGE
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Preprocessing Pipeline
|
|
63
|
+
|
|
64
|
+
### Standard Preprocessing Steps
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
import numpy as np
|
|
68
|
+
|
|
69
|
+
def preprocess_medical_image(image, modality="xray"):
|
|
70
|
+
"""
|
|
71
|
+
Standard preprocessing pipeline for medical images.
|
|
72
|
+
|
|
73
|
+
Steps vary by modality but typically include:
|
|
74
|
+
1. Intensity normalization
|
|
75
|
+
2. Resizing/resampling
|
|
76
|
+
3. Windowing (for CT)
|
|
77
|
+
4. Artifact removal
|
|
78
|
+
"""
|
|
79
|
+
if modality == "ct":
|
|
80
|
+
# CT windowing: map Hounsfield Units to display range
|
|
81
|
+
# Lung window: center=-600, width=1500
|
|
82
|
+
# Soft tissue: center=40, width=400
|
|
83
|
+
window_center = -600
|
|
84
|
+
window_width = 1500
|
|
85
|
+
lower = window_center - window_width // 2
|
|
86
|
+
upper = window_center + window_width // 2
|
|
87
|
+
image = np.clip(image, lower, upper)
|
|
88
|
+
image = (image - lower) / (upper - lower)
|
|
89
|
+
|
|
90
|
+
elif modality == "xray":
|
|
91
|
+
# Normalize to [0, 1] range
|
|
92
|
+
image = image.astype(np.float32)
|
|
93
|
+
image = (image - image.min()) / (image.max() - image.min() + 1e-8)
|
|
94
|
+
|
|
95
|
+
elif modality == "mri":
|
|
96
|
+
# Z-score normalization (per-volume)
|
|
97
|
+
# Exclude background (zeros) from statistics
|
|
98
|
+
mask = image > 0
|
|
99
|
+
if mask.any():
|
|
100
|
+
mean_val = image[mask].mean()
|
|
101
|
+
std_val = image[mask].std()
|
|
102
|
+
image = (image - mean_val) / (std_val + 1e-8)
|
|
103
|
+
|
|
104
|
+
return image
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def resize_with_spacing(image, original_spacing, target_spacing):
|
|
108
|
+
"""
|
|
109
|
+
Resample 3D medical image to uniform voxel spacing.
|
|
110
|
+
Essential for CT/MRI where slice thickness varies.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
image: 3D numpy array
|
|
114
|
+
original_spacing: (z, y, x) voxel sizes in mm
|
|
115
|
+
target_spacing: desired (z, y, x) voxel sizes in mm
|
|
116
|
+
"""
|
|
117
|
+
from scipy.ndimage import zoom
|
|
118
|
+
|
|
119
|
+
resize_factor = [
|
|
120
|
+
orig / target
|
|
121
|
+
for orig, target in zip(original_spacing, target_spacing)
|
|
122
|
+
]
|
|
123
|
+
resampled = zoom(image, resize_factor, order=1)
|
|
124
|
+
return resampled
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Model Architecture Selection
|
|
128
|
+
|
|
129
|
+
### Task-Specific Architectures
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Architecture recommendations by task:
|
|
133
|
+
|
|
134
|
+
IMAGE CLASSIFICATION (diagnosis, grading):
|
|
135
|
+
- ResNet-50/101: reliable baseline, well-understood
|
|
136
|
+
- EfficientNet-B4/B5: better accuracy-efficiency tradeoff
|
|
137
|
+
- Vision Transformer (ViT): strong with large datasets
|
|
138
|
+
- DenseNet-121: popular for chest X-ray (CheXNet heritage)
|
|
139
|
+
|
|
140
|
+
Transfer learning approach:
|
|
141
|
+
1. Start with ImageNet pretrained weights
|
|
142
|
+
2. Replace final classifier layer
|
|
143
|
+
3. Fine-tune with low learning rate (1e-4 to 1e-5)
|
|
144
|
+
4. Use gradual unfreezing (train head, then all layers)
|
|
145
|
+
|
|
146
|
+
IMAGE SEGMENTATION (organ/lesion delineation):
|
|
147
|
+
- U-Net: gold standard for medical segmentation
|
|
148
|
+
- nnU-Net: self-configuring U-Net (state-of-the-art framework)
|
|
149
|
+
- Attention U-Net: U-Net with attention gates
|
|
150
|
+
- TransUNet: hybrid CNN-Transformer architecture
|
|
151
|
+
- MONAI: framework with pre-built medical imaging models
|
|
152
|
+
|
|
153
|
+
For 3D volumes:
|
|
154
|
+
- 3D U-Net: full volumetric processing
|
|
155
|
+
- V-Net: 3D with dice loss
|
|
156
|
+
- 2.5D approach: adjacent slices as multi-channel input
|
|
157
|
+
|
|
158
|
+
OBJECT DETECTION (lesion localization):
|
|
159
|
+
- YOLO variants: fast inference, suitable for screening
|
|
160
|
+
- Faster R-CNN: higher accuracy, slower
|
|
161
|
+
- RetinaNet: handles class imbalance (focal loss)
|
|
162
|
+
- DETR: transformer-based, no anchor boxes needed
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Handling Small Datasets
|
|
166
|
+
|
|
167
|
+
### Data Augmentation for Medical Images
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
def get_medical_augmentation_pipeline():
|
|
171
|
+
"""
|
|
172
|
+
Medical image augmentation strategy.
|
|
173
|
+
|
|
174
|
+
Key differences from natural image augmentation:
|
|
175
|
+
- Preserve anatomical plausibility
|
|
176
|
+
- Avoid color jitter (intensity has diagnostic meaning)
|
|
177
|
+
- Use elastic deformations (mimic anatomical variability)
|
|
178
|
+
- Apply carefully (aggressive augmentation can hurt)
|
|
179
|
+
"""
|
|
180
|
+
import albumentations as A
|
|
181
|
+
|
|
182
|
+
transform = A.Compose([
|
|
183
|
+
# Spatial transforms (safe for medical images)
|
|
184
|
+
A.HorizontalFlip(p=0.5),
|
|
185
|
+
A.RandomRotate90(p=0.5),
|
|
186
|
+
A.ShiftScaleRotate(
|
|
187
|
+
shift_limit=0.1, scale_limit=0.1,
|
|
188
|
+
rotate_limit=15, p=0.5
|
|
189
|
+
),
|
|
190
|
+
A.ElasticTransform(
|
|
191
|
+
alpha=120, sigma=120 * 0.05,
|
|
192
|
+
p=0.3
|
|
193
|
+
),
|
|
194
|
+
|
|
195
|
+
# Intensity transforms (use cautiously)
|
|
196
|
+
A.RandomBrightnessContrast(
|
|
197
|
+
brightness_limit=0.1,
|
|
198
|
+
contrast_limit=0.1, p=0.3
|
|
199
|
+
),
|
|
200
|
+
A.GaussNoise(var_limit=(10, 50), p=0.2),
|
|
201
|
+
A.GaussianBlur(blur_limit=(3, 5), p=0.2),
|
|
202
|
+
])
|
|
203
|
+
|
|
204
|
+
return transform
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Transfer Learning Strategies
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
Transfer learning approaches for small medical datasets:
|
|
211
|
+
|
|
212
|
+
Strategy 1 - ImageNet pretraining (most common):
|
|
213
|
+
- Works surprisingly well despite domain gap
|
|
214
|
+
- Low-level features (edges, textures) transfer well
|
|
215
|
+
- Fine-tune all layers with small learning rate
|
|
216
|
+
- Typical improvement: 5-15% over training from scratch
|
|
217
|
+
|
|
218
|
+
Strategy 2 - Medical domain pretraining:
|
|
219
|
+
- Pretrain on large medical dataset, fine-tune on target
|
|
220
|
+
- RadImageNet: 1.35M radiological images
|
|
221
|
+
- Models Genesis: self-supervised pretraining on CT/X-ray
|
|
222
|
+
- Better than ImageNet for most medical tasks
|
|
223
|
+
|
|
224
|
+
Strategy 3 - Self-supervised pretraining:
|
|
225
|
+
- Contrastive learning (SimCLR, MoCo, DINO)
|
|
226
|
+
- Masked image modeling (MAE)
|
|
227
|
+
- No labels needed for pretraining phase
|
|
228
|
+
- Effective when labeled data is very scarce (< 100 images)
|
|
229
|
+
|
|
230
|
+
Strategy 4 - Few-shot learning:
|
|
231
|
+
- Prototypical networks, MAML
|
|
232
|
+
- Useful for rare diseases with < 20 examples
|
|
233
|
+
- Active research area, not yet production-ready
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Evaluation Metrics
|
|
237
|
+
|
|
238
|
+
### Medical Imaging Specific Metrics
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
Classification metrics:
|
|
242
|
+
- AUROC (Area Under ROC Curve): discrimination ability
|
|
243
|
+
- Primary metric for most medical imaging papers
|
|
244
|
+
- Report with 95% confidence interval (bootstrap)
|
|
245
|
+
- AUPRC (Area Under Precision-Recall Curve):
|
|
246
|
+
- Better than AUROC for imbalanced datasets
|
|
247
|
+
- Common in lesion detection tasks
|
|
248
|
+
- Sensitivity at fixed specificity:
|
|
249
|
+
- e.g., "Sensitivity of 92% at 95% specificity"
|
|
250
|
+
- Clinically meaningful operating point
|
|
251
|
+
- Specificity at fixed sensitivity:
|
|
252
|
+
- e.g., "Specificity of 88% at 90% sensitivity"
|
|
253
|
+
- Ensures acceptable miss rate
|
|
254
|
+
|
|
255
|
+
Segmentation metrics:
|
|
256
|
+
- Dice Similarity Coefficient (DSC):
|
|
257
|
+
- DSC = 2|A intersection B| / (|A| + |B|)
|
|
258
|
+
- Range: 0 (no overlap) to 1 (perfect overlap)
|
|
259
|
+
- Most commonly reported segmentation metric
|
|
260
|
+
- Hausdorff Distance (HD95):
|
|
261
|
+
- Maximum surface distance between predictions and ground truth
|
|
262
|
+
- Use 95th percentile (HD95) to reduce sensitivity to outliers
|
|
263
|
+
- Reports boundary accuracy in millimeters
|
|
264
|
+
- Average Surface Distance (ASD):
|
|
265
|
+
- Mean distance between predicted and true surfaces
|
|
266
|
+
|
|
267
|
+
Reporting standards:
|
|
268
|
+
- Always report confidence intervals (95% CI)
|
|
269
|
+
- Use 5-fold cross-validation or held-out test set
|
|
270
|
+
- Report per-class metrics for multi-class problems
|
|
271
|
+
- Compare against at least one established baseline
|
|
272
|
+
- Report results on external validation set when possible
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Ethical and Regulatory Considerations
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
Responsible AI in medical imaging research:
|
|
279
|
+
|
|
280
|
+
Data ethics:
|
|
281
|
+
- De-identify all DICOM headers (remove patient name, ID, dates)
|
|
282
|
+
- Use approved de-identification tools (e.g., DICOM Cleaner)
|
|
283
|
+
- Obtain IRB/ethics approval before starting
|
|
284
|
+
- Data use agreements for public datasets
|
|
285
|
+
|
|
286
|
+
Bias and fairness:
|
|
287
|
+
- Report demographic breakdown of training data
|
|
288
|
+
- Test performance across subgroups (age, sex, ethnicity)
|
|
289
|
+
- Acknowledge known demographic biases in training data
|
|
290
|
+
- CheXpert and MIMIC-CXR include demographic metadata for this
|
|
291
|
+
|
|
292
|
+
Reproducibility:
|
|
293
|
+
- Share code and trained model weights when possible
|
|
294
|
+
- Report all hyperparameters and random seeds
|
|
295
|
+
- Use standardized evaluation protocols
|
|
296
|
+
- Follow CLAIM (Checklist for AI in Medical Imaging) guidelines
|
|
297
|
+
|
|
298
|
+
Clinical translation (if applicable):
|
|
299
|
+
- FDA/CE marking required for clinical use (not research)
|
|
300
|
+
- Software as Medical Device (SaMD) classification
|
|
301
|
+
- Prospective clinical validation required
|
|
302
|
+
- Research prototypes are NOT approved for clinical decisions
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Medical imaging AI is advancing rapidly, but responsible research requires careful attention to data quality, evaluation rigor, and clinical relevance. The gap between a model that performs well on a benchmark and one that adds genuine clinical value remains significant, and bridging it requires interdisciplinary collaboration between computer scientists, radiologists, pathologists, and clinical researchers.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ncbi-blast-api
|
|
3
|
+
description: "Run sequence similarity searches via the NCBI BLAST REST API"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "🧪"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "biomedical"
|
|
9
|
+
keywords: ["BLAST", "sequence alignment", "NCBI", "homology search", "protein similarity", "nucleotide search"]
|
|
10
|
+
source: "https://blast.ncbi.nlm.nih.gov/"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# NCBI BLAST REST API
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
BLAST (Basic Local Alignment Search Tool) is the most widely used bioinformatics tool, comparing nucleotide or protein sequences against databases to find regions of similarity. The NCBI BLAST REST API enables programmatic submission of searches, status polling, and result retrieval. Free, no authentication required (but rate-limited).
|
|
18
|
+
|
|
19
|
+
## API Workflow
|
|
20
|
+
|
|
21
|
+
BLAST searches are asynchronous: submit → poll → retrieve.
|
|
22
|
+
|
|
23
|
+
### Step 1: Submit Search
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Nucleotide BLAST (blastn)
|
|
27
|
+
curl -X POST "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi" \
|
|
28
|
+
-d "CMD=Put&PROGRAM=blastn&DATABASE=nt&QUERY=ATGCGATCGATCG..."
|
|
29
|
+
|
|
30
|
+
# Protein BLAST (blastp)
|
|
31
|
+
curl -X POST "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi" \
|
|
32
|
+
-d "CMD=Put&PROGRAM=blastp&DATABASE=nr&QUERY=MKTLLLTLVVVTIVCL..."
|
|
33
|
+
|
|
34
|
+
# BLAST with specific parameters
|
|
35
|
+
curl -X POST "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi" \
|
|
36
|
+
-d "CMD=Put&PROGRAM=blastn&DATABASE=nt&QUERY=SEQUENCE&\
|
|
37
|
+
EXPECT=0.001&WORD_SIZE=11&HITLIST_SIZE=50"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 2: Check Status
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Poll for completion (returns XML with Status field)
|
|
44
|
+
curl "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Get&FORMAT_OBJECT=SearchInfo&RID=YOUR_RID"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Step 3: Retrieve Results
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Get results in XML
|
|
51
|
+
curl "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Get&FORMAT_TYPE=XML&RID=YOUR_RID"
|
|
52
|
+
|
|
53
|
+
# Get results in JSON
|
|
54
|
+
curl "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Get&FORMAT_TYPE=JSON2_S&RID=YOUR_RID"
|
|
55
|
+
|
|
56
|
+
# Get results in tabular format
|
|
57
|
+
curl "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Get&FORMAT_TYPE=Tabular&RID=YOUR_RID"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### BLAST Programs
|
|
61
|
+
|
|
62
|
+
| Program | Query → Database | Use case |
|
|
63
|
+
|---------|-----------------|----------|
|
|
64
|
+
| `blastn` | Nucleotide → Nucleotide | DNA/RNA similarity |
|
|
65
|
+
| `blastp` | Protein → Protein | Protein homology |
|
|
66
|
+
| `blastx` | Translated nuc → Protein | Find protein homologs of DNA |
|
|
67
|
+
| `tblastn` | Protein → Translated nuc | Find DNA encoding similar protein |
|
|
68
|
+
| `tblastx` | Translated nuc → Translated nuc | Compare at protein level |
|
|
69
|
+
|
|
70
|
+
### Common Databases
|
|
71
|
+
|
|
72
|
+
| Database | Content |
|
|
73
|
+
|----------|---------|
|
|
74
|
+
| `nt` | All GenBank nucleotide sequences |
|
|
75
|
+
| `nr` | Non-redundant protein sequences |
|
|
76
|
+
| `refseq_rna` | RefSeq RNA sequences |
|
|
77
|
+
| `refseq_protein` | RefSeq protein sequences |
|
|
78
|
+
| `swissprot` | UniProtKB/Swiss-Prot (curated) |
|
|
79
|
+
| `pdb` | Protein Data Bank sequences |
|
|
80
|
+
|
|
81
|
+
### Key Parameters
|
|
82
|
+
|
|
83
|
+
| Parameter | Description | Default |
|
|
84
|
+
|-----------|-------------|---------|
|
|
85
|
+
| `PROGRAM` | BLAST program | Required |
|
|
86
|
+
| `DATABASE` | Target database | Required |
|
|
87
|
+
| `QUERY` | Sequence or accession | Required |
|
|
88
|
+
| `EXPECT` | E-value threshold | `10` |
|
|
89
|
+
| `WORD_SIZE` | Word size | `11` (blastn), `6` (blastp) |
|
|
90
|
+
| `HITLIST_SIZE` | Max results | `100` |
|
|
91
|
+
| `MATRIX` | Scoring matrix (protein) | `BLOSUM62` |
|
|
92
|
+
| `FILTER` | Low complexity filter | `L` |
|
|
93
|
+
| `ENTREZ_QUERY` | Restrict to organism | `Homo sapiens[ORGN]` |
|
|
94
|
+
|
|
95
|
+
## Python Usage
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import time
|
|
99
|
+
import requests
|
|
100
|
+
from xml.etree import ElementTree
|
|
101
|
+
|
|
102
|
+
BLAST_URL = "https://blast.ncbi.nlm.nih.gov/blast/Blast.cgi"
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def submit_blast(sequence: str, program: str = "blastn",
|
|
106
|
+
database: str = "nt",
|
|
107
|
+
evalue: float = 0.001) -> str:
|
|
108
|
+
"""Submit a BLAST search, return Request ID."""
|
|
109
|
+
resp = requests.post(BLAST_URL, data={
|
|
110
|
+
"CMD": "Put",
|
|
111
|
+
"PROGRAM": program,
|
|
112
|
+
"DATABASE": database,
|
|
113
|
+
"QUERY": sequence,
|
|
114
|
+
"EXPECT": evalue,
|
|
115
|
+
"HITLIST_SIZE": 50,
|
|
116
|
+
})
|
|
117
|
+
resp.raise_for_status()
|
|
118
|
+
|
|
119
|
+
for line in resp.text.split("\n"):
|
|
120
|
+
if "RID = " in line:
|
|
121
|
+
return line.split("=")[1].strip()
|
|
122
|
+
raise ValueError("No RID in response")
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def wait_for_results(rid: str, poll_interval: int = 15,
|
|
126
|
+
max_wait: int = 300) -> bool:
|
|
127
|
+
"""Poll until BLAST search completes."""
|
|
128
|
+
elapsed = 0
|
|
129
|
+
while elapsed < max_wait:
|
|
130
|
+
resp = requests.get(BLAST_URL, params={
|
|
131
|
+
"CMD": "Get",
|
|
132
|
+
"FORMAT_OBJECT": "SearchInfo",
|
|
133
|
+
"RID": rid,
|
|
134
|
+
})
|
|
135
|
+
if "Status=READY" in resp.text:
|
|
136
|
+
return True
|
|
137
|
+
if "Status=FAILED" in resp.text:
|
|
138
|
+
raise RuntimeError("BLAST search failed")
|
|
139
|
+
time.sleep(poll_interval)
|
|
140
|
+
elapsed += poll_interval
|
|
141
|
+
raise TimeoutError(f"BLAST timed out after {max_wait}s")
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
def get_results(rid: str) -> list:
|
|
145
|
+
"""Retrieve BLAST results as parsed hits."""
|
|
146
|
+
resp = requests.get(BLAST_URL, params={
|
|
147
|
+
"CMD": "Get",
|
|
148
|
+
"FORMAT_TYPE": "XML",
|
|
149
|
+
"RID": rid,
|
|
150
|
+
})
|
|
151
|
+
resp.raise_for_status()
|
|
152
|
+
|
|
153
|
+
root = ElementTree.fromstring(resp.text)
|
|
154
|
+
ns = ""
|
|
155
|
+
hits = []
|
|
156
|
+
for hit in root.iter(f"{ns}Hit"):
|
|
157
|
+
hsps = hit.find(f"{ns}Hit_hsps")
|
|
158
|
+
hsp = hsps.find(f"{ns}Hsp") if hsps is not None else None
|
|
159
|
+
hits.append({
|
|
160
|
+
"accession": hit.findtext(f"{ns}Hit_accession", ""),
|
|
161
|
+
"description": hit.findtext(f"{ns}Hit_def", ""),
|
|
162
|
+
"length": int(hit.findtext(f"{ns}Hit_len", "0")),
|
|
163
|
+
"evalue": float(hsp.findtext(f"{ns}Hsp_evalue", "999"))
|
|
164
|
+
if hsp is not None else 999,
|
|
165
|
+
"identity": float(hsp.findtext(f"{ns}Hsp_identity", "0"))
|
|
166
|
+
if hsp is not None else 0,
|
|
167
|
+
"score": float(hsp.findtext(f"{ns}Hsp_bit-score", "0"))
|
|
168
|
+
if hsp is not None else 0,
|
|
169
|
+
})
|
|
170
|
+
return hits
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
# Example: BLAST a short DNA sequence
|
|
174
|
+
rid = submit_blast("ATGCGATCGATCGATCGATCGATCG", program="blastn")
|
|
175
|
+
print(f"Submitted BLAST search: {rid}")
|
|
176
|
+
|
|
177
|
+
wait_for_results(rid)
|
|
178
|
+
hits = get_results(rid)
|
|
179
|
+
for h in hits[:5]:
|
|
180
|
+
print(f"{h['accession']}: {h['description'][:60]}...")
|
|
181
|
+
print(f" E-value: {h['evalue']:.2e} | Identity: {h['identity']}")
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Rate Limits
|
|
185
|
+
|
|
186
|
+
- Max 1 request per 10 seconds for search submission
|
|
187
|
+
- Max concurrent searches: varies by load
|
|
188
|
+
- NCBI requests a contact email in User-Agent header
|
|
189
|
+
|
|
190
|
+
## References
|
|
191
|
+
|
|
192
|
+
- [NCBI BLAST](https://blast.ncbi.nlm.nih.gov/)
|
|
193
|
+
- [BLAST URL API Guide](https://blast.ncbi.nlm.nih.gov/doc/blast-help/developerinfo.html)
|
|
194
|
+
- [BLAST Command Line](https://www.ncbi.nlm.nih.gov/books/NBK279690/)
|
|
195
|
+
- Altschul, S.F. et al. (1990). "Basic local alignment search tool." *J. Mol. Biol.* 215(3).
|