@brainpilot/skills 0.0.6 → 0.0.8
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/package.json +2 -2
- package/skills/01_Meta-Skills/academic-research-hub/SKILL.md +108 -0
- package/skills/01_Meta-Skills/academic-research-hub/scripts/requirements.txt +17 -0
- package/skills/01_Meta-Skills/academic-research-hub/scripts/research.py +781 -0
- package/skills/01_Meta-Skills/beautiful-log/SKILL.md +64 -0
- package/skills/01_Meta-Skills/beautiful-log/scripts/beautiful_log.py +274 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/SKILL.md +130 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/config.template.yaml +54 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/top5_digest_template.md +5 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/build_top5_digest.py +300 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/common.py +137 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/merge_results.py +106 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/run_pipeline.py +177 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_arxiv.py +162 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_pubmed.py +202 -0
- package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/SKILL.md +173 -0
- package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/scripts/normalize_data.py +874 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/SKILL.md +134 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/confirmation-prompts.md +31 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/output-patterns.md +45 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_markdown_deliverables.py +41 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_research_log.py +84 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_summary_md.py +63 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/extract_pdf_bundle.py +140 -0
- package/skills/01_Meta-Skills/experiment-controller/SKILL.md +140 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/SKILL.md +366 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/entity_resolution.py +120 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/extraction_prompt_template.txt +19 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/graph_query.py +106 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/hypothesis_cli_reference.py +42 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/new_data_source_template.py +116 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/requirements.txt +15 -0
- package/skills/01_Meta-Skills/method-design/SKILL.md +61 -0
- package/skills/01_Meta-Skills/multi-search-engine/SKILL.md +119 -0
- package/skills/01_Meta-Skills/research-idea/SKILL.md +65 -0
- package/skills/05_EEG_ERP/eeg-skill/SKILL.md +197 -0
- package/skills/05_EEG_ERP/meg-skill/SKILL.md +188 -0
- package/skills/05_EEG_ERP/meg-skill/scripts/time_frequency.py +223 -0
- package/skills/05_EEG_ERP/mne-eeg-tool/SKILL.md +165 -0
- package/skills/05_EEG_ERP/mne-eeg-tool/scripts/eeg_pipeline_reference.py +231 -0
- package/skills/05_EEG_ERP/seed-iv-skill/SKILL.md +184 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/classify_seed_iv.py +154 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/extract_seed_iv_features.py +190 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/validate_seed_iv.py +102 -0
- package/skills/05_EEG_ERP/seed-vig-skill/SKILL.md +182 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/classify_seed_vig.py +165 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/extract_seed_vig_features.py +185 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/validate_seed_vig.py +88 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/SKILL.md +308 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/abcd_qc_summary.py +449 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/extract_abcd_phenotype.py +292 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/reorganize_abcd.py +387 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/SKILL.md +302 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/abide_qc_summary.py +317 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/extract_abide_phenotype.py +267 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/reorganize_abide.py +387 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/SKILL.md +244 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/adhd200_qc_summary.py +98 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/extract_adhd200_phenotype.py +134 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/reorganize_adhd200.py +206 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/SKILL.md +358 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_adni_task_files.py +1305 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_vqa_from_tasks.py +766 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/reorganize_adni.py +491 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/SKILL.md +295 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/aibl_qc_summary.py +260 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/extract_aibl_phenotype.py +365 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/reorganize_aibl.py +394 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/SKILL.md +292 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/aomic_qc_summary.py +258 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/extract_aomic_phenotype.py +284 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/reorganize_aomic.py +322 -0
- package/skills/06_fMRI_Neuroimaging/asl-skill/SKILL.md +168 -0
- package/skills/06_fMRI_Neuroimaging/asl-skill/scripts/compute_cbf.py +224 -0
- package/skills/06_fMRI_Neuroimaging/bids-organizer/SKILL.md +241 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/SKILL.md +186 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/bold5000_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/extract_bold5000_stimulus.py +125 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/reorganize_bold5000.py +102 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/SKILL.md +213 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/camcan_qc_summary.py +131 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/extract_camcan_phenotype.py +145 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/validate_camcan.py +141 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/SKILL.md +201 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/cobre_qc_summary.py +95 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/extract_cobre_phenotype.py +104 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/reorganize_cobre.py +140 -0
- package/skills/06_fMRI_Neuroimaging/conn-tool/SKILL.md +180 -0
- package/skills/06_fMRI_Neuroimaging/dcm2nii/SKILL.md +189 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/SKILL.md +183 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/dmt_har_med_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/extract_dmt_har_med_phenotype.py +121 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/reorganize_dmt_har_med.py +125 -0
- package/skills/06_fMRI_Neuroimaging/dwi-skill/SKILL.md +359 -0
- package/skills/06_fMRI_Neuroimaging/fmri-skill/SKILL.md +371 -0
- package/skills/06_fMRI_Neuroimaging/fmriprep-tool/SKILL.md +228 -0
- package/skills/06_fMRI_Neuroimaging/freesurfer-tool/SKILL.md +286 -0
- package/skills/06_fMRI_Neuroimaging/freesurfer-tool/scripts/freesurfer_processor.py +145 -0
- package/skills/06_fMRI_Neuroimaging/fsl-tool/SKILL.md +208 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/SKILL.md +271 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/extract_hbn_phenotype.py +107 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/hbn_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/reorganize_hbn.py +150 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/extract_hcpa_phenotype.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/hcpa_qc_summary.py +120 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/reorganize_hcpa.py +155 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/extract_hcpd_phenotype.py +148 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/hcpd_qc_summary.py +125 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/reorganize_hcpd.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/SKILL.md +215 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/extract_hcpep_phenotype.py +157 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/hcpep_qc_summary.py +143 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/reorganize_hcpep.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcppipeline-tool/SKILL.md +217 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/SKILL.md +214 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/extract_hcpya_phenotype.py +190 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/hcpya_qc_summary.py +152 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/reorganize_hcpya.py +203 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/SKILL.md +198 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/ixi_qc_summary.py +137 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/reorganize_ixi.py +190 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/SKILL.md +191 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/extract_mnd_phenotype.py +143 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/mnd_qc_summary.py +120 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/validate_mnd.py +107 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/SKILL.md +203 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/analyze_lesions.py +119 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/longitudinal_lesion.py +148 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/mschallenge_qc_summary.py +132 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/validate_mschallenge.py +116 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/SKILL.md +184 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/atlas_coordinate_reference.py +61 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/freesurfer_io_reference.py +34 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/nifti_inspection_reference.py +35 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/SKILL.md +205 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/extract_nifd_phenotype.py +132 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/nifd_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/validate_nifd.py +111 -0
- package/skills/06_fMRI_Neuroimaging/nii2dcm/SKILL.md +143 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/SKILL.md +266 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/connectome_reference.py +65 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/denoise_timeseries_reference.py +58 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/hierarchical_parcellation_reference.py +53 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/kmeans_parcellation_reference.py +53 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/preprocess_bold_reference.py +76 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_dictlearning_reference.py +56 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_ica_reference.py +59 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/second_level_glm_reference.py +58 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/spacenet_classifier_reference.py +59 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/svm_classifier_reference.py +60 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/task_glm_reference.py +63 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/zalff_summary_reference.py +109 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/extract_nsd_stimulus.py +171 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/nsd_qc_summary.py +142 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/validate_nsd.py +142 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/SKILL.md +205 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/extract_oasis_phenotype.py +126 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/oasis_qc_summary.py +115 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/validate_oasis.py +119 -0
- package/skills/06_fMRI_Neuroimaging/pet-skill/SKILL.md +173 -0
- package/skills/06_fMRI_Neuroimaging/pet-skill/scripts/compute_suvr.py +202 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/SKILL.md +206 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/extract_pnc_phenotype.py +136 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/pnc_qc_summary.py +116 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/validate_pnc.py +120 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/SKILL.md +209 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/extract_ppmi_phenotype.py +138 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/ppmi_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/validate_ppmi.py +117 -0
- package/skills/06_fMRI_Neuroimaging/qsiprep-tool/SKILL.md +320 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/SKILL.md +215 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/extract_rest_mdd_phenotype.py +132 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/harmonize_sites.py +152 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/rest_mdd_qc_summary.py +124 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/validate_rest_mdd.py +103 -0
- package/skills/06_fMRI_Neuroimaging/smri-skill/SKILL.md +302 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/SKILL.md +204 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/extract_tcp_phenotype.py +139 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/tcp_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/validate_tcp.py +99 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/SKILL.md +217 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/extract_ucla_cnp_phenotype.py +145 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/ucla_cnp_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/validate_ucla_cnp.py +113 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/SKILL.md +310 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/build_ukb_survival.py +210 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_cases.py +308 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_phenotype.py +232 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/ukb_qc_summary.py +158 -0
- package/skills/06_fMRI_Neuroimaging/wmh-segmentation/SKILL.md +133 -0
- package/skills/07_Computational_Modeling/detrending/SKILL.md +118 -0
- package/skills/07_Computational_Modeling/dictlearning/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/filtering/SKILL.md +121 -0
- package/skills/07_Computational_Modeling/glm/SKILL.md +153 -0
- package/skills/07_Computational_Modeling/hierarchical/SKILL.md +121 -0
- package/skills/07_Computational_Modeling/ica/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/kmeans/SKILL.md +119 -0
- package/skills/07_Computational_Modeling/run_models/SKILL.md +427 -0
- package/skills/07_Computational_Modeling/spacenet/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/svm/SKILL.md +120 -0
- package/skills/08_Computational_Neuroscience/brain_gnn/SKILL.md +183 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/SKILL.md +239 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/dti_metrics_reference.py +70 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/load_and_mask_reference.py +76 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/roi_stats_reference.py +59 -0
- package/skills/08_Computational_Neuroscience/fm_app/SKILL.md +195 -0
- package/skills/08_Computational_Neuroscience/neurostorm/SKILL.md +151 -0
- package/skills/13_Visualization/brain-visualization/SKILL.md +191 -0
- package/skills/13_Visualization/brain-visualization/scripts/connectome_reference.py +108 -0
- package/skills/13_Visualization/brain-visualization/scripts/freesurfer_ply_reference.py +54 -0
- package/skills/13_Visualization/brain-visualization/scripts/zalff_summary_reference.py +116 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/SKILL.md +78 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/assets/naturecomm_figures.tex +74 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/scripts/layout_results_foldered.py +579 -0
- package/skills/14_Writing/overleaf-skill/SKILL.md +184 -0
- package/skills/14_Writing/overleaf-skill/scripts/install.sh +30 -0
- package/skills/14_Writing/paper-writing/SKILL.md +146 -0
- package/skills/14_Writing/paper-writing/scripts/data_statement_templates.py +164 -0
- package/skills/14_Writing/paper-writing/scripts/figure_templates.py +315 -0
- package/skills/14_Writing/paper-writing/scripts/nature_figure_style.py +214 -0
- package/skills/14_Writing/paper-writing/scripts/section_phrasebank.py +246 -0
- package/skills/16_Animal_Behavior/deeplabcut/SKILL.md +154 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/3d-pose.md +89 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/maDLC.md +123 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/modelzoo.md +98 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/standard-pipeline.md +165 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/utilities.md +146 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/SKILL.md +274 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.html +112 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.md +21 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/cluster-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/heatmap-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/integrated-interpretation.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/overview.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/project-summary.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/radar-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/raw-trajectory.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/sample-check.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/single-subject-section.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/stats-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/epm.md +52 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/fst.md +37 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/nor.md +39 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/oft.md +43 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tcst.md +45 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tst.md +36 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/input-types.md +59 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/interpretation-guardrails.md +45 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/metadata-schema.md +57 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/report-sections.md +86 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/section-selection-rules.md +169 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/build_report_manifest.py +27 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/render_report.py +34 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/report_utils.py +1121 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/SKILL.md +390 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/reference_code.py +98 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-pose-estimation/SKILL.md +336 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/README.md +21 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/SKILL.md +41 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/batch_kinematic_generator.py +663 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/config.json +19 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/generate_kinematic_parameter.py +401 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/kinematic_generator.py +265 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/SKILL.md +72 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/references/config.example.toml +56 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params.py +232 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params_from_config.py +236 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/SKILL.md +68 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/references/notes.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/scripts/plot_h5_radar.py +513 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/SKILL.md +52 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/config.toml +81 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/references/stats-rule.md +18 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_inspect.py +79 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_batch.py +624 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_stats.py +438 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/SKILL.md +280 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_trajectory.py +790 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_velocity.py +855 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.csv +101 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.h5 +0 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_data_readme.md +126 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dwi-skill
|
|
3
|
+
description: "Use this skill whenever the user wants to preprocess diffusion MRI / DWI data, compute diffusion metrics (FA/MD/AD/RD, etc.), extract ROI-wise diffusion features, or run tractography/connectome-related workflows. Triggers include: 'DWI', 'DTI', 'diffusion MRI', 'FA', 'MD', 'AD', 'RD', 'eddy', 'topup', 'QSIPrep', 'tractography', 'connectome', 'TBSS', 'white matter microstructure'. This is the NeuroClaw modality-layer interface: it plans WHAT to do and delegates execution to tool skills."
|
|
4
|
+
license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
|
|
5
|
+
layer: subagent
|
|
6
|
+
skill_type: modality
|
|
7
|
+
dependencies:
|
|
8
|
+
- qsiprep-tool
|
|
9
|
+
- dipy-tool
|
|
10
|
+
- fsl-tool
|
|
11
|
+
- claw-shell
|
|
12
|
+
complementary_skills:
|
|
13
|
+
- fmri-skill
|
|
14
|
+
- smri-skill
|
|
15
|
+
---
|
|
16
|
+
# DWI Skill (Modality Layer)
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
`dwi-skill` is the NeuroClaw **modality-layer** interface skill responsible for diffusion MRI (DWI/DTI) preprocessing and feature extraction.
|
|
20
|
+
|
|
21
|
+
It strictly follows NeuroClaw hierarchical design principles:
|
|
22
|
+
- This skill defines **WHAT needs to be done** and **which tool skill to delegate to**.
|
|
23
|
+
- It contains **no implementation code** and **no concrete shell commands**.
|
|
24
|
+
- All concrete execution is delegated to tool skills and routed through `claw-shell`.- Reference implementations (MATLAB, Python) are provided for user understanding but should be wrapped via tool skills in production workflows.
|
|
25
|
+
**Core workflow (never bypassed):**
|
|
26
|
+
1. Identify input type (DICOM / NIfTI / BIDS), single-shell vs multi-shell, reverse phase-encoded b0/fieldmaps availability.
|
|
27
|
+
2. Generate a **numbered execution plan** (steps, tools, outputs, runtime, risks).
|
|
28
|
+
3. Present the plan and wait for explicit user confirmation (“YES” / “execute” / “proceed”).
|
|
29
|
+
4. On confirmation, delegate each step to the relevant tool skill via `claw-shell`.
|
|
30
|
+
5. Save outputs into `dwi_output/`.
|
|
31
|
+
|
|
32
|
+
When the task includes tractography or connectome construction, default to the strongest task-faithful diffusion route available rather than a generic tensor-only fallback:
|
|
33
|
+
- Prefer `QSIPrep -> MRtrix3` style downstream processing with multi-tissue FOD, ACT, SIFT2, and `tck2connectome` when data quality and inputs support it.
|
|
34
|
+
- Use tensor-only DIPY/DTI examples as a fallback, not as the default full-pipeline answer, unless the data are truly limited or the user explicitly requests a lightweight DTI-only workflow.
|
|
35
|
+
- If atlas/parcellation, label tables, registration/alignment targets, or tractography-critical settings are missing, state `Missing required input` explicitly and ask the user to choose the key analysis options before execution instead of silently assuming weak defaults.
|
|
36
|
+
|
|
37
|
+
## Benchmark-Facing Default Mainline
|
|
38
|
+
|
|
39
|
+
For benchmark-style DWI prompts, choose one explicit diffusion mainline and keep unrelated modality or alternative preprocessing branches out of the primary answer.
|
|
40
|
+
|
|
41
|
+
- If the prompt asks for a full DWI pipeline ending in tractography or a connectome:
|
|
42
|
+
- Default to `BIDS -> QSIPrep -> MRtrix3-style downstream tractography/connectome`.
|
|
43
|
+
- Keep the mainline focused on preprocessing, tensor/derived maps if requested, atlas alignment, tractography, and connectome export.
|
|
44
|
+
- Do not introduce fMRI, EEG, HCP multimodal, or generic nilearn connectivity branches.
|
|
45
|
+
- If the prompt asks only for preprocessing or tensor metrics:
|
|
46
|
+
- Stop at `QSIPrep` or `FSL/DIPY` tensor outputs and do not expand into tractography.
|
|
47
|
+
- If the prompt starts from existing tensor metric maps or asks only for ROI-wise metric summaries:
|
|
48
|
+
- Do not restart from raw DWI loading, preprocessing, tensor fitting, or tractography.
|
|
49
|
+
- Stay on the downstream ROI-statistics path the task actually asks for.
|
|
50
|
+
- If the prompt already provides a tractogram or otherwise starts downstream of preprocessing:
|
|
51
|
+
- Do not restart from raw DWI preprocessing or full tractography reconstruction.
|
|
52
|
+
- Stay on the downstream mainline the task actually asks for, such as `tck2connectome` from an existing filtered tractogram plus atlas/parcellation.
|
|
53
|
+
- If the connectome-critical inputs are missing, such as atlas/parcellation, LUT, registration target, or shell/model constraints:
|
|
54
|
+
- State `Missing required input` explicitly.
|
|
55
|
+
- Do not replace the requested full pipeline with a weaker tensor-only pipeline unless the prompt explicitly allows that fallback.
|
|
56
|
+
|
|
57
|
+
Prefer one narrow answer pattern plus a short blocked-items note over a broad menu of QSIPrep/FSL/HCP/MRtrix alternatives.
|
|
58
|
+
|
|
59
|
+
### Existing-Metric ROI Statistics Path
|
|
60
|
+
|
|
61
|
+
When the task already provides one or more metric maps such as `FA`, `MD`, `AD`, or `RD` together with an atlas/label image, the default mainline should be:
|
|
62
|
+
|
|
63
|
+
1. verify atlas and metric-map space compatibility,
|
|
64
|
+
2. select only the provided metric subset,
|
|
65
|
+
3. compute per-label statistics on those metric maps,
|
|
66
|
+
4. write one CSV per selected metric,
|
|
67
|
+
5. report any geometry or missing-input blockers.
|
|
68
|
+
|
|
69
|
+
In this situation, do not broaden the answer into DWI preprocessing, bval/bvec handling, new tensor fitting, or tractography unless the prompt explicitly asks to regenerate those prerequisites.
|
|
70
|
+
|
|
71
|
+
### Existing-Tractography Connectome Path
|
|
72
|
+
|
|
73
|
+
When the task already provides a tractogram and asks for a structural connectome, the default mainline should be:
|
|
74
|
+
|
|
75
|
+
1. verify the tractogram format and atlas/parcellation space,
|
|
76
|
+
2. verify node labels/LUT or declare them missing,
|
|
77
|
+
3. run `tck2connectome` on the provided tractogram,
|
|
78
|
+
4. export `connectome.csv` and optional assignments/weighted outputs,
|
|
79
|
+
5. report any alignment or labeling blockers.
|
|
80
|
+
|
|
81
|
+
In this situation, do not broaden the answer into response estimation, CSD fitting, new whole-brain tractography generation, or unrelated preprocessing unless the prompt explicitly asks to regenerate those prerequisites.
|
|
82
|
+
|
|
83
|
+
**Research use only.**
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Quick Reference (Common DWI Tasks → Delegation Map)
|
|
88
|
+
|
|
89
|
+
| Task | What needs to be done (high level) | Delegate to which skill | Expected outputs |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| DICOM → NIfTI | Convert DICOM series to NIfTI + bval/bvec (+json) | `dcm2nii` | `*.nii.gz`, `*.bval`, `*.bvec`, `*.json` |
|
|
92
|
+
| Organize to BIDS | Build BIDS-compliant diffusion dataset | `bids-organizer` | `bids/sub-*/dwi/...` |
|
|
93
|
+
| **Best-practice DWI preprocessing (recommended)** | Run containerized BIDS-App with robust workflows + QC | **`qsiprep-tool`** | `derivatives/qsiprep/.../*preproc_dwi.nii.gz`, QC HTML |
|
|
94
|
+
| Manual FSL preprocessing | topup/eddy pipeline (expert/manual control) | `fsl-tool` | corrected DWI, rotated bvecs, QC (`eddy_quad`) |
|
|
95
|
+
| HCP-grade diffusion preprocessing | HCP diffusion pipeline end-to-end | `hcppipeline-tool` | HCP-style diffusion outputs |
|
|
96
|
+
| Tensor metrics | Fit DTI and compute FA/MD/AD/RD | `dipy-tool` (or `fsl-tool` dtifit) | `FA/MD/AD/RD.nii.gz` |
|
|
97
|
+
| ROI-wise diffusion features | Extract ROI stats from FA/MD/etc maps | `nilearn-tool` (or `fsl-tool`) | `roi_stats_*.csv` |
|
|
98
|
+
| **Tractography & connectome (MRtrix3-based)** | **FOD estimation, ACT-based tractography, SIFT filtering, connectome construction** | **`dipy-tool` (or `fsl-tool` bedpostx/probtrackx or dedicated MRtrix3 wrapper)** | **streamline tractograms (.tck), connectivity matrices, VTK visualization** |
|
|
99
|
+
| Fiber orientation distribution (FOD) | Compute multi-tissue CSD FODs from preprocessed DWI | `dipy-tool` (or MRtrix3 dwi2fod) | `WM_FODs.mif`, `GM.mif`, `CSF.mif` |
|
|
100
|
+
| Anatomically-Constrained Tractography (ACT) | Generate 5-tissue segmentation from T1w, seed probabilistic streamlines with constraints | `dipy-tool` (or MRtrix3 tckgen+5ttgen) | streamline tractograms (.tck), 5TT tissue maps |
|
|
101
|
+
| SIFT streamline filtering | Reduce quantization bias in streamlines via Shape-Preserving SIFT | `dipy-tool` (or MRtrix3 tcksift) | filtered tractogram (.tck), streamline counts |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Recommended Default Strategy
|
|
106
|
+
- **Default benchmark route for full DWI/connectome tasks** → `qsiprep-tool` for preprocessing, then MRtrix3-style multi-tissue FOD + ACT + SIFT2 + `tck2connectome`
|
|
107
|
+
- **BIDS input + robust preprocessing + QC only** → `qsiprep-tool`
|
|
108
|
+
- **FSL eddy/topup + low-level control when explicitly requested** → `fsl-tool`
|
|
109
|
+
- **HCP-style preprocessing only when the prompt explicitly calls for HCP conventions or inputs** → `hcppipeline-tool`
|
|
110
|
+
|
|
111
|
+
### Preferred Full-Pipeline Answer Pattern
|
|
112
|
+
When the user asks for a full DWI pipeline that ends in tractography or connectome outputs, the plan should usually be framed as:
|
|
113
|
+
1. Organize raw inputs into BIDS.
|
|
114
|
+
2. Run `qsiprep-tool` preprocessing with rotated bvecs and QC.
|
|
115
|
+
3. Confirm structural/parcellation prerequisites for connectomics:
|
|
116
|
+
- T1w image quality and space
|
|
117
|
+
- FreeSurfer `aparc+aseg` or another atlas/parcellation
|
|
118
|
+
- label table / LUT
|
|
119
|
+
- DWI-space alignment target or registration route
|
|
120
|
+
4. Build an MRtrix3-style downstream workflow:
|
|
121
|
+
- 5TT segmentation
|
|
122
|
+
- label conversion to connectome nodes
|
|
123
|
+
- response estimation
|
|
124
|
+
- multi-tissue CSD FODs
|
|
125
|
+
- ACT tractography with backtracking
|
|
126
|
+
- SIFT2 weighting or SIFT filtering
|
|
127
|
+
- `tck2connectome`
|
|
128
|
+
5. Only fall back to tensor-only tractography/connectivity if the data or missing inputs make the preferred route invalid.
|
|
129
|
+
|
|
130
|
+
### Missing Inputs And User Choices
|
|
131
|
+
If the task cannot be fully specified from the prompt alone, ask for the missing analysis-critical items before execution. Typical required user decisions include:
|
|
132
|
+
- Which atlas/parcellation to use for the connectome: FreeSurfer `aparc+aseg`, Desikan, Destrieux, Schaefer, AAL, or a user-supplied atlas
|
|
133
|
+
- Whether the atlas is already in DWI space, T1w space, or MNI space, and what registration path should be used
|
|
134
|
+
- Whether a labels/LUT CSV/TSV is available and which file should define ROI names/order
|
|
135
|
+
- Whether the acquisition is single-shell or multi-shell, which constrains DTI-only vs FOD/CSD modeling
|
|
136
|
+
- Tractography algorithm and scale choices when they materially affect the result, for example deterministic vs probabilistic tracking, target streamline count, minimum/maximum streamline length, cutoff threshold, SIFT vs SIFT2, and connectome weighting rule
|
|
137
|
+
|
|
138
|
+
If those inputs are missing, do both of the following:
|
|
139
|
+
1. State `Missing required input:` and list the exact missing files or decisions.
|
|
140
|
+
2. Offer the user a short menu of high-impact parameter choices instead of burying them in assumptions.
|
|
141
|
+
|
|
142
|
+
### HCP-Style MRtrix3 Tractography Workflow
|
|
143
|
+
Generate high-quality fiber tracts with FOD + ACT + SIFT2/SIFT filtering → VTK visualization and connectome generation.
|
|
144
|
+
|
|
145
|
+
**Inputs:** Preprocessed DWI (motion/eddy/distortion corrected), rotated bvecs, T1w (ACPC-aligned), FreeSurfer `aparc+aseg.nii.gz`, brain mask
|
|
146
|
+
|
|
147
|
+
**Processing:** Delegate to `dipy-tool` or MRtrix3-native wrapper:
|
|
148
|
+
1. 5TT tissue segmentation (CSF/GM/WM/pathological) from T1w
|
|
149
|
+
2. Parcellation relabeling (FreeSurfer → MRtrix3 connectome labels)
|
|
150
|
+
3. DWI format conversion to MIF with gradient info
|
|
151
|
+
4. Multi-tissue response functions (WM/GM/CSF) via `msmt_5tt`
|
|
152
|
+
5. Multi-tissue CSD FOD computation → WM_FODs, GM, CSF
|
|
153
|
+
6. ACT-constrained tractography with backtracking (50k streamlines or user-selected target)
|
|
154
|
+
7. Prefer SIFT2 streamline weighting; use SIFT filtering when a filtered tractogram file is specifically required
|
|
155
|
+
8. VTK format conversion for visualization
|
|
156
|
+
9. ROI connectome matrix via `tck2connectome`, ideally with SIFT2 weights when available
|
|
157
|
+
|
|
158
|
+
**Runtime:** 30–60 min/subject | **Disk:** ~30 GB/subject (intermediate MIF files) | **Memory:** 16–32 GB | **Cores:** 8–16 (multi-threaded)
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Installation (Ubuntu)
|
|
163
|
+
|
|
164
|
+
**MRtrix3 (Conda):**
|
|
165
|
+
```bash
|
|
166
|
+
conda install -c conda-forge -c mrtrix3 mrtrix3 libstdcxx-ng
|
|
167
|
+
conda update -c mrtrix3 mrtrix3
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**FSL (includes FIRST for subcortical refinement):**
|
|
171
|
+
```bash
|
|
172
|
+
curl -Ls https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/getfsl.sh | sh -s
|
|
173
|
+
export FSLDIR=/usr/local/fsl
|
|
174
|
+
source $FSLDIR/etc/fslconf/fsl.sh && export PATH=$FSLDIR/bin:$PATH
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**FreeSurfer Integration:** MRtrix3 uses `/usr/local/freesurfer/FreeSurferColorLUT.txt` and `share/mrtrix3/labelconvert/fs_default.txt`
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Complete HCP-Style MRtrix3 Tractography (Key Steps)
|
|
182
|
+
|
|
183
|
+
**Required inputs:** Preprocessed DWI.nii.gz, bvecs/bvals (rotated), T1w_acpc_dc_restore_brain.nii.gz, aparc+aseg.nii.gz, brain mask
|
|
184
|
+
|
|
185
|
+
| Step | Command | Input | Output | Purpose |
|
|
186
|
+
|---:|---|---|---|---|
|
|
187
|
+
| 1 | `5ttgen fsl T1w ... 5TT.mif -premasked` | T1w, mask | 5TT.mif | 5-tissue segmentation (CSF/GM/WM) → ACT seed |
|
|
188
|
+
| 2 | `labelconvert aparc+aseg.nii.gz ... nodes.mif` | parcellation | nodes.mif | FreeSurfer→MRtrix3 connectome labels |
|
|
189
|
+
| 3 | `mrconvert DWI.nii.gz DWI.mif -fslgrad bvecs bvals` | DWI | DWI.mif | Embed gradients; standardize format |
|
|
190
|
+
| 4 | `dwi2response msmt_5tt DWI.mif 5TT.mif RF_*.txt` | DWI, 5TT | RF_WM/GM/CSF.txt | Multi-tissue response functions |
|
|
191
|
+
| 5 | `dwi2fod msmt_csd DWI.mif RF_*.txt WM_FODs.mif ...` | DWI, responses | WM_FODs.mif | FOD computation (multi-tissue CSD) |
|
|
192
|
+
| 6 | `tckgen WM_FODs.mif 5W.tck -act 5TT.mif -backtrack ...` | FOD, 5TT | 5W.tck | 50k streamlines w/ ACT constraints; backtrack, minlength 15, maxlength 600, **cutoff 0.06** |
|
|
193
|
+
| 7 | `tcksift2 5W.tck WM_FODs.mif sift2_weights.txt -act ...` | tractogram, FOD | sift2_weights.txt | Preferred quantitative weighting for connectome construction |
|
|
194
|
+
| 8 | `trk2vtk 5W.tck fiber_*.vtk` | tractogram | VTK file | Visualization in ParaView/TrackVis |
|
|
195
|
+
| 9 | `tck2connectome 5W.tck nodes.mif connectome.csv -tck_weights_in sift2_weights.txt` | tractogram, parcels, SIFT2 weights | connectome.csv | Preferred ROI×ROI structural connectome |
|
|
196
|
+
|
|
197
|
+
If the user explicitly wants a filtered tractogram artifact, an additional SIFT run is still valid:
|
|
198
|
+
- `tcksift 5W.tck WM_FODs.mif 5W_SIFT_v2.tck -act 5TT.mif`
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Reference Implementation (Batch Processing via MATLAB)
|
|
203
|
+
|
|
204
|
+
```matlab
|
|
205
|
+
%% Fiber_Tracking_Batch.m - Batch MRtrix3 tractography (HCP reference)
|
|
206
|
+
% NOTE: For reference only; delegate actual execution to tool skills.
|
|
207
|
+
|
|
208
|
+
clc; source_data_path = '/media/hzb/S900-1-1/';
|
|
209
|
+
output_dir = '/media/disk10t/hzb/data/HCP_s900_data/MRtrix_fiber';
|
|
210
|
+
cd(output_dir);
|
|
211
|
+
|
|
212
|
+
%% Batch loop: iterate subjects by ID prefix (1*...9*)
|
|
213
|
+
for num_begin = 1:9
|
|
214
|
+
tt = [num2str(num_begin), '*'];
|
|
215
|
+
File = dir(fullfile(source_data_path, tt));
|
|
216
|
+
FileNames = {File.name}';
|
|
217
|
+
|
|
218
|
+
for file = 1:size(FileNames, 1)
|
|
219
|
+
fprintf('Processing: %s\n', FileNames{file,1});
|
|
220
|
+
orig_data_dir = [source_data_path FileNames{file,1}];
|
|
221
|
+
|
|
222
|
+
% Skip if input missing
|
|
223
|
+
if ~exist([orig_data_dir '/T1w/Diffusion/data.nii.gz']), continue; end
|
|
224
|
+
|
|
225
|
+
% CHECKPOINT: skip if already processed
|
|
226
|
+
if exist([output_dir '/' FileNames{file,1} '/5TT.mif']), continue; end
|
|
227
|
+
|
|
228
|
+
out_sbj_dir = [output_dir '/' FileNames{file,1}];
|
|
229
|
+
mkdir(out_sbj_dir); cd(out_sbj_dir);
|
|
230
|
+
|
|
231
|
+
% Copy 6 input files from HCP source
|
|
232
|
+
copyfile([orig_data_dir '/T1w/Diffusion/bvals'], [out_sbj_dir '/bvals']);
|
|
233
|
+
copyfile([orig_data_dir '/T1w/Diffusion/bvecs'], [out_sbj_dir '/bvecs']);
|
|
234
|
+
copyfile([orig_data_dir '/T1w/Diffusion/data.nii.gz'], [out_sbj_dir '/data.nii.gz']);
|
|
235
|
+
copyfile([orig_data_dir '/T1w/Diffusion/nodif_brain_mask.nii.gz'], [out_sbj_dir '/nodif_brain_mask.nii.gz']);
|
|
236
|
+
copyfile([orig_data_dir '/T1w/T1w_acpc_dc_restore_brain.nii.gz'], [out_sbj_dir '/T1w_acpc_dc_restore_brain.nii.gz']);
|
|
237
|
+
copyfile([orig_data_dir '/T1w/aparc+aseg.nii.gz'], [out_sbj_dir '/aparc+aseg.nii.gz']);
|
|
238
|
+
|
|
239
|
+
try
|
|
240
|
+
% Steps 1-9: MRtrix3 pipeline
|
|
241
|
+
system('5ttgen fsl T1w_acpc_dc_restore_brain.nii.gz 5TT.mif -premasked');
|
|
242
|
+
system('labelconvert aparc+aseg.nii.gz /usr/local/freesurfer/FreeSurferColorLUT.txt /home/hzb/anaconda3/share/mrtrix3/labelconvert/fs_default.txt nodes.mif');
|
|
243
|
+
system('mrconvert data.nii.gz DWI.mif -fslgrad bvecs bvals -datatype float32 -strides 0,0,0,1');
|
|
244
|
+
system('dwiextract DWI.mif - -bzero | mrmath - mean meanb0.mif -axis 3');
|
|
245
|
+
system('dwi2response msmt_5tt DWI.mif 5TT.mif RF_WM.txt RF_GM.txt RF_CSF.txt -voxels RF_voxels.mif');
|
|
246
|
+
system('dwi2fod msmt_csd DWI.mif RF_WM.txt WM_FODs.mif RF_GM.txt GM.mif RF_CSF.txt CSF.mif -mask nodif_brain_mask.nii.gz');
|
|
247
|
+
system('tckgen WM_FODs.mif 5W.tck -act 5TT.mif -backtrack -crop_at_gmwmi -seed_dynamic WM_FODs.mif -minlength 15 -maxlength 600 -select 50000 -cutoff 0.06');
|
|
248
|
+
system('tcksift 5W.tck WM_FODs.mif 5W_SIFT_v2.tck -act 5TT.mif -term_number 50000');
|
|
249
|
+
trk2vtk('5W_SIFT_v2.tck', [out_sbj_dir '/' FileNames{file,1} '_fiber_mrtrix_5W_SIFT_v2.vtk']);
|
|
250
|
+
|
|
251
|
+
% Optional: connectome
|
|
252
|
+
% system('tck2connectome 5W_SIFT_v2.tck nodes.mif connectome.csv -symmetric -zero_diagonal');
|
|
253
|
+
|
|
254
|
+
fprintf(' ✓ Complete\n\n');
|
|
255
|
+
catch ME
|
|
256
|
+
fprintf(' ERROR: %s. Skipping.\n\n', ME.message);
|
|
257
|
+
continue
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
fprintf('Batch complete!\n');
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
**Key features:** Checkpoint-based skip logic (5TT.mif exists → skip), file auto-copy, error handling (try-catch), progress reporting. **Specs:** 30–60 min/subject, ~30 GB disk, 16–32 GB RAM, 8–16 cores ideal.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Standard Output Layout (Recommended)
|
|
269
|
+
All outputs must be written under `./dwi_output/`:
|
|
270
|
+
- `dwi_output/bids/` (optional local BIDS copy/staging)
|
|
271
|
+
- `dwi_output/preproc/` (QSIPrep/FSL/HCP outputs + QC pointers)
|
|
272
|
+
- `dwi_output/dti/` (FA/MD/AD/RD maps)
|
|
273
|
+
- `dwi_output/roi/` (ROI summary CSVs)
|
|
274
|
+
- `dwi_output/mrtrix3/` (MRtrix3-specific outputs)
|
|
275
|
+
- `mrtrix3/5TT.mif` (5-tissue tissue segmentation map)
|
|
276
|
+
- `mrtrix3/nodes.mif` (parcellation in connectome space)
|
|
277
|
+
- `mrtrix3/DWI.mif` (DWI data in MRtrix3 format)
|
|
278
|
+
- `mrtrix3/RF_WM.txt`, `RF_GM.txt`, `RF_CSF.txt` (tissue-specific response functions)
|
|
279
|
+
- `mrtrix3/WM_FODs.mif` (white matter fiber orientation distribution)
|
|
280
|
+
- `mrtrix3/GM.mif`, `CSF.mif` (tissue density maps)
|
|
281
|
+
- `mrtrix3/5W.tck` (raw tractogram, 50k streamlines)
|
|
282
|
+
- `mrtrix3/sift2_weights.txt` (preferred SIFT2 streamline weights)
|
|
283
|
+
- `mrtrix3/5W_SIFT_v2.tck` (optional SIFT-filtered tractogram when explicitly requested)
|
|
284
|
+
- `mrtrix3/fiber_mrtrix_5W_SIFT_v2.vtk` (VTK format for visualization)
|
|
285
|
+
- `mrtrix3/connectome.csv` (ROI×ROI connectivity matrix, preferably SIFT2-weighted)
|
|
286
|
+
- `dwi_output/logs/` (claw-shell logs/tags, MRtrix3 command logs)
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Important Notes & Limitations
|
|
291
|
+
|
|
292
|
+
**General preprocessing:**
|
|
293
|
+
- Preprocessing critical: motion, eddy, distortion sensitivity
|
|
294
|
+
- Use **rotated bvecs** (not original) after correction for downstream fitting
|
|
295
|
+
- Reverse PE or fieldmaps strongly improve distortion correction
|
|
296
|
+
- Single-shell (b=1000) allows DTI; multi-shell enables higher-order models (FOD, HARDI, CSD)
|
|
297
|
+
|
|
298
|
+
**MRtrix3 tractography:**
|
|
299
|
+
- Tissue segmentation quality paramount: poor T1w or FreeSurfer → anatomically implausible tracts
|
|
300
|
+
- **msmt_5tt** (multi-tissue, 5TT-constrained) most robust; requires 5TT from structural pipeline
|
|
301
|
+
- **Multi-tissue CSD** (msmt_csd) decomposes WM/GM/CSF jointly; improves specificity
|
|
302
|
+
- **ACT:** enforces WM→GM interface endings; **backtrack** allows complex anatomy
|
|
303
|
+
- **Cutoff 0.06** typical for single-shell; adjust for multi-shell or high b-value
|
|
304
|
+
- **SIFT2 weighting:** usually preferred for quantitative connectomes; preserve the full tractogram and pass weights into `tck2connectome`
|
|
305
|
+
- **SIFT filtering:** still useful when the downstream consumer explicitly needs a filtered tractogram file
|
|
306
|
+
- **Runtime:** 30–60 min/subject; **disk:** ~30 GB; **RAM:** 16–32 GB; **cores:** 8–16 (multi-threaded)
|
|
307
|
+
|
|
308
|
+
**Limitations:**
|
|
309
|
+
- MRtrix3 requires single/multi-shell HARDI; not suitable for low-angular-resolution DWI
|
|
310
|
+
- Tractography inherently ambiguous: streamlines are probabilistic reconstructions, not ground truth; crossing-fiber challenges remain
|
|
311
|
+
- Connectome counts depend on seeding, filtering, anatomy; not directly comparable across studies without normalization
|
|
312
|
+
- DWI preprocessing (eddy/topup) and FOD are computational bottlenecks
|
|
313
|
+
- **Research use only;** not validated for clinical navigation or surgical planning
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## When to Call This Skill
|
|
318
|
+
- The user requests DWI/DTI preprocessing (QSIPrep, FSL eddy/topup, HCP) or diffusion feature extraction (FA/MD/AD/RD).
|
|
319
|
+
- The user wants **fiber tractography** with anatomical constraints (MRtrix3 ACT + SIFT).
|
|
320
|
+
- The user wants ROI-based diffusion statistics, **connectome matrices**, or **VTK fiber visualization**.
|
|
321
|
+
- After `research-idea` or `method-design` when the study involves white matter microstructure or structural connectivity.
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Complementary / Related Skills
|
|
326
|
+
- `qsiprep-tool` → recommended BIDS-App diffusion preprocessing + QC reports
|
|
327
|
+
- `fsl-tool` → topup/eddy, dtifit, bedpostx/probtrackx, diffusion utilities; **FIRST** used for subcortical segmentation in MRtrix3 pipelines
|
|
328
|
+
- `hcppipeline-tool` → HCP diffusion preprocessing alternative
|
|
329
|
+
- `dipy-tool` → tensor metrics (FA/MD/AD/RD), custom diffusion fitting, scalar map generation; can also implement MRtrix3 workflows (alternative to shell commands)
|
|
330
|
+
- `smri-skill` → T1w structural preprocessing (critical for 5TT segmentation and FreeSurfer parcellation in MRtrix3 tractography)
|
|
331
|
+
- `nilearn-tool` → ROI/atlas feature extraction from diffusion scalar maps (NIfTI)
|
|
332
|
+
- `bids-organizer` → create/validate BIDS dataset
|
|
333
|
+
- `dcm2nii` → DICOM → NIfTI conversion (upstream for diffusion data)
|
|
334
|
+
- `dependency-planner` + `conda-env-manager` → MRtrix3 & FSL installation/environment management
|
|
335
|
+
- `docker-env-manager` → used when QSIPrep or other containerized tools need Docker planning
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Reference
|
|
340
|
+
Aligned with NeuroClaw modality-skill pattern (see `fmri-skill`, `smri-skill`, `eeg-skill`).
|
|
341
|
+
**Validated pipeline**: HCP-style MRtrix3 fiber tractography (5TT + multi-tissue CSD FOD + ACT + SIFT filtering).
|
|
342
|
+
Core tools used:
|
|
343
|
+
- `qsiprep-tool` (v0.16+): BIDS-App diffusion preprocessing + QC
|
|
344
|
+
- `fsl-tool`: eddy/topup motion & distortion correction, FIRST subcortical segmentation
|
|
345
|
+
- `mrtrix3` (v3.0+): tissue segmentation, FOD, tractography, SIFT filtering
|
|
346
|
+
- `freesurfer-tool`: cortical/subcortical segmentation (aparc+aseg parcellation)
|
|
347
|
+
- `dipy`: Python diffusion modeling library (alternative implementation)
|
|
348
|
+
- `nilearn`: Atlas-based ROI extraction from scalar maps
|
|
349
|
+
|
|
350
|
+
**Key references**:
|
|
351
|
+
- Jeurissen et al. (2014): Multi-tissue CSD for robust FOD estimation
|
|
352
|
+
- Smith et al. (2012): Anatomically-Constrained Tractography (ACT) principles
|
|
353
|
+
- Smith et al. (2015): SIFT quantitative fiber tractography
|
|
354
|
+
- Fischl et al. (2002): FreeSurfer cortical parcellation
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
Created At: 2026-03-26 01:01 HKT
|
|
358
|
+
Last Updated At: 2026-03-28 18:08 HKT
|
|
359
|
+
Author: chengwang96
|