@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.
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,217 @@
1
+ ---
2
+ name: hcppipeline-tool
3
+ description: "Use this skill whenever the user wants to perform high-quality, HCP-style preprocessing of multimodal MRI data (structural, functional, diffusion) using the official HCP Pipelines. Triggers include: 'HCP pipeline', 'HCP preprocessing', 'hcp-fmri', 'hcp-dwi', 'hcp-structural', 'MSMAll', 'ICA-FIX', 'bedpostx', 'probtrackx', or any request to run the Human Connectome Project preprocessing pipelines."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: base
6
+ skill_type: tool
7
+ dependencies:
8
+ - claw-shell
9
+ ---
10
+ # HCP Pipeline Tool
11
+
12
+ ## Overview
13
+ The HCP Pipelines are the official, highly optimized preprocessing pipelines developed by the Human Connectome Project. They provide state-of-the-art processing for structural (T1w/T2w), functional (task/resting-state fMRI with ICA-FIX), and diffusion MRI (topup + eddy + bedpostx + probtrackx + MSMAll surface alignment).
14
+
15
+ This skill serves as the **NeuroClaw interface-layer wrapper** for the HCP Pipelines and strictly follows the hierarchical design:
16
+
17
+ 1. Check whether HCP Pipelines and dependencies are installed.
18
+ 2. If missing → invoke `dependency-planner` to generate a safe installation plan.
19
+ 3. Detect input data (preferably BIDS or HCP-style organized) and confirm processing stages.
20
+ 4. Generate a clear, numbered execution plan with exact commands, flags, estimated runtime, and risks.
21
+ 5. Present the plan and wait for explicit user confirmation (“YES” / “execute” / “proceed”).
22
+ 6. On confirmation → delegate all pipeline stages to `claw-shell`.
23
+ 7. After completion, summarize outputs and suggest next steps (e.g., connectivity analysis via `fmri-skill` or `fsl-tool`).
24
+
25
+ **Research use only.**
26
+
27
+ ## Quick Reference
28
+
29
+ | Task | Recommended Pipeline Stage | Typical Runtime (per subject) |
30
+ |-----------------------------------|-----------------------------------------------------|-------------------------------|
31
+ | Structural preprocessing | PreFreeSurfer + FreeSurfer + PostFreeSurfer | 4–12 hours |
32
+ | Functional preprocessing | fMRIVolume + fMRISurface + ICA-FIX | 2–6 hours |
33
+ | Diffusion preprocessing | DiffusionPreprocessing + bedpostx + probtrackx | 6–24 hours |
34
+ | Surface-based registration | MSMAll | 2–4 hours |
35
+ | Full HCP-style multimodal pipeline| All stages combined | 12–36+ hours |
36
+
37
+ ## Common Shell Command Examples
38
+
39
+ ```bash
40
+ # Structural pipeline (benchmark-safe baseline: BIDS-aware discovery + validation first)
41
+ SUBJECT="sub-001"
42
+ SESSION=""
43
+ BIDS_DIR="/data/bids"
44
+ OUTDIR="/data/hcp_output"
45
+
46
+ if [[ -n "${SESSION}" ]]; then
47
+ ANAT_DIR="${BIDS_DIR}/${SUBJECT}/${SESSION}/anat"
48
+ HCP_SUBJECT="${SUBJECT}_${SESSION}"
49
+ else
50
+ ANAT_DIR="${BIDS_DIR}/${SUBJECT}/anat"
51
+ HCP_SUBJECT="${SUBJECT}"
52
+ fi
53
+
54
+ T1W="$(find "${ANAT_DIR}" -maxdepth 1 -type f -name '*_T1w.nii.gz' | sort | head -n 1)"
55
+ T2W="$(find "${ANAT_DIR}" -maxdepth 1 -type f -name '*_T2w.nii.gz' | sort | head -n 1)"
56
+
57
+ [[ -f "${T1W}" ]] || { echo "Missing required input: T1w"; exit 1; }
58
+ [[ -f "${T2W}" ]] || { echo "Missing required input: T2w"; exit 1; }
59
+ [[ -x "${HCPPIPEDIR}/PreFreeSurfer/PreFreeSurferPipeline.sh" ]] || { echo "Missing required HCP resource: PreFreeSurferPipeline.sh"; exit 1; }
60
+
61
+ ${HCPPIPEDIR}/PreFreeSurfer/PreFreeSurferPipeline.sh \
62
+ --path="${OUTDIR}" \
63
+ --subject="${HCP_SUBJECT}" \
64
+ --t1="${T1W}" \
65
+ --t2="${T2W}" \
66
+ --SEPhaseNeg=NONE \
67
+ --SEPhasePos=NONE \
68
+ --gdcoeffs=NONE
69
+
70
+ # Functional pipeline with ICA-FIX
71
+ ${HCPPIPEDIR}/fMRIVolume/fMRIVolumePipeline.sh \
72
+ --path=/data/hcp_output \
73
+ --subject=sub-001 \
74
+ --fmriname=rfMRI_REST1 \
75
+ --fmritcs=/data/bids/sub-001/func/sub-001_task-rest_bold.nii.gz
76
+
77
+ # Diffusion pipeline
78
+ ${HCPPIPEDIR}/DiffusionPreprocessing/DiffusionPreprocessing.sh \
79
+ --path=/data/hcp_output \
80
+ --subject=sub-001
81
+ ```
82
+
83
+ ## Installation (Handled by dependency-planner)
84
+ Use `dependency-planner` with one of the following requests:
85
+ - “Install official HCP Pipelines from GitHub”
86
+ - “Install HCP Pipelines and dependencies (FSL, FreeSurfer, CUDA if needed)”
87
+
88
+ After installation, verify with:
89
+ ```bash
90
+ echo $HCPPIPEDIR
91
+ ```
92
+
93
+ **Prerequisites**:
94
+ - FSL, FreeSurfer (with valid license)
95
+ - MATLAB (for some legacy parts) or Octave
96
+ - Sufficient disk space (20–100 GB per subject) and RAM (≥32 GB recommended)
97
+
98
+ ## NeuroClaw recommended wrapper script
99
+ Use this only as a last-resort orchestration reference. For benchmark-style tasks, prefer a direct task-level shell plan that first discovers BIDS inputs, checks required HCP resources, and only then calls the official stage script.
100
+
101
+ ```python
102
+ # hcppipeline_wrapper.py (placed inside the skill folder for reference)
103
+ import subprocess
104
+ import argparse
105
+
106
+ def run_hcp_stage(stage, subject, bids_dir, output_dir):
107
+ env = {"HCPPIPEDIR": "/opt/HCP-Pipelines"}
108
+ cmd = [
109
+ f"{env['HCPPIPEDIR']}/{stage}/{stage}Pipeline.sh",
110
+ "--path", output_dir,
111
+ "--subject", subject
112
+ ]
113
+ print("Running HCP stage:", stage)
114
+ subprocess.run(cmd, env=env, check=True)
115
+
116
+ if __name__ == "__main__":
117
+ parser = argparse.ArgumentParser()
118
+ parser.add_argument("--stage", required=True, help="PreFreeSurfer, fMRIVolume, DiffusionPreprocessing, etc.")
119
+ parser.add_argument("--subject", required=True)
120
+ parser.add_argument("--bids-dir", required=True)
121
+ parser.add_argument("--output-dir", required=True)
122
+ args = parser.parse_args()
123
+
124
+ run_hcp_stage(args.stage, args.subject, args.bids_dir, args.output_dir)
125
+ ```
126
+
127
+ ## Important Notes & Limitations
128
+ - All actual pipeline execution is routed through `claw-shell` due to extremely long runtimes.
129
+ - HCP Pipelines are very resource-intensive and disk-heavy.
130
+ - Requires well-organized input data (preferably BIDS via `bids-organizer` first).
131
+ - For benchmark or contract-sensitive tasks, do not stop at the bare `PreFreeSurferPipeline.sh --path --subject --t1 --t2` surface. First resolve BIDS subject/session inputs, validate required template/config resources, and make missing-input or no-fieldmap/no-gdc decisions explicit.
132
+ - ICA-FIX denoising is one of the strongest features of HCP functional pipeline.
133
+ - Surface-based MSMAll registration provides superior alignment compared to volume-based methods.
134
+
135
+ ## When to Call This Skill
136
+ - User wants the highest-quality, HCP-style preprocessing for multimodal data.
137
+ - When research requires accurate surface-based alignment, ICA-FIX cleaned resting-state fMRI, or advanced diffusion modeling.
138
+ - After `bids-organizer` when preparing data for connectomics or high-precision analysis.
139
+
140
+ ## Complementary / Related Skills
141
+ - `bids-organizer` → organize raw data into BIDS before running HCP
142
+ - `fmriprep-tool` → lighter and faster alternative to HCP preprocessing
143
+ - `fsl-tool` → post-HCP connectivity and ROI analysis
144
+ - `dependency-planner` → install HCP Pipelines and dependencies
145
+ - `claw-shell` → safe execution of long-running pipelines
146
+ - `multi-search-engine` / `academic-research-hub` → retrieve latest HCP best practices
147
+
148
+ ## Reference
149
+ Official HCP Pipelines integration for NeuroClaw high-precision multimodal preprocessing.
150
+ Official repository: https://github.com/Washington-University/HCPpipelines
151
+
152
+ ## Post-Execution Verification (Harness Integration)
153
+
154
+ After HCP Pipeline processing completes, this skill **automatically invokes harness-core's VerificationRunner** to validate output integrity:
155
+
156
+ **Integrated verification checks**:
157
+
158
+ ```python
159
+ from skills.harness_core import VerificationRunner, AuditLogger
160
+
161
+ verifier = VerificationRunner(task_type="hcp_preprocessing")
162
+
163
+ # 1. Structural preprocessing completion (PreFreeSurfer/FreeSurfer/PostFreeSurfer)
164
+ verifier.add_check("structural_pipeline",
165
+ checker=lambda: verify_structural_outputs(output_dir),
166
+ severity="error"
167
+ )
168
+
169
+ # 2. Functional preprocessing (fMRIVolume/fMRISurface completion)
170
+ verifier.add_check("functional_pipeline",
171
+ checker=lambda: verify_functional_outputs(output_dir),
172
+ severity="error"
173
+ )
174
+
175
+ # 3. Diffusion preprocessing (topup/eddy/bedpostx completion)
176
+ verifier.add_check("diffusion_pipeline",
177
+ checker=lambda: verify_diffusion_outputs(output_dir),
178
+ severity="error"
179
+ )
180
+
181
+ # 4. Surface registration quality (MSMAll)
182
+ verifier.add_check("surface_registration",
183
+ checker=lambda: verify_surface_registration_quality(output_dir),
184
+ severity="warning"
185
+ )
186
+
187
+ # 5. ICA-FIX denoising success (if applied)
188
+ verifier.add_check("ica_fix_denoising",
189
+ checker=lambda: verify_ica_fix_completion(output_dir),
190
+ severity="warning"
191
+ )
192
+
193
+ # 6. Output BIDS compliance
194
+ verifier.add_check("bids_compliance",
195
+ checker=lambda: verify_bids_structure(output_dir),
196
+ severity="warning"
197
+ )
198
+
199
+ report = verifier.run(output_dir)
200
+
201
+ # Log verification results
202
+ logger = AuditLogger(log_file=f"{output_dir}/hcp_verification.jsonl")
203
+ logger.log_validation(
204
+ task_name="hcp_preprocessing",
205
+ checks_passed=len([r for r in report.results if r.passed]),
206
+ total_checks=len(report.results),
207
+ output_path=output_dir
208
+ )
209
+ ```
210
+
211
+ **Output**: `{output_dir}/hcp_verification.jsonl` (structured audit log with JSONL format)
212
+
213
+ ---
214
+
215
+ Created At: 2026-03-25 19:30 HKT
216
+ Last Updated At: 2026-04-05 02:03 HKT
217
+ Author: chengwang96
@@ -0,0 +1,214 @@
1
+ ---
2
+ name: hcpya-skill
3
+ description: "Use this skill whenever the user wants an end-to-end workflow for the HCP Young Adult (HCP-YA / HCP1200) dataset, including dataset download, BIDS organization, and multimodal processing of sMRI, fMRI, and dMRI. Triggers include: 'HCP Young Adult', 'HCP-YA', 'HCP1200', 'process HCP data', 'HCP sMRI fMRI DTI', or any request to run the HCP-YA multimodal pipeline."
4
+ license: MIT License (NeuroClaw custom skill - freely modifiable within the project)
5
+ layer: subagent
6
+ skill_type: dataset
7
+ dependencies:
8
+ - smri-skill
9
+ - fmri-skill
10
+ - dwi-skill
11
+ - bids-organizer
12
+ - claw-shell
13
+ complementary_skills:
14
+ - hcppipeline-tool
15
+ ---
16
+ # HCP-YA Skill (Dataset-Orchestration Layer)
17
+
18
+ ## Overview
19
+
20
+ `hcpya-skill` is the NeuroClaw orchestration skill for the **HCP Young Adult (HCP-YA / HCP1200)** dataset.
21
+
22
+ It strictly follows the NeuroClaw hierarchical design principles:
23
+ - This skill **only describes WHAT needs to be done** and **which tool skill to delegate to**.
24
+ - It contains **no implementation code or concrete commands**.
25
+ - All concrete execution is delegated to existing base/tool skills via `claw-shell`.
26
+ - Companion scripts in `scripts/` provide reference implementations for data reorganization, phenotype extraction, and QC.
27
+
28
+ **Core workflow (never bypassed):**
29
+ 1. Identify input HCP-YA data and target modalities.
30
+ 2. Generate a **numbered execution plan** clearly stating WHAT needs to be done and which tool skill will handle each step.
31
+ 3. Present the full plan, estimated runtime, resource requirements, and risks to the user and wait for explicit confirmation ("YES" / "execute" / "proceed").
32
+ 4. On confirmation, delegate every step to the appropriate skill via `claw-shell`.
33
+ 5. After execution, save all outputs in a clean directory structure (`hcpya_output/`).
34
+
35
+ **Research use only.**
36
+
37
+ ---
38
+
39
+ ## Quick Reference
40
+
41
+ | Task | What needs to be done | Delegate to | Expected output |
42
+ |---|---|---|---|
43
+ | Data download | Download HCP-YA from ConnectomeDB via NeuroSTORM scripts | `claw-shell` | Raw HCP-YA files |
44
+ | BIDS staging | Reorganize HCP-YA native layout to BIDS | `scripts/reorganize_hcpya.py` | BIDS-compliant dataset |
45
+ | sMRI processing | Brain extraction, tissue segmentation, cortical reconstruction | `smri-skill` | `smri_output/` derivatives |
46
+ | fMRI processing | Preprocessing, denoising, connectivity, task GLM | `fmri-skill` | `fmri_output/` derivatives |
47
+ | dMRI processing | Eddy correction, tensor metrics, tractography | `dwi-skill` | `dwi_output/` metrics |
48
+ | Phenotype extraction | Cognitive, behavioral, demographic data | `scripts/extract_hcpya_phenotype.py` | Merged phenotype CSV |
49
+ | QC summary | Per-subject quality control | `scripts/hcpya_qc_summary.py` | QC summary + exclusion list |
50
+
51
+ ---
52
+
53
+ ## Download Stage (Mandatory First Step)
54
+
55
+ ### Source
56
+ HCP-YA data is distributed through **ConnectomeDB**:
57
+ - Website: https://db.humanconnectome.org/
58
+ - Requires ConnectomeDB account and data use agreement
59
+ - NeuroSTORM download scripts available at: https://github.com/CUHK-AIM-Group/NeuroSTORM/tree/main/scripts/dataset_download
60
+
61
+ ### Supported Download Entry Scripts
62
+ - `download_HCP_1200_all.py` (all modalities)
63
+ - `download_HCP_1200_rfMRI.py` (resting-state fMRI)
64
+ - `download_HCP_1200_tfMRI.py` (task fMRI)
65
+ - `download_HCP_1200_t1t2.py` (structural T1w/T2w)
66
+ - `all_pid.pkl` (subject list metadata)
67
+
68
+ ### Download Inputs to Confirm in Plan
69
+ - ConnectomeDB credentials/token
70
+ - Target subset (`all`, `rfMRI`, `tfMRI`, `t1t2`)
71
+ - Subject list scope (full 1,200 or custom subset)
72
+ - Destination directory with sufficient disk space (~80 TB for full dataset)
73
+
74
+ ---
75
+
76
+ ## HCP-YA Task Paradigms
77
+
78
+ | Task | Description | Duration |
79
+ |---|---|---|
80
+ | MOTOR | Finger tapping, toe movement, tongue movement | ~3 min |
81
+ | EMOTION | Faces and shapes matching | ~2 min |
82
+ | GAMBLING | Card guessing with reward/loss | ~3 min |
83
+ | LANGUAGE | Story comprehension and math | ~4 min |
84
+ | RELATIONAL | Relational reasoning matching | ~3 min |
85
+ | SOCIAL | Social cognition (mentalizing) movie clips | ~3 min |
86
+ | WM | Working memory (faces, places, tools, body parts) | ~5 min |
87
+ | REST | Resting-state (eyes open) | ~15 min × 4 runs |
88
+
89
+ ---
90
+
91
+ ## BIDS Preparation
92
+
93
+ ### Script: `scripts/reorganize_hcpya.py`
94
+
95
+ Converts HCP-YA native directory structure to BIDS-compliant layout.
96
+
97
+ ```bash
98
+ python skills/hcpya-skill/scripts/reorganize_hcpya.py \
99
+ --input /path/to/HCPYA/raw \
100
+ --output /path/to/HCPYA/bids \
101
+ --participants /path/to/subject_list.txt
102
+ ```
103
+
104
+ Features:
105
+ - Subject ID normalization: HCP format (`100307`) to BIDS (`sub-100307`)
106
+ - Modality routing: T1w, T2w, dMRI, rs-fMRI, task-fMRI (7 tasks)
107
+ - Sidecar JSON generation from HCP metadata
108
+ - `dataset_description.json` and `participants.tsv` generation
109
+ - Dry-run mode: `--dry-run` to preview without copying
110
+
111
+ ---
112
+
113
+ ## Core Workflow (Never Bypassed)
114
+
115
+ 1. Identify user target: full HCP-YA processing, imaging subset, phenotype extraction, or BIDS staging only.
116
+ 2. Generate a numbered plan with tools, outputs, runtime, storage, and risks.
117
+ 3. Wait for explicit confirmation (`YES` / `execute` / `proceed`).
118
+ 4. On confirmation, run download stage first (if needed).
119
+ 5. After download success, run BIDS preparation using `scripts/reorganize_hcpya.py`.
120
+ 6. Delegate to `smri-skill` for structural MRI processing.
121
+ 7. Delegate to `fmri-skill` for functional MRI processing.
122
+ 8. Delegate to `dwi-skill` for diffusion MRI processing.
123
+ 9. If phenotype extraction is requested, run `scripts/extract_hcpya_phenotype.py`.
124
+ 10. If QC summary is requested, run `scripts/hcpya_qc_summary.py`.
125
+ 11. Save outputs into `hcpya_output/`.
126
+
127
+ ---
128
+
129
+ ## Modality Processing Delegation
130
+
131
+ | Modality | Delegated skill | Typical tasks | Main outputs |
132
+ |---|---|---|---|
133
+ | sMRI (T1w/T2w) | `smri-skill` | brain extraction, tissue segmentation, cortical reconstruction, ROI morphometry | `smri_output/` derivatives |
134
+ | fMRI (rs-fMRI/task-fMRI) | `fmri-skill` | preprocessing, denoising, ROI time series, connectivity, task GLM | `fmri_output/` derivatives |
135
+ | dMRI (DWI) | `dwi-skill` | eddy correction, tensor metrics, tractography, connectome | `dwi_output/` metrics |
136
+
137
+ ---
138
+
139
+ ## Standard Output Layout
140
+
141
+ ```
142
+ hcpya_output/
143
+ ├── raw/ # Downloaded original HCP-YA files
144
+ ├── bids/ # BIDS-staged data
145
+ ├── smri/ # Structural MRI derivatives
146
+ ├── fmri/ # Functional MRI derivatives
147
+ ├── dwi/ # Diffusion MRI derivatives
148
+ ├── phenotype/ # Merged phenotype tables
149
+ ├── qc/ # QC summaries and exclusion lists
150
+ └── logs/ # Download + orchestration logs
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Benchmark Adapter Guidance
156
+
157
+ For benchmark-style prompts, do not force the full `download -> staging -> multimodal processing` orchestration when the task only asks for local HCP-YA data staging or organization.
158
+
159
+ - If the task starts from raw HCP-YA data already present on disk and only asks for BIDS-style staging:
160
+ - Skip the mandatory download stage
161
+ - Default to the narrow path `local raw HCP-YA discovery -> BIDS-style staging -> minimal metadata -> validation/report`
162
+ - In benchmark mode, do not require explicit confirmation before presenting the direct staging solution.
163
+ - Only use the full multimodal orchestration when the prompt explicitly asks for download or end-to-end processing.
164
+
165
+ ---
166
+
167
+ ## Safety and Execution Policy
168
+ - No execution before explicit plan confirmation.
169
+ - All execution must be routed via `claw-shell`.
170
+ - Missing dependencies must be resolved by `dependency-planner` before running.
171
+ - If download fails for partial subjects, continue batch with clear failure report and retry list.
172
+
173
+ ---
174
+
175
+ ## Important Notes and Limitations
176
+ - HCP-YA processing is resource intensive (CPU, RAM, and storage).
177
+ - Full HCP-YA dataset is ~80 TB; plan storage accordingly.
178
+ - HCP-YA has 1,200 subjects with complete multimodal data.
179
+ - Age range: 22-35 years.
180
+ - For HCP-native preprocessing (minimal preprocessing pipelines), optionally delegate to `hcppipeline-tool`.
181
+ - `hcpya-skill` is orchestration-only; detailed preprocessing logic remains in modality skills.
182
+
183
+ ---
184
+
185
+ ## When to Call This Skill
186
+ - User asks for end-to-end HCP Young Adult workflow.
187
+ - User asks to download HCP1200 and run sMRI/fMRI/DTI processing.
188
+ - User needs BIDS staging for HCP-YA data.
189
+ - User asks to extract HCP-YA phenotype data (cognitive, behavioral, demographic).
190
+
191
+ ---
192
+
193
+ ## Complementary / Related Skills
194
+ - `smri-skill` → structural MRI preprocessing
195
+ - `fmri-skill` → functional MRI preprocessing and analysis
196
+ - `dwi-skill` → diffusion MRI preprocessing and analysis
197
+ - `hcppipeline-tool` → HCP-native minimal preprocessing pipelines
198
+ - `bids-organizer` → BIDS validation and organization
199
+ - `brain-visualization` → visualization of derivatives
200
+ - `dependency-planner` → dependency resolution
201
+ - `conda-env-manager` → environment management
202
+ - `claw-shell` → command execution
203
+
204
+ ---
205
+
206
+ ## Reference
207
+ - HCP-YA: https://www.humanconnectome.org/study/hcp-young-adult
208
+ - ConnectomeDB: https://db.humanconnectome.org/
209
+ - NeuroSTORM download scripts: https://github.com/CUHK-AIM-Group/NeuroSTORM/tree/main/scripts/dataset_download
210
+ - Glasser et al. (2013): The Human Connectome Project minimally preprocessed pipelines
211
+
212
+ Created At: 2026-05-06 13:02 HKT
213
+ Last Updated At: 2026-05-06 13:02 HKT
214
+ Author: chengwang96
@@ -0,0 +1,190 @@
1
+ #!/usr/bin/env python3
2
+ """Extract and merge HCP Young Adult phenotype data.
3
+
4
+ Reads HCP-YA phenotype CSV files (cognitive, behavioral, demographic)
5
+ and produces a merged phenotype table aligned with imaging subject list.
6
+ """
7
+ import argparse
8
+ import csv
9
+ import sys
10
+ from pathlib import Path
11
+ from typing import Dict, List, Optional
12
+
13
+ # Column mapping: target column name -> possible source column names
14
+ COLUMN_MAP = {
15
+ "subject_id": ["Subject", "subject", "PIN", "PIN_Subject"],
16
+ "age": ["Age_in_Yrs", "Age"],
17
+ "sex": ["Gender", "Sex"],
18
+ "handedness": ["Handedness", "Handed"],
19
+ "race": ["Race", "Ethnicity"],
20
+ "ethnicity": ["Ethnicity"],
21
+ "education": ["SSAGA_Educ", "Education"],
22
+ "income": ["SSAGA_Income", "Income"],
23
+ "height": ["Height_In", "Height"],
24
+ "weight": ["Weight", "BMI"],
25
+ "bp_systolic": ["BP_Systolic"],
26
+ "bp_diastolic": ["BP_Diastolic"],
27
+ # Cognitive measures
28
+ "pmat24_a_cr": ["PMAT24_A_CR"], # Raven's progressive matrices
29
+ "pmat24_a_si": ["PMAT24_A_SI"],
30
+ "pmat24_a_rtcr": ["PMAT24_A_RTCR"],
31
+ "cardsort_unadj": ["CardSort_Unadj"], # Dimensional change card sort
32
+ "flanker_unadj": ["Flanker_Unadj"], # Flanker task
33
+ "list_unadj": ["List_Unadj"], # List sorting
34
+ "picvocab_unadj": ["PicVocab_Unadj"], # Picture vocabulary
35
+ "procsp_unadj": ["ProcSpeed_Unadj"], # Processing speed
36
+ "readeng_unadj": ["ReadEng_Unadj"], # Reading
37
+ "picseq_unadj": ["PicSeq_Unadj"], # Picture sequence memory
38
+ "strength_unadj": ["Strength_Unadj"], # Grip strength
39
+ "endurance_unadj": ["Endurance_Unadj"], # Endurance
40
+ "gait_speed_unadj": ["GaitSpeed_Unadj"], # Gait speed
41
+ "dexterity_unadj": ["Dexterity_Unadj"], # Dexterity
42
+ # Behavioral/psychiatric
43
+ "nih_total": ["NIH_TLC"], # NIH Toolbox Total
44
+ "neuroticism": ["NEOFAC_N"],
45
+ "extraversion": ["NEOFAC_E"],
46
+ "openness": ["NEOFAC_O"],
47
+ "agreeableness": ["NEOFAC_A"],
48
+ "conscientiousness": ["NEOFAC_C"],
49
+ "psqi_global": ["PSQI_Score"], # Sleep quality
50
+ "bis_bas_bis": ["BIS_BAS_BIS"],
51
+ "bis_bas_bas_rr": ["BIS_BAS_BAS_RR"],
52
+ "bis_bas_bas_d": ["BIS_BAS_BAS_D"],
53
+ "bis_bas_bas_fs": ["BIS_BAS_BAS_FS"],
54
+ }
55
+
56
+
57
+ def load_csv(path: Path) -> List[Dict[str, str]]:
58
+ """Load CSV/TSV file and return list of dicts."""
59
+ delimiter = "\t" if path.suffix == ".tsv" else ","
60
+ with open(path, "r", encoding="utf-8") as f:
61
+ reader = csv.DictReader(f, delimiter=delimiter)
62
+ return list(reader)
63
+
64
+
65
+ def find_column(row: Dict[str, str], candidates: List[str]) -> Optional[str]:
66
+ """Find the first matching column name in a row."""
67
+ for col in candidates:
68
+ if col in row:
69
+ return col
70
+ return None
71
+
72
+
73
+ def extract_phenotype(
74
+ phenotype_files: List[Path],
75
+ imaging_ids: Optional[List[str]] = None,
76
+ columns: Optional[List[str]] = None,
77
+ ) -> List[Dict[str, str]]:
78
+ """Extract and merge phenotype data from multiple files."""
79
+ # Load all files
80
+ all_data = []
81
+ for fpath in phenotype_files:
82
+ rows = load_csv(fpath)
83
+ for row in rows:
84
+ all_data.append(row)
85
+
86
+ if not all_data:
87
+ return []
88
+
89
+ # Determine which columns to extract
90
+ if columns:
91
+ target_columns = columns
92
+ else:
93
+ target_columns = list(COLUMN_MAP.keys())
94
+
95
+ # Extract and merge
96
+ merged = {}
97
+ for row in all_data:
98
+ # Find subject ID
99
+ subj_col = find_column(row, COLUMN_MAP["subject_id"])
100
+ if subj_col is None:
101
+ continue
102
+ subj_id = row[subj_col].strip()
103
+ if not subj_id:
104
+ continue
105
+
106
+ if subj_id not in merged:
107
+ merged[subj_id] = {"subject_id": subj_id}
108
+
109
+ # Extract requested columns
110
+ for target_col in target_columns:
111
+ if target_col == "subject_id":
112
+ continue
113
+ if target_col in merged[subj_id] and merged[subj_id][target_col]:
114
+ continue # Already have a value
115
+
116
+ candidates = COLUMN_MAP.get(target_col, [target_col])
117
+ src_col = find_column(row, candidates)
118
+ if src_col and row.get(src_col, "").strip():
119
+ merged[subj_id][target_col] = row[src_col].strip()
120
+
121
+ # Filter to imaging subjects if provided
122
+ result = list(merged.values())
123
+ if imaging_ids:
124
+ imaging_set = set(imaging_ids)
125
+ result = [r for r in result if r["subject_id"] in imaging_set]
126
+
127
+ return result
128
+
129
+
130
+ def main() -> int:
131
+ parser = argparse.ArgumentParser(
132
+ description="Extract and merge HCP Young Adult phenotype data."
133
+ )
134
+ parser.add_argument(
135
+ "--phenotype-files", required=True, nargs="+",
136
+ help="Paths to HCP phenotype CSV/TSV files"
137
+ )
138
+ parser.add_argument("--output", required=True, help="Output path for merged phenotype CSV")
139
+ parser.add_argument("--imaging-ids", help="Text file with imaging subject IDs to filter")
140
+ parser.add_argument("--columns", help="Comma-separated column names to extract (default: all)")
141
+ args = parser.parse_args()
142
+
143
+ phenotype_files = [Path(f).resolve() for f in args.phenotype_files]
144
+ for f in phenotype_files:
145
+ if not f.exists():
146
+ print(f"Phenotype file not found: {f}", file=sys.stderr)
147
+ return 1
148
+
149
+ # Load imaging IDs if provided
150
+ imaging_ids = None
151
+ if args.imaging_ids:
152
+ id_file = Path(args.imaging_ids).resolve()
153
+ if id_file.exists():
154
+ imaging_ids = [line.strip() for line in id_file.read_text().splitlines() if line.strip()]
155
+ print(f"Imaging IDs: {len(imaging_ids)} subjects")
156
+
157
+ # Parse columns
158
+ columns = None
159
+ if args.columns:
160
+ columns = [c.strip() for c in args.columns.split(",")]
161
+ print(f"Requested columns: {columns}")
162
+
163
+ # Extract phenotype
164
+ print(f"Extracting phenotype from {len(phenotype_files)} files...")
165
+ merged = extract_phenotype(phenotype_files, imaging_ids, columns)
166
+
167
+ if not merged:
168
+ print("[ERROR] No phenotype data extracted.", file=sys.stderr)
169
+ return 1
170
+
171
+ # Write output
172
+ output_path = Path(args.output).resolve()
173
+ output_path.parent.mkdir(parents=True, exist_ok=True)
174
+
175
+ fieldnames = list(merged[0].keys())
176
+ with open(output_path, "w", newline="", encoding="utf-8") as f:
177
+ writer = csv.DictWriter(f, fieldnames=fieldnames)
178
+ writer.writeheader()
179
+ writer.writerows(merged)
180
+
181
+ print(f"\nPhenotype Summary:")
182
+ print(f" Subjects: {len(merged)}")
183
+ print(f" Columns: {len(fieldnames)}")
184
+ print(f" Output: {output_path}")
185
+
186
+ return 0
187
+
188
+
189
+ if __name__ == "__main__":
190
+ sys.exit(main())