@brainpilot/skills 0.0.6 → 0.0.7

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.
Files changed (285) hide show
  1. package/package.json +2 -2
  2. package/skills/01_Meta-Skills/academic-research-hub/SKILL.md +108 -0
  3. package/skills/01_Meta-Skills/academic-research-hub/scripts/requirements.txt +17 -0
  4. package/skills/01_Meta-Skills/academic-research-hub/scripts/research.py +781 -0
  5. package/skills/01_Meta-Skills/beautiful-log/SKILL.md +64 -0
  6. package/skills/01_Meta-Skills/beautiful-log/scripts/beautiful_log.py +274 -0
  7. package/skills/01_Meta-Skills/ethoclaw-daily-paper/SKILL.md +130 -0
  8. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/config.template.yaml +54 -0
  9. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/top5_digest_template.md +5 -0
  10. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/build_top5_digest.py +300 -0
  11. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/common.py +137 -0
  12. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/merge_results.py +106 -0
  13. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/run_pipeline.py +177 -0
  14. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_arxiv.py +162 -0
  15. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_pubmed.py +202 -0
  16. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/SKILL.md +173 -0
  17. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/scripts/normalize_data.py +874 -0
  18. package/skills/01_Meta-Skills/ethoclaw-pdf-research/SKILL.md +134 -0
  19. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/confirmation-prompts.md +31 -0
  20. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/output-patterns.md +45 -0
  21. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_markdown_deliverables.py +41 -0
  22. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_research_log.py +84 -0
  23. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_summary_md.py +63 -0
  24. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/extract_pdf_bundle.py +140 -0
  25. package/skills/01_Meta-Skills/experiment-controller/SKILL.md +140 -0
  26. package/skills/01_Meta-Skills/knowledge-graph-builder/SKILL.md +366 -0
  27. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/entity_resolution.py +120 -0
  28. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/extraction_prompt_template.txt +19 -0
  29. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/graph_query.py +106 -0
  30. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/hypothesis_cli_reference.py +42 -0
  31. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/new_data_source_template.py +116 -0
  32. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/requirements.txt +15 -0
  33. package/skills/01_Meta-Skills/method-design/SKILL.md +61 -0
  34. package/skills/01_Meta-Skills/multi-search-engine/SKILL.md +119 -0
  35. package/skills/01_Meta-Skills/research-idea/SKILL.md +65 -0
  36. package/skills/05_EEG_ERP/eeg-skill/SKILL.md +197 -0
  37. package/skills/05_EEG_ERP/meg-skill/SKILL.md +188 -0
  38. package/skills/05_EEG_ERP/meg-skill/scripts/time_frequency.py +223 -0
  39. package/skills/05_EEG_ERP/mne-eeg-tool/SKILL.md +165 -0
  40. package/skills/05_EEG_ERP/mne-eeg-tool/scripts/eeg_pipeline_reference.py +231 -0
  41. package/skills/05_EEG_ERP/seed-iv-skill/SKILL.md +184 -0
  42. package/skills/05_EEG_ERP/seed-iv-skill/scripts/classify_seed_iv.py +154 -0
  43. package/skills/05_EEG_ERP/seed-iv-skill/scripts/extract_seed_iv_features.py +190 -0
  44. package/skills/05_EEG_ERP/seed-iv-skill/scripts/validate_seed_iv.py +102 -0
  45. package/skills/05_EEG_ERP/seed-vig-skill/SKILL.md +182 -0
  46. package/skills/05_EEG_ERP/seed-vig-skill/scripts/classify_seed_vig.py +165 -0
  47. package/skills/05_EEG_ERP/seed-vig-skill/scripts/extract_seed_vig_features.py +185 -0
  48. package/skills/05_EEG_ERP/seed-vig-skill/scripts/validate_seed_vig.py +88 -0
  49. package/skills/06_fMRI_Neuroimaging/abcd-skill/SKILL.md +308 -0
  50. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/abcd_qc_summary.py +449 -0
  51. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/extract_abcd_phenotype.py +292 -0
  52. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/reorganize_abcd.py +387 -0
  53. package/skills/06_fMRI_Neuroimaging/abide-skill/SKILL.md +302 -0
  54. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/abide_qc_summary.py +317 -0
  55. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/extract_abide_phenotype.py +267 -0
  56. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/reorganize_abide.py +387 -0
  57. package/skills/06_fMRI_Neuroimaging/adhd200-skill/SKILL.md +244 -0
  58. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/adhd200_qc_summary.py +98 -0
  59. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/extract_adhd200_phenotype.py +134 -0
  60. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/reorganize_adhd200.py +206 -0
  61. package/skills/06_fMRI_Neuroimaging/adni-skill/SKILL.md +358 -0
  62. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_adni_task_files.py +1305 -0
  63. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_vqa_from_tasks.py +766 -0
  64. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/reorganize_adni.py +491 -0
  65. package/skills/06_fMRI_Neuroimaging/aibl-skill/SKILL.md +295 -0
  66. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/aibl_qc_summary.py +260 -0
  67. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/extract_aibl_phenotype.py +365 -0
  68. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/reorganize_aibl.py +394 -0
  69. package/skills/06_fMRI_Neuroimaging/aomic-skill/SKILL.md +292 -0
  70. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/aomic_qc_summary.py +258 -0
  71. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/extract_aomic_phenotype.py +284 -0
  72. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/reorganize_aomic.py +322 -0
  73. package/skills/06_fMRI_Neuroimaging/asl-skill/SKILL.md +168 -0
  74. package/skills/06_fMRI_Neuroimaging/asl-skill/scripts/compute_cbf.py +224 -0
  75. package/skills/06_fMRI_Neuroimaging/bids-organizer/SKILL.md +241 -0
  76. package/skills/06_fMRI_Neuroimaging/bold5000-skill/SKILL.md +186 -0
  77. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/bold5000_qc_summary.py +96 -0
  78. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/extract_bold5000_stimulus.py +125 -0
  79. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/reorganize_bold5000.py +102 -0
  80. package/skills/06_fMRI_Neuroimaging/camcan-skill/SKILL.md +213 -0
  81. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/camcan_qc_summary.py +131 -0
  82. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/extract_camcan_phenotype.py +145 -0
  83. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/validate_camcan.py +141 -0
  84. package/skills/06_fMRI_Neuroimaging/cobre-skill/SKILL.md +201 -0
  85. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/cobre_qc_summary.py +95 -0
  86. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/extract_cobre_phenotype.py +104 -0
  87. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/reorganize_cobre.py +140 -0
  88. package/skills/06_fMRI_Neuroimaging/conn-tool/SKILL.md +180 -0
  89. package/skills/06_fMRI_Neuroimaging/dcm2nii/SKILL.md +189 -0
  90. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/SKILL.md +183 -0
  91. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/dmt_har_med_qc_summary.py +96 -0
  92. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/extract_dmt_har_med_phenotype.py +121 -0
  93. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/reorganize_dmt_har_med.py +125 -0
  94. package/skills/06_fMRI_Neuroimaging/dwi-skill/SKILL.md +359 -0
  95. package/skills/06_fMRI_Neuroimaging/fmri-skill/SKILL.md +371 -0
  96. package/skills/06_fMRI_Neuroimaging/fmriprep-tool/SKILL.md +228 -0
  97. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/SKILL.md +286 -0
  98. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/scripts/freesurfer_processor.py +145 -0
  99. package/skills/06_fMRI_Neuroimaging/fsl-tool/SKILL.md +208 -0
  100. package/skills/06_fMRI_Neuroimaging/hbn-skill/SKILL.md +271 -0
  101. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/extract_hbn_phenotype.py +107 -0
  102. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/hbn_qc_summary.py +96 -0
  103. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/reorganize_hbn.py +150 -0
  104. package/skills/06_fMRI_Neuroimaging/hcpa-skill/SKILL.md +210 -0
  105. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/extract_hcpa_phenotype.py +146 -0
  106. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/hcpa_qc_summary.py +120 -0
  107. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/reorganize_hcpa.py +155 -0
  108. package/skills/06_fMRI_Neuroimaging/hcpd-skill/SKILL.md +210 -0
  109. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/extract_hcpd_phenotype.py +148 -0
  110. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/hcpd_qc_summary.py +125 -0
  111. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/reorganize_hcpd.py +146 -0
  112. package/skills/06_fMRI_Neuroimaging/hcpep-skill/SKILL.md +215 -0
  113. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/extract_hcpep_phenotype.py +157 -0
  114. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/hcpep_qc_summary.py +143 -0
  115. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/reorganize_hcpep.py +146 -0
  116. package/skills/06_fMRI_Neuroimaging/hcppipeline-tool/SKILL.md +217 -0
  117. package/skills/06_fMRI_Neuroimaging/hcpya-skill/SKILL.md +214 -0
  118. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/extract_hcpya_phenotype.py +190 -0
  119. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/hcpya_qc_summary.py +152 -0
  120. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/reorganize_hcpya.py +203 -0
  121. package/skills/06_fMRI_Neuroimaging/ixi-skill/SKILL.md +198 -0
  122. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/ixi_qc_summary.py +137 -0
  123. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/reorganize_ixi.py +190 -0
  124. package/skills/06_fMRI_Neuroimaging/mnd-skill/SKILL.md +191 -0
  125. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/extract_mnd_phenotype.py +143 -0
  126. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/mnd_qc_summary.py +120 -0
  127. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/validate_mnd.py +107 -0
  128. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/SKILL.md +203 -0
  129. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/analyze_lesions.py +119 -0
  130. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/longitudinal_lesion.py +148 -0
  131. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/mschallenge_qc_summary.py +132 -0
  132. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/validate_mschallenge.py +116 -0
  133. package/skills/06_fMRI_Neuroimaging/nibabel-skill/SKILL.md +184 -0
  134. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/atlas_coordinate_reference.py +61 -0
  135. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/freesurfer_io_reference.py +34 -0
  136. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/nifti_inspection_reference.py +35 -0
  137. package/skills/06_fMRI_Neuroimaging/nifd-skill/SKILL.md +205 -0
  138. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/extract_nifd_phenotype.py +132 -0
  139. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/nifd_qc_summary.py +111 -0
  140. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/validate_nifd.py +111 -0
  141. package/skills/06_fMRI_Neuroimaging/nii2dcm/SKILL.md +143 -0
  142. package/skills/06_fMRI_Neuroimaging/nilearn-tool/SKILL.md +266 -0
  143. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/connectome_reference.py +65 -0
  144. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/denoise_timeseries_reference.py +58 -0
  145. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/hierarchical_parcellation_reference.py +53 -0
  146. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/kmeans_parcellation_reference.py +53 -0
  147. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/preprocess_bold_reference.py +76 -0
  148. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_dictlearning_reference.py +56 -0
  149. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_ica_reference.py +59 -0
  150. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/second_level_glm_reference.py +58 -0
  151. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/spacenet_classifier_reference.py +59 -0
  152. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/svm_classifier_reference.py +60 -0
  153. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/task_glm_reference.py +63 -0
  154. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/zalff_summary_reference.py +109 -0
  155. package/skills/06_fMRI_Neuroimaging/nsd-skill/SKILL.md +210 -0
  156. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/extract_nsd_stimulus.py +171 -0
  157. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/nsd_qc_summary.py +142 -0
  158. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/validate_nsd.py +142 -0
  159. package/skills/06_fMRI_Neuroimaging/oasis-skill/SKILL.md +205 -0
  160. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/extract_oasis_phenotype.py +126 -0
  161. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/oasis_qc_summary.py +115 -0
  162. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/validate_oasis.py +119 -0
  163. package/skills/06_fMRI_Neuroimaging/pet-skill/SKILL.md +173 -0
  164. package/skills/06_fMRI_Neuroimaging/pet-skill/scripts/compute_suvr.py +202 -0
  165. package/skills/06_fMRI_Neuroimaging/pnc-skill/SKILL.md +206 -0
  166. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/extract_pnc_phenotype.py +136 -0
  167. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/pnc_qc_summary.py +116 -0
  168. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/validate_pnc.py +120 -0
  169. package/skills/06_fMRI_Neuroimaging/ppmi-skill/SKILL.md +209 -0
  170. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/extract_ppmi_phenotype.py +138 -0
  171. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/ppmi_qc_summary.py +111 -0
  172. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/validate_ppmi.py +117 -0
  173. package/skills/06_fMRI_Neuroimaging/qsiprep-tool/SKILL.md +320 -0
  174. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/SKILL.md +215 -0
  175. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/extract_rest_mdd_phenotype.py +132 -0
  176. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/harmonize_sites.py +152 -0
  177. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/rest_mdd_qc_summary.py +124 -0
  178. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/validate_rest_mdd.py +103 -0
  179. package/skills/06_fMRI_Neuroimaging/smri-skill/SKILL.md +302 -0
  180. package/skills/06_fMRI_Neuroimaging/tcp-skill/SKILL.md +204 -0
  181. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/extract_tcp_phenotype.py +139 -0
  182. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/tcp_qc_summary.py +111 -0
  183. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/validate_tcp.py +99 -0
  184. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/SKILL.md +217 -0
  185. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/extract_ucla_cnp_phenotype.py +145 -0
  186. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/ucla_cnp_qc_summary.py +111 -0
  187. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/validate_ucla_cnp.py +113 -0
  188. package/skills/06_fMRI_Neuroimaging/ukb-skill/SKILL.md +310 -0
  189. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/build_ukb_survival.py +210 -0
  190. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_cases.py +308 -0
  191. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_phenotype.py +232 -0
  192. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/ukb_qc_summary.py +158 -0
  193. package/skills/06_fMRI_Neuroimaging/wmh-segmentation/SKILL.md +133 -0
  194. package/skills/07_Computational_Modeling/detrending/SKILL.md +118 -0
  195. package/skills/07_Computational_Modeling/dictlearning/SKILL.md +122 -0
  196. package/skills/07_Computational_Modeling/filtering/SKILL.md +121 -0
  197. package/skills/07_Computational_Modeling/glm/SKILL.md +153 -0
  198. package/skills/07_Computational_Modeling/hierarchical/SKILL.md +121 -0
  199. package/skills/07_Computational_Modeling/ica/SKILL.md +122 -0
  200. package/skills/07_Computational_Modeling/kmeans/SKILL.md +119 -0
  201. package/skills/07_Computational_Modeling/run_models/SKILL.md +427 -0
  202. package/skills/07_Computational_Modeling/spacenet/SKILL.md +122 -0
  203. package/skills/07_Computational_Modeling/svm/SKILL.md +120 -0
  204. package/skills/08_Computational_Neuroscience/brain_gnn/SKILL.md +183 -0
  205. package/skills/08_Computational_Neuroscience/dipy-tool/SKILL.md +239 -0
  206. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/dti_metrics_reference.py +70 -0
  207. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/load_and_mask_reference.py +76 -0
  208. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/roi_stats_reference.py +59 -0
  209. package/skills/08_Computational_Neuroscience/fm_app/SKILL.md +195 -0
  210. package/skills/08_Computational_Neuroscience/neurostorm/SKILL.md +151 -0
  211. package/skills/13_Visualization/brain-visualization/SKILL.md +191 -0
  212. package/skills/13_Visualization/brain-visualization/scripts/connectome_reference.py +108 -0
  213. package/skills/13_Visualization/brain-visualization/scripts/freesurfer_ply_reference.py +54 -0
  214. package/skills/13_Visualization/brain-visualization/scripts/zalff_summary_reference.py +116 -0
  215. package/skills/13_Visualization/ethoclaw-paper-figure-layout/SKILL.md +78 -0
  216. package/skills/13_Visualization/ethoclaw-paper-figure-layout/assets/naturecomm_figures.tex +74 -0
  217. package/skills/13_Visualization/ethoclaw-paper-figure-layout/scripts/layout_results_foldered.py +579 -0
  218. package/skills/14_Writing/overleaf-skill/SKILL.md +184 -0
  219. package/skills/14_Writing/overleaf-skill/scripts/install.sh +30 -0
  220. package/skills/14_Writing/paper-writing/SKILL.md +146 -0
  221. package/skills/14_Writing/paper-writing/scripts/data_statement_templates.py +164 -0
  222. package/skills/14_Writing/paper-writing/scripts/figure_templates.py +315 -0
  223. package/skills/14_Writing/paper-writing/scripts/nature_figure_style.py +214 -0
  224. package/skills/14_Writing/paper-writing/scripts/section_phrasebank.py +246 -0
  225. package/skills/16_Animal_Behavior/deeplabcut/SKILL.md +154 -0
  226. package/skills/16_Animal_Behavior/deeplabcut/references/3d-pose.md +89 -0
  227. package/skills/16_Animal_Behavior/deeplabcut/references/maDLC.md +123 -0
  228. package/skills/16_Animal_Behavior/deeplabcut/references/modelzoo.md +98 -0
  229. package/skills/16_Animal_Behavior/deeplabcut/references/standard-pipeline.md +165 -0
  230. package/skills/16_Animal_Behavior/deeplabcut/references/utilities.md +146 -0
  231. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/SKILL.md +274 -0
  232. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.html +112 -0
  233. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.md +21 -0
  234. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/cluster-section.md +5 -0
  235. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/heatmap-section.md +5 -0
  236. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/integrated-interpretation.md +3 -0
  237. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/overview.md +3 -0
  238. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/project-summary.md +3 -0
  239. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/radar-section.md +5 -0
  240. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/raw-trajectory.md +3 -0
  241. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/sample-check.md +3 -0
  242. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/single-subject-section.md +3 -0
  243. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/stats-section.md +5 -0
  244. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/epm.md +52 -0
  245. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/fst.md +37 -0
  246. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/nor.md +39 -0
  247. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/oft.md +43 -0
  248. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tcst.md +45 -0
  249. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tst.md +36 -0
  250. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/input-types.md +59 -0
  251. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/interpretation-guardrails.md +45 -0
  252. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/metadata-schema.md +57 -0
  253. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/report-sections.md +86 -0
  254. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/section-selection-rules.md +169 -0
  255. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/build_report_manifest.py +27 -0
  256. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/render_report.py +34 -0
  257. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/report_utils.py +1121 -0
  258. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/SKILL.md +390 -0
  259. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/reference_code.py +98 -0
  260. package/skills/16_Animal_Behavior/ethoclaw-animal-pose-estimation/SKILL.md +336 -0
  261. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/README.md +21 -0
  262. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/SKILL.md +41 -0
  263. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/batch_kinematic_generator.py +663 -0
  264. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/config.json +19 -0
  265. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/generate_kinematic_parameter.py +401 -0
  266. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/kinematic_generator.py +265 -0
  267. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/SKILL.md +72 -0
  268. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/references/config.example.toml +56 -0
  269. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params.py +232 -0
  270. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params_from_config.py +236 -0
  271. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/SKILL.md +68 -0
  272. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/references/notes.md +5 -0
  273. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/scripts/plot_h5_radar.py +513 -0
  274. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/SKILL.md +52 -0
  275. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/config.toml +81 -0
  276. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/references/stats-rule.md +18 -0
  277. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_inspect.py +79 -0
  278. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_batch.py +624 -0
  279. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_stats.py +438 -0
  280. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/SKILL.md +280 -0
  281. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_trajectory.py +790 -0
  282. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_velocity.py +855 -0
  283. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.csv +101 -0
  284. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.h5 +0 -0
  285. 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