@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,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lean-theorem-proving-guide
|
|
3
|
+
description: "LLM agent for formal theorem proving in Lean 4"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "📐"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "math"
|
|
9
|
+
keywords: ["Lean 4", "theorem proving", "formal verification", "LLM math", "proof assistant", "LeanAgent"]
|
|
10
|
+
source: "https://github.com/lean-dojo/LeanAgent"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Lean Theorem Proving Agent Guide
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
LeanAgent is an LLM-based agent for automated theorem proving in Lean 4, a modern proof assistant. It combines LLM reasoning with formal verification — proposing proof steps that are verified by Lean's type checker. Can prove novel theorems, not just benchmarks, by exploring proof strategies, backtracking on failures, and learning from successful proofs.
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
Theorem Statement (Lean 4)
|
|
23
|
+
↓
|
|
24
|
+
Goal Analysis Agent (understand proof obligations)
|
|
25
|
+
↓
|
|
26
|
+
Tactic Suggestion Agent (propose proof steps)
|
|
27
|
+
↓
|
|
28
|
+
Lean 4 Verification (check tactic correctness)
|
|
29
|
+
↓
|
|
30
|
+
Backtracking (if tactic fails, try alternatives)
|
|
31
|
+
↓
|
|
32
|
+
Proof or timeout
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
from lean_agent import LeanAgent
|
|
39
|
+
|
|
40
|
+
agent = LeanAgent(
|
|
41
|
+
llm_provider="anthropic",
|
|
42
|
+
lean_path="/path/to/lean4",
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
# Prove a theorem
|
|
46
|
+
result = agent.prove(
|
|
47
|
+
theorem="""
|
|
48
|
+
theorem add_comm (m n : Nat) : m + n = n + m := by
|
|
49
|
+
sorry
|
|
50
|
+
""",
|
|
51
|
+
max_attempts=50,
|
|
52
|
+
timeout=120,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
if result.proved:
|
|
56
|
+
print("Proof found!")
|
|
57
|
+
print(result.proof)
|
|
58
|
+
else:
|
|
59
|
+
print(f"Failed. Best attempt:\n{result.best_attempt}")
|
|
60
|
+
print(f"Remaining goals: {result.remaining_goals}")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Proof Search Strategies
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
# Configure search strategy
|
|
67
|
+
agent = LeanAgent(
|
|
68
|
+
search_config={
|
|
69
|
+
"strategy": "best_first", # best_first, bfs, dfs
|
|
70
|
+
"max_depth": 20, # Max proof steps
|
|
71
|
+
"beam_width": 5, # Tactics to try per step
|
|
72
|
+
"temperature": 0.7, # LLM sampling temp
|
|
73
|
+
"backtrack_on_fail": True,
|
|
74
|
+
},
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# Interactive proof mode
|
|
78
|
+
session = agent.interactive_prove(
|
|
79
|
+
theorem="theorem my_thm : ∀ n : Nat, n + 0 = n := by"
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
while not session.done:
|
|
83
|
+
print(f"Current goals:\n{session.goals}")
|
|
84
|
+
tactics = session.suggest_tactics(k=5)
|
|
85
|
+
for i, t in enumerate(tactics):
|
|
86
|
+
print(f" {i}: {t.tactic} (confidence: {t.score:.2f})")
|
|
87
|
+
# Agent automatically picks best tactic
|
|
88
|
+
session.step()
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Lean 4 Tactic Library
|
|
92
|
+
|
|
93
|
+
```lean
|
|
94
|
+
-- Common tactics LeanAgent uses:
|
|
95
|
+
-- intro, apply, exact, rfl, simp, omega
|
|
96
|
+
-- induction, cases, constructor, ext
|
|
97
|
+
-- rw, calc, have, let, show
|
|
98
|
+
|
|
99
|
+
-- Example theorem + proof
|
|
100
|
+
theorem list_append_nil (l : List α) : l ++ [] = l := by
|
|
101
|
+
induction l with
|
|
102
|
+
| nil => simp
|
|
103
|
+
| cons h t ih => simp [ih]
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Batch Proving
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
# Prove multiple theorems
|
|
110
|
+
theorems = [
|
|
111
|
+
"theorem t1 : 1 + 1 = 2 := by sorry",
|
|
112
|
+
"theorem t2 (n : Nat) : n + 0 = n := by sorry",
|
|
113
|
+
"theorem t3 (n m : Nat) : n + m = m + n := by sorry",
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
results = agent.prove_batch(
|
|
117
|
+
theorems=theorems,
|
|
118
|
+
parallel=True,
|
|
119
|
+
timeout_per=60,
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
for thm, result in zip(theorems, results):
|
|
123
|
+
status = "PROVED" if result.proved else "FAILED"
|
|
124
|
+
print(f"[{status}] {thm[:50]}...")
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Use Cases
|
|
128
|
+
|
|
129
|
+
1. **Automated proving**: Prove mathematical theorems formally
|
|
130
|
+
2. **Proof assistance**: Suggest tactics during manual proving
|
|
131
|
+
3. **Verification**: Formally verify mathematical claims
|
|
132
|
+
4. **Education**: Learn Lean 4 tactics with AI guidance
|
|
133
|
+
5. **Research**: Explore new proof techniques
|
|
134
|
+
|
|
135
|
+
## References
|
|
136
|
+
|
|
137
|
+
- [LeanAgent GitHub](https://github.com/lean-dojo/LeanAgent)
|
|
138
|
+
- [Lean 4](https://lean-lang.org/)
|
|
139
|
+
- [Mathlib4](https://leanprover-community.github.io/mathlib4_docs/)
|
|
140
|
+
- [LeanDojo](https://leandojo.org/)
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: symbolic-computation-guide
|
|
3
|
+
description: "Computer algebra systems: SymPy, SageMath, and Mathematica for research"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "abacus"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "math"
|
|
9
|
+
keywords: ["symbolic-computation", "computer-algebra", "sympy", "sagemath", "mathematica", "calculus"]
|
|
10
|
+
source: "wentor"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Symbolic Computation Guide
|
|
14
|
+
|
|
15
|
+
A skill for using computer algebra systems (CAS) in mathematical research. Covers symbolic differentiation, integration, equation solving, series expansion, linear algebra, and polynomial arithmetic using SymPy, SageMath, and Mathematica, with practical workflows for research mathematics.
|
|
16
|
+
|
|
17
|
+
## SymPy Fundamentals
|
|
18
|
+
|
|
19
|
+
### Symbolic Expressions and Manipulation
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from sympy import (
|
|
23
|
+
symbols, expand, factor, simplify, cancel, apart,
|
|
24
|
+
sin, cos, exp, log, sqrt, pi, oo, I,
|
|
25
|
+
Rational, Eq, solve, solveset, S
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
x, y, z, t, n, k = symbols("x y z t n k")
|
|
29
|
+
a, b, c = symbols("a b c", real=True)
|
|
30
|
+
|
|
31
|
+
# Expression manipulation
|
|
32
|
+
expr = (x + 1) ** 3
|
|
33
|
+
expanded = expand(expr) # x**3 + 3*x**2 + 3*x + 1
|
|
34
|
+
factored = factor(expanded) # (x + 1)**3
|
|
35
|
+
|
|
36
|
+
# Trigonometric simplification
|
|
37
|
+
from sympy import trigsimp
|
|
38
|
+
trig_expr = sin(x)**2 + cos(x)**2
|
|
39
|
+
simplified = trigsimp(trig_expr) # 1
|
|
40
|
+
|
|
41
|
+
# Partial fraction decomposition
|
|
42
|
+
rational = (x**2 + 2*x + 3) / ((x + 1) * (x + 2) * (x + 3))
|
|
43
|
+
partial = apart(rational, x)
|
|
44
|
+
# 3/(2*(x + 3)) - 2/(x + 2) + 1/(2*(x + 1))
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Calculus
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
from sympy import diff, integrate, limit, series, Sum, Product
|
|
51
|
+
|
|
52
|
+
# Differentiation
|
|
53
|
+
f = x**3 * exp(-x) * sin(x)
|
|
54
|
+
f_prime = diff(f, x)
|
|
55
|
+
f_double_prime = diff(f, x, 2)
|
|
56
|
+
|
|
57
|
+
# Integration
|
|
58
|
+
# Definite integral
|
|
59
|
+
area = integrate(exp(-x**2), (x, -oo, oo)) # sqrt(pi)
|
|
60
|
+
|
|
61
|
+
# Indefinite integral
|
|
62
|
+
antideriv = integrate(x * sin(x), x) # -x*cos(x) + sin(x)
|
|
63
|
+
|
|
64
|
+
# Limits
|
|
65
|
+
lim_result = limit(sin(x) / x, x, 0) # 1
|
|
66
|
+
lim_inf = limit((1 + 1/n)**n, n, oo) # E (Euler's number)
|
|
67
|
+
|
|
68
|
+
# Taylor series
|
|
69
|
+
taylor = series(exp(x) * cos(x), x, 0, n=6)
|
|
70
|
+
# 1 + x - x**3/3 - x**4/6 + ...
|
|
71
|
+
|
|
72
|
+
# Summation
|
|
73
|
+
harmonic = Sum(1/k, (k, 1, n))
|
|
74
|
+
partial_sum = harmonic.doit() # harmonic(n) -- returns harmonic number
|
|
75
|
+
|
|
76
|
+
geometric = Sum(x**k, (k, 0, oo))
|
|
77
|
+
closed_form = geometric.doit() # Piecewise(1/(1 - x), Abs(x) < 1)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Equation Solving
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
# Algebraic equations
|
|
84
|
+
solutions = solve(x**3 - 6*x**2 + 11*x - 6, x) # [1, 2, 3]
|
|
85
|
+
|
|
86
|
+
# System of equations
|
|
87
|
+
system_sol = solve([
|
|
88
|
+
2*x + 3*y - 7,
|
|
89
|
+
x - y + 1
|
|
90
|
+
], [x, y]) # {x: 4/5, y: 9/5}
|
|
91
|
+
|
|
92
|
+
# Differential equations
|
|
93
|
+
from sympy import Function, dsolve, Derivative
|
|
94
|
+
f = Function("f")
|
|
95
|
+
|
|
96
|
+
# f''(x) + f(x) = 0 (simple harmonic oscillator)
|
|
97
|
+
ode = Eq(f(x).diff(x, 2) + f(x), 0)
|
|
98
|
+
general_solution = dsolve(ode, f(x))
|
|
99
|
+
# f(x) = C1*sin(x) + C2*cos(x)
|
|
100
|
+
|
|
101
|
+
# With initial conditions
|
|
102
|
+
particular = dsolve(ode, f(x), ics={f(0): 1, f(x).diff(x).subs(x, 0): 0})
|
|
103
|
+
# f(x) = cos(x)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Linear Algebra
|
|
107
|
+
|
|
108
|
+
### Symbolic Matrix Operations
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
from sympy import Matrix, eye, zeros, det, Rational
|
|
112
|
+
|
|
113
|
+
# Define a symbolic matrix
|
|
114
|
+
A = Matrix([
|
|
115
|
+
[1, 2, 3],
|
|
116
|
+
[4, 5, 6],
|
|
117
|
+
[7, 8, 10]
|
|
118
|
+
])
|
|
119
|
+
|
|
120
|
+
# Basic operations
|
|
121
|
+
print(f"Determinant: {det(A)}") # -3
|
|
122
|
+
print(f"Inverse:\n{A.inv()}")
|
|
123
|
+
print(f"Eigenvalues: {A.eigenvals()}")
|
|
124
|
+
print(f"Rank: {A.rank()}")
|
|
125
|
+
|
|
126
|
+
# Characteristic polynomial
|
|
127
|
+
lam = symbols("lambda")
|
|
128
|
+
char_poly = (A - lam * eye(3)).det()
|
|
129
|
+
char_poly = expand(char_poly)
|
|
130
|
+
|
|
131
|
+
# Jordan normal form
|
|
132
|
+
P, J = A.jordan_form()
|
|
133
|
+
|
|
134
|
+
# Null space and column space
|
|
135
|
+
null = A.nullspace()
|
|
136
|
+
col_space = A.columnspace()
|
|
137
|
+
|
|
138
|
+
# Symbolic matrix with parameters
|
|
139
|
+
M = Matrix([
|
|
140
|
+
[a, b],
|
|
141
|
+
[c, a]
|
|
142
|
+
])
|
|
143
|
+
eigenvals = M.eigenvals() # {a - sqrt(b*c): 1, a + sqrt(b*c): 1}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## SageMath for Research
|
|
147
|
+
|
|
148
|
+
### Number Theory
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
# SageMath syntax (Python-based, but with enhanced number theory)
|
|
152
|
+
# Run in SageMath environment or via sage -python
|
|
153
|
+
|
|
154
|
+
"""
|
|
155
|
+
# Prime factorization
|
|
156
|
+
factor(2024) # 2^3 * 11 * 23
|
|
157
|
+
|
|
158
|
+
# Modular arithmetic
|
|
159
|
+
R = IntegerModRing(17)
|
|
160
|
+
R(3)^(-1) # multiplicative inverse of 3 mod 17
|
|
161
|
+
|
|
162
|
+
# Elliptic curves
|
|
163
|
+
E = EllipticCurve(QQ, [-1, 0])
|
|
164
|
+
E.rank()
|
|
165
|
+
E.torsion_subgroup()
|
|
166
|
+
E.gens()
|
|
167
|
+
|
|
168
|
+
# Polynomial rings
|
|
169
|
+
R.<x,y> = PolynomialRing(QQ)
|
|
170
|
+
I = R.ideal(x^2 + y^2 - 1, x - y)
|
|
171
|
+
I.groebner_basis() # [y^2 - 1/2, x - y]
|
|
172
|
+
|
|
173
|
+
# Group theory
|
|
174
|
+
G = SymmetricGroup(4)
|
|
175
|
+
G.order() # 24
|
|
176
|
+
G.center()
|
|
177
|
+
G.normal_subgroups()
|
|
178
|
+
"""
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Combinatorics and Graph Theory
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
"""
|
|
185
|
+
# SageMath combinatorics
|
|
186
|
+
Partitions(10).cardinality() # 42
|
|
187
|
+
|
|
188
|
+
# Graph theory
|
|
189
|
+
G = graphs.PetersenGraph()
|
|
190
|
+
G.chromatic_number() # 3
|
|
191
|
+
G.is_vertex_transitive() # True
|
|
192
|
+
G.automorphism_group().order() # 120
|
|
193
|
+
|
|
194
|
+
# Posets and lattices
|
|
195
|
+
P = posets.BooleanLattice(3)
|
|
196
|
+
P.is_lattice()
|
|
197
|
+
P.mobius_function(P.bottom(), P.top())
|
|
198
|
+
"""
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Mathematica / Wolfram Language
|
|
202
|
+
|
|
203
|
+
### Common Research Patterns
|
|
204
|
+
|
|
205
|
+
```mathematica
|
|
206
|
+
(* Symbolic integration *)
|
|
207
|
+
Integrate[x^n * Exp[-x], {x, 0, Infinity}, Assumptions -> n > -1]
|
|
208
|
+
(* Result: Gamma[1 + n] *)
|
|
209
|
+
|
|
210
|
+
(* Solve a PDE *)
|
|
211
|
+
DSolve[D[u[x, t], t] == k * D[u[x, t], {x, 2}], u[x, t], {x, t}]
|
|
212
|
+
|
|
213
|
+
(* Asymptotic expansion *)
|
|
214
|
+
Series[Gamma[n + 1], {n, Infinity, 3}]
|
|
215
|
+
|
|
216
|
+
(* Minimize with constraints *)
|
|
217
|
+
NMinimize[{x^2 + y^2, x + y >= 1}, {x, y}]
|
|
218
|
+
|
|
219
|
+
(* Compute a sum in closed form *)
|
|
220
|
+
Sum[1/k^2, {k, 1, Infinity}] (* Pi^2/6 *)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Practical Workflows
|
|
224
|
+
|
|
225
|
+
### Verifying Research Computations
|
|
226
|
+
|
|
227
|
+
Common CAS workflow in mathematical research:
|
|
228
|
+
|
|
229
|
+
1. **Conjecture formulation**: Test conjectures for small cases programmatically
|
|
230
|
+
2. **Identity verification**: Verify algebraic identities symbolically
|
|
231
|
+
3. **Closed-form discovery**: Use pattern matching and OEIS lookup
|
|
232
|
+
4. **Proof assistance**: Compute bounds, verify inequalities
|
|
233
|
+
5. **Counterexample search**: Systematically search parameter spaces
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
from sympy import simplify, Abs
|
|
237
|
+
|
|
238
|
+
def verify_identity(lhs, rhs):
|
|
239
|
+
"""Verify a proposed mathematical identity symbolically."""
|
|
240
|
+
diff = simplify(lhs - rhs)
|
|
241
|
+
if diff == 0:
|
|
242
|
+
return "VERIFIED: identity holds symbolically"
|
|
243
|
+
else:
|
|
244
|
+
return f"NOT VERIFIED: difference = {diff}"
|
|
245
|
+
|
|
246
|
+
# Example: verify Cauchy-Schwarz for 2D
|
|
247
|
+
a1, a2, b1, b2 = symbols("a1 a2 b1 b2", real=True)
|
|
248
|
+
lhs = (a1*b1 + a2*b2)**2
|
|
249
|
+
rhs = (a1**2 + a2**2) * (b1**2 + b2**2)
|
|
250
|
+
diff = expand(rhs - lhs)
|
|
251
|
+
# (a1*b2 - a2*b1)**2 >= 0, confirming Cauchy-Schwarz
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
## Tools and Resources
|
|
255
|
+
|
|
256
|
+
- **SymPy**: Pure Python CAS, integrates with Jupyter and NumPy
|
|
257
|
+
- **SageMath**: Comprehensive open-source math system (wraps GAP, PARI, Singular, etc.)
|
|
258
|
+
- **Mathematica / Wolfram Alpha**: Commercial CAS with unmatched integration database
|
|
259
|
+
- **Maxima**: Free CAS (Lisp-based), used in wxMaxima GUI
|
|
260
|
+
- **PARI/GP**: Specialized in number theory computations
|
|
261
|
+
- **Macaulay2**: Commutative algebra and algebraic geometry
|
|
262
|
+
- **GAP**: Computational group theory
|
|
263
|
+
- **OEIS (oeis.org)**: Online Encyclopedia of Integer Sequences for pattern identification
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: topology-data-analysis
|
|
3
|
+
description: "Topological data analysis: persistent homology, Mapper, and TDA tools"
|
|
4
|
+
metadata:
|
|
5
|
+
openclaw:
|
|
6
|
+
emoji: "linked-paperclips"
|
|
7
|
+
category: "domains"
|
|
8
|
+
subcategory: "math"
|
|
9
|
+
keywords: ["topology", "persistent-homology", "tda", "mapper", "betti-numbers", "point-cloud"]
|
|
10
|
+
source: "wentor"
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Topological Data Analysis
|
|
14
|
+
|
|
15
|
+
A skill for applying topological data analysis (TDA) methods to research data. Covers persistent homology, Vietoris-Rips complexes, persistence diagrams, the Mapper algorithm, and vectorization methods for integrating topological features into machine learning pipelines.
|
|
16
|
+
|
|
17
|
+
## Core Concepts
|
|
18
|
+
|
|
19
|
+
### Simplicial Complexes from Data
|
|
20
|
+
|
|
21
|
+
TDA extracts topological features (connected components, loops, voids) from data by building simplicial complexes at multiple scales:
|
|
22
|
+
|
|
23
|
+
| Complex | Construction | Computational Cost |
|
|
24
|
+
|---------|-------------|-------------------|
|
|
25
|
+
| Vietoris-Rips | Edge if distance < epsilon | O(n^d) for d-simplices |
|
|
26
|
+
| Cech | Ball intersection (exact) | Computationally expensive |
|
|
27
|
+
| Alpha | Delaunay-based (exact in low dim) | Efficient in R^2, R^3 |
|
|
28
|
+
| Cubical | Grid-based (for images) | Linear in pixels |
|
|
29
|
+
|
|
30
|
+
### Filtration and Persistence
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Scale epsilon: 0.1 0.3 0.5 0.7 1.0
|
|
34
|
+
|------|------|------|------|------|
|
|
35
|
+
Components: 10 6 3 2 1
|
|
36
|
+
(H0 features born at 0, die at merging scale)
|
|
37
|
+
|
|
38
|
+
Loops: 0 0 1 2 0
|
|
39
|
+
(H1 features born when loop forms, die when filled)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
A feature that persists across many scales is a genuine topological signal; short-lived features are noise.
|
|
43
|
+
|
|
44
|
+
## Persistent Homology with Ripser
|
|
45
|
+
|
|
46
|
+
### Computing Persistence Diagrams
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
import numpy as np
|
|
50
|
+
from ripser import ripser
|
|
51
|
+
from persim import plot_diagrams
|
|
52
|
+
|
|
53
|
+
def compute_persistence(point_cloud: np.ndarray,
|
|
54
|
+
max_dim: int = 2,
|
|
55
|
+
max_edge: float = 2.0) -> dict:
|
|
56
|
+
"""
|
|
57
|
+
Compute persistent homology of a point cloud.
|
|
58
|
+
point_cloud: (n_points, n_dimensions) array
|
|
59
|
+
max_dim: maximum homology dimension to compute
|
|
60
|
+
max_edge: maximum edge length in Rips complex
|
|
61
|
+
Returns persistence diagrams for each dimension.
|
|
62
|
+
"""
|
|
63
|
+
result = ripser(
|
|
64
|
+
point_cloud,
|
|
65
|
+
maxdim=max_dim,
|
|
66
|
+
thresh=max_edge,
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
diagrams = result["dgms"]
|
|
70
|
+
summary = {}
|
|
71
|
+
|
|
72
|
+
for dim, dgm in enumerate(diagrams):
|
|
73
|
+
# Filter out infinite death times for H0
|
|
74
|
+
finite = dgm[dgm[:, 1] < np.inf] if len(dgm) > 0 else dgm
|
|
75
|
+
lifetimes = finite[:, 1] - finite[:, 0] if len(finite) > 0 else np.array([])
|
|
76
|
+
|
|
77
|
+
summary[f"H{dim}"] = {
|
|
78
|
+
"n_features": len(finite),
|
|
79
|
+
"max_persistence": float(lifetimes.max()) if len(lifetimes) > 0 else 0,
|
|
80
|
+
"mean_persistence": float(lifetimes.mean()) if len(lifetimes) > 0 else 0,
|
|
81
|
+
"birth_death_pairs": finite.tolist(),
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return summary
|
|
85
|
+
|
|
86
|
+
# Example: torus point cloud
|
|
87
|
+
def sample_torus(n=1000, R=3.0, r=1.0, noise=0.1):
|
|
88
|
+
"""Sample points from a torus in R^3."""
|
|
89
|
+
theta = np.random.uniform(0, 2 * np.pi, n)
|
|
90
|
+
phi = np.random.uniform(0, 2 * np.pi, n)
|
|
91
|
+
x = (R + r * np.cos(phi)) * np.cos(theta) + np.random.normal(0, noise, n)
|
|
92
|
+
y = (R + r * np.cos(phi)) * np.sin(theta) + np.random.normal(0, noise, n)
|
|
93
|
+
z = r * np.sin(phi) + np.random.normal(0, noise, n)
|
|
94
|
+
return np.column_stack([x, y, z])
|
|
95
|
+
|
|
96
|
+
torus = sample_torus(500)
|
|
97
|
+
persistence = compute_persistence(torus, max_dim=2)
|
|
98
|
+
# Expected: H0 has 1 long-lived component,
|
|
99
|
+
# H1 has 2 prominent loops (the two fundamental cycles),
|
|
100
|
+
# H2 has 1 prominent void (the cavity)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Persistence Vectorization
|
|
104
|
+
|
|
105
|
+
### Converting Persistence to Feature Vectors
|
|
106
|
+
|
|
107
|
+
To use topological features in machine learning, persistence diagrams must be vectorized:
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from sklearn.base import BaseEstimator, TransformerMixin
|
|
111
|
+
|
|
112
|
+
class PersistenceStatistics(BaseEstimator, TransformerMixin):
|
|
113
|
+
"""
|
|
114
|
+
Extract statistical features from persistence diagrams.
|
|
115
|
+
Produces a fixed-length feature vector from variable-length diagrams.
|
|
116
|
+
"""
|
|
117
|
+
|
|
118
|
+
def __init__(self, max_dim: int = 1):
|
|
119
|
+
self.max_dim = max_dim
|
|
120
|
+
|
|
121
|
+
def fit(self, X, y=None):
|
|
122
|
+
return self
|
|
123
|
+
|
|
124
|
+
def transform(self, diagrams_list: list) -> np.ndarray:
|
|
125
|
+
features = []
|
|
126
|
+
for diagrams in diagrams_list:
|
|
127
|
+
row = []
|
|
128
|
+
for dim in range(self.max_dim + 1):
|
|
129
|
+
dgm = diagrams[dim]
|
|
130
|
+
lifetimes = dgm[:, 1] - dgm[:, 0]
|
|
131
|
+
lifetimes = lifetimes[np.isfinite(lifetimes)]
|
|
132
|
+
|
|
133
|
+
if len(lifetimes) == 0:
|
|
134
|
+
row.extend([0, 0, 0, 0, 0, 0])
|
|
135
|
+
else:
|
|
136
|
+
row.extend([
|
|
137
|
+
len(lifetimes), # count
|
|
138
|
+
np.sum(lifetimes), # total persistence
|
|
139
|
+
np.max(lifetimes), # max persistence
|
|
140
|
+
np.mean(lifetimes), # mean persistence
|
|
141
|
+
np.std(lifetimes), # std persistence
|
|
142
|
+
np.sum(lifetimes ** 2), # persistence entropy proxy
|
|
143
|
+
])
|
|
144
|
+
features.append(row)
|
|
145
|
+
return np.array(features)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Persistence Images
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
def persistence_image(diagram: np.ndarray, resolution: int = 20,
|
|
152
|
+
sigma: float = 0.1,
|
|
153
|
+
weight_fn=None) -> np.ndarray:
|
|
154
|
+
"""
|
|
155
|
+
Compute a persistence image from a persistence diagram.
|
|
156
|
+
Transforms birth-death pairs into a stable, fixed-size representation.
|
|
157
|
+
"""
|
|
158
|
+
if weight_fn is None:
|
|
159
|
+
weight_fn = lambda birth, persistence: persistence
|
|
160
|
+
|
|
161
|
+
# Transform to birth-persistence coordinates
|
|
162
|
+
births = diagram[:, 0]
|
|
163
|
+
persistences = diagram[:, 1] - diagram[:, 0]
|
|
164
|
+
|
|
165
|
+
# Create grid
|
|
166
|
+
x_range = np.linspace(births.min() - sigma, births.max() + sigma, resolution)
|
|
167
|
+
y_range = np.linspace(0, persistences.max() + sigma, resolution)
|
|
168
|
+
xx, yy = np.meshgrid(x_range, y_range)
|
|
169
|
+
|
|
170
|
+
image = np.zeros((resolution, resolution))
|
|
171
|
+
|
|
172
|
+
for b, p in zip(births, persistences):
|
|
173
|
+
if not np.isfinite(p):
|
|
174
|
+
continue
|
|
175
|
+
w = weight_fn(b, p)
|
|
176
|
+
gaussian = w * np.exp(-((xx - b)**2 + (yy - p)**2) / (2 * sigma**2))
|
|
177
|
+
image += gaussian
|
|
178
|
+
|
|
179
|
+
return image
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## The Mapper Algorithm
|
|
183
|
+
|
|
184
|
+
### Constructing Mapper Graphs
|
|
185
|
+
|
|
186
|
+
Mapper provides a compressed topological summary of high-dimensional data:
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
import kmapper as km
|
|
190
|
+
from sklearn.cluster import DBSCAN
|
|
191
|
+
|
|
192
|
+
def run_mapper(data: np.ndarray, lens_fn=None, n_cubes: int = 10,
|
|
193
|
+
overlap: float = 0.3) -> dict:
|
|
194
|
+
"""
|
|
195
|
+
Run the Mapper algorithm to produce a simplicial complex
|
|
196
|
+
summarizing the shape of the data.
|
|
197
|
+
data: (n_samples, n_features) array
|
|
198
|
+
lens_fn: filter function (default: first two PCA components)
|
|
199
|
+
"""
|
|
200
|
+
mapper = km.KeplerMapper(verbose=0)
|
|
201
|
+
|
|
202
|
+
# Compute lens (filter function)
|
|
203
|
+
if lens_fn is None:
|
|
204
|
+
from sklearn.decomposition import PCA
|
|
205
|
+
lens = mapper.fit_transform(data, projection=PCA(n_components=2))
|
|
206
|
+
else:
|
|
207
|
+
lens = lens_fn(data)
|
|
208
|
+
|
|
209
|
+
# Build the Mapper graph
|
|
210
|
+
graph = mapper.map(
|
|
211
|
+
lens, data,
|
|
212
|
+
cover=km.Cover(n_cubes=n_cubes, perc_overlap=overlap),
|
|
213
|
+
clusterer=DBSCAN(eps=0.5, min_samples=3),
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
# Summary statistics
|
|
217
|
+
n_nodes = len(graph["nodes"])
|
|
218
|
+
n_edges = sum(len(v) for v in graph["links"].values()) // 2
|
|
219
|
+
|
|
220
|
+
return {
|
|
221
|
+
"n_nodes": n_nodes,
|
|
222
|
+
"n_edges": n_edges,
|
|
223
|
+
"node_sizes": [len(v) for v in graph["nodes"].values()],
|
|
224
|
+
"graph": graph,
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Mapper Parameters
|
|
229
|
+
|
|
230
|
+
| Parameter | Effect | Guidance |
|
|
231
|
+
|-----------|--------|---------|
|
|
232
|
+
| Filter function | Projects data to low dimensions | PCA, eccentricity, density |
|
|
233
|
+
| Number of intervals | Controls resolution of cover | 10-30 typical |
|
|
234
|
+
| Overlap percentage | Controls connectivity | 20-50%, higher = more edges |
|
|
235
|
+
| Clustering algorithm | Groups points within intervals | DBSCAN, single-linkage |
|
|
236
|
+
|
|
237
|
+
## Stability and Statistical Significance
|
|
238
|
+
|
|
239
|
+
### Bottleneck and Wasserstein Distances
|
|
240
|
+
|
|
241
|
+
```python
|
|
242
|
+
from persim import bottleneck, wasserstein
|
|
243
|
+
|
|
244
|
+
def compare_persistence_diagrams(dgm1: np.ndarray,
|
|
245
|
+
dgm2: np.ndarray) -> dict:
|
|
246
|
+
"""
|
|
247
|
+
Compare two persistence diagrams using standard TDA distances.
|
|
248
|
+
"""
|
|
249
|
+
bn_dist = bottleneck(dgm1, dgm2)
|
|
250
|
+
ws_dist = wasserstein(dgm1, dgm2, order=2)
|
|
251
|
+
|
|
252
|
+
return {
|
|
253
|
+
"bottleneck_distance": round(bn_dist, 6),
|
|
254
|
+
"wasserstein_2_distance": round(ws_dist, 6),
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Permutation Test for Topological Features
|
|
259
|
+
|
|
260
|
+
```python
|
|
261
|
+
def permutation_test_persistence(data1: np.ndarray, data2: np.ndarray,
|
|
262
|
+
n_permutations: int = 1000,
|
|
263
|
+
dim: int = 1) -> dict:
|
|
264
|
+
"""
|
|
265
|
+
Test whether two point clouds have significantly different
|
|
266
|
+
topological features using a permutation test on Wasserstein distance.
|
|
267
|
+
"""
|
|
268
|
+
from persim import wasserstein
|
|
269
|
+
|
|
270
|
+
# Observed distance
|
|
271
|
+
dgm1 = ripser(data1, maxdim=dim)["dgms"][dim]
|
|
272
|
+
dgm2 = ripser(data2, maxdim=dim)["dgms"][dim]
|
|
273
|
+
observed = wasserstein(dgm1, dgm2)
|
|
274
|
+
|
|
275
|
+
# Permutation distribution
|
|
276
|
+
combined = np.vstack([data1, data2])
|
|
277
|
+
n1 = len(data1)
|
|
278
|
+
perm_distances = []
|
|
279
|
+
|
|
280
|
+
for _ in range(n_permutations):
|
|
281
|
+
perm = np.random.permutation(len(combined))
|
|
282
|
+
perm_d1 = combined[perm[:n1]]
|
|
283
|
+
perm_d2 = combined[perm[n1:]]
|
|
284
|
+
perm_dgm1 = ripser(perm_d1, maxdim=dim)["dgms"][dim]
|
|
285
|
+
perm_dgm2 = ripser(perm_d2, maxdim=dim)["dgms"][dim]
|
|
286
|
+
perm_distances.append(wasserstein(perm_dgm1, perm_dgm2))
|
|
287
|
+
|
|
288
|
+
p_value = np.mean(np.array(perm_distances) >= observed)
|
|
289
|
+
|
|
290
|
+
return {
|
|
291
|
+
"observed_distance": round(observed, 6),
|
|
292
|
+
"p_value": round(p_value, 4),
|
|
293
|
+
"significant_at_005": p_value < 0.05,
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
## Tools and Libraries
|
|
298
|
+
|
|
299
|
+
- **Ripser / ripser.py**: Fast Vietoris-Rips persistence computation
|
|
300
|
+
- **GUDHI**: Comprehensive TDA library (C++ with Python bindings)
|
|
301
|
+
- **persim**: Persistence diagram distances and visualization
|
|
302
|
+
- **KeplerMapper**: Python Mapper algorithm implementation
|
|
303
|
+
- **giotto-tda**: TDA integrated with scikit-learn API
|
|
304
|
+
- **Dionysus 2**: Persistent homology and cohomology
|
|
305
|
+
- **scikit-tda**: Meta-package bundling ripser, persim, kepler-mapper, tadasets
|