@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,173 @@
1
+ ---
2
+ name: pet-skill
3
+ description: "Use this skill whenever the user wants to process PET neuroimaging data including spatial normalization to T1w/MNI space, SUVR computation, reference region quantification, partial volume correction, or tracer-specific workflows (PiB amyloid, FDG metabolism, tau). Triggers include: 'PET', 'PET processing', 'SUVR', 'amyloid PET', 'FDG PET', 'tau PET', 'PiB', 'flortaucipir', 'reference region', 'partial volume correction', or any request involving PET neuroimaging data."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: subagent
6
+ skill_type: modality
7
+ dependencies:
8
+ - fsl-tool
9
+ - freesurfer-tool
10
+ - nibabel-skill
11
+ - claw-shell
12
+ complementary_skills:
13
+ - smri-skill
14
+ - fmri-skill
15
+ - brain-visualization
16
+ ---
17
+ # PET Skill (Modality Layer)
18
+
19
+ ## Overview
20
+
21
+ `pet-skill` is the NeuroClaw **modality-layer** interface skill responsible for all PET neuroimaging data processing tasks.
22
+
23
+ It strictly follows the NeuroClaw hierarchical design principles:
24
+ - This skill **only describes WHAT needs to be done** and **which tool skill to delegate to**.
25
+ - It contains **no implementation code or concrete commands**.
26
+ - All concrete execution is delegated to existing base/tool skills: `fsl-tool`, `freesurfer-tool`, `nibabel-skill`, and `claw-shell`.
27
+ - Companion scripts in `scripts/` provide reference implementations for SUVR computation and reference region extraction.
28
+
29
+ **Core workflow (never bypassed):**
30
+ 1. Identify input PET data and tracer type (PiB, FDG, tau, or other).
31
+ 2. Ensure T1w structural data is available (via `smri-skill` if not yet processed).
32
+ 3. Generate a **numbered execution plan** clearly stating WHAT needs to be done and which tool skill will handle each step.
33
+ 4. Present the full plan, estimated runtime, resource requirements, and risks to the user and wait for explicit confirmation ("YES" / "execute" / "proceed").
34
+ 5. On confirmation, delegate every step to the appropriate skill via `claw-shell`.
35
+ 6. After execution, save all outputs in a clean directory structure (`pet_output/`).
36
+
37
+ **Research use only.**
38
+
39
+ ---
40
+
41
+ ## Quick Reference (Common PET Tasks)
42
+
43
+ | Task | What needs to be done | Delegate to which tool skill | Expected output |
44
+ |---|---|---|---|
45
+ | PET-to-T1w coregistration | Register dynamic or static PET frame to T1w using rigid-body alignment | `fsl-tool` (FLIRT) | PET in T1w native space |
46
+ | T1w-to-MNI normalization | Warp T1w (and co-registered PET) to MNI152 template | `fsl-tool` (FNIRT) or `smri-skill` | PET in MNI152 standard space |
47
+ | Reference region extraction | Extract mean signal from anatomically defined reference region (e.g., cerebellar cortex, pons, whole cerebellum) | `fsl-tool` + `freesurfer-tool` + `nibabel-skill` | Reference region mean time-activity curve |
48
+ | SUVR computation | Compute Standardized Uptake Value Ratio = target ROI / reference region | `scripts/compute_suvr.py` | Per-region SUVR values (CSV) |
49
+ | Partial volume correction | Apply geometric transfer matrix (GTM) or region-based PVC methods | `fsl-tool` + custom | PVC-corrected ROI values |
50
+ | Dynamic PET modeling | Kinetic modeling (e.g., Logan plot, SUVR with dynamic frames) | Custom analysis | DVR or SUVR over time |
51
+ | Tracer-specific workflow | PiB (amyloid, cerebellar cortex ref), FDG (metabolism, pons ref), tau (flortaucipir, cerebellar cortex ref) | Full pipeline | Tracer-appropriate SUVR maps |
52
+
53
+ ---
54
+
55
+ ## Tracer-Specific Reference Regions
56
+
57
+ | Tracer | Target | Reference Region | SUVR Threshold (amyloid+) |
58
+ |---|---|---|---|
59
+ | **PiB** (¹¹C-Pittsburgh Compound B) | Amyloid-β deposition | Cerebellar cortex (gray matter) | SUVR > 1.42 or > 1.21 (centiloid-adjusted) |
60
+ | **FDG** (¹⁸F-Fluorodeoxyglucose) | Glucose metabolism (hypometabolism pattern) | Pons or whole cerebellum | Lower SUVR = worse metabolism |
61
+ | **Tau** (¹⁸F-Flortaucipir / AV-1451) | Tau neurofibrillary tangles | Cerebellar cortex (gray matter) | SUVR > 1.2–1.3 (region-dependent) |
62
+
63
+ ---
64
+
65
+ ## Core Processing Pipeline
66
+
67
+ ### Stage 1: T1w Preprocessing (via `smri-skill`)
68
+ - Brain extraction, tissue segmentation, cortical parcellation (FreeSurfer)
69
+ - Required for reference region definition and PVC
70
+
71
+ ### Stage 2: PET-to-T1w Coregistration (via `fsl-tool`)
72
+ - Rigid-body registration of mean PET frame to T1w using FLIRT
73
+ - Apply transformation to full dynamic or static PET series
74
+
75
+ ### Stage 3: Reference Region Definition
76
+ - Use FreeSurfer parcellation to extract reference region mask in T1w space
77
+ - Common references: cerebellar cortex (`Cerebellum_Cortex` in Desikan-Killiany), pons
78
+ - Project mask to PET space or keep in T1w space with partial volume correction
79
+
80
+ ### Stage 4: SUVR Computation (via `scripts/compute_suvr.py`)
81
+ - Extract mean signal from target ROI and reference region
82
+ - SUVR = mean(target) / mean(reference)
83
+ - Output per-region SUVR values as CSV
84
+
85
+ ### Stage 5 (Optional): Spatial Normalization to MNI
86
+ - Warp PET (in T1w space) to MNI152 using T1w-to-MNI warp
87
+ - Enable group-level voxelwise analysis
88
+
89
+ ---
90
+
91
+ ## Scripts
92
+
93
+ ### `scripts/compute_suvr.py`
94
+ Computes SUVR from a PET image and ROI/reference masks.
95
+
96
+ ```bash
97
+ python skills/pet-skill/scripts/compute_suvr.py \
98
+ --pet /path/to/pet_in_t1w_space.nii.gz \
99
+ --target-mask /path/to/target_roi_mask.nii.gz \
100
+ --ref-mask /path/to/reference_region_mask.nii.gz \
101
+ --output /path/to/pet_output/suvr_values.csv
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Standard Output Layout
107
+
108
+ ```
109
+ pet_output/
110
+ ├── coregistration/ # PET-to-T1w registration matrices and resampled PET
111
+ ├── suvr/ # SUVR maps and per-region CSV values
112
+ │ ├── suvr_values.csv
113
+ │ └── suvr_map.nii.gz
114
+ ├── pvc/ # Partial volume corrected values (if requested)
115
+ ├── mni/ # PET in MNI152 space (if normalization requested)
116
+ ├── qc/ # Coregistration quality, reference region coverage
117
+ └── logs/
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Installation (Handled by dependency-planner)
123
+
124
+ No manual installation required at this layer.
125
+ When first used, `pet-skill` automatically calls `dependency-planner` to ensure `fsl-tool`, `freesurfer-tool`, `nibabel-skill`, and `claw-shell` are ready.
126
+
127
+ ---
128
+
129
+ ## Important Notes & Limitations
130
+
131
+ - PET images are typically low-resolution (~2–4 mm); coregistration to high-resolution T1w is essential.
132
+ - Reference region selection is tracer-dependent; using the wrong reference region invalidates SUVR.
133
+ - Partial volume correction is recommended for atrophy-prone populations (e.g., Alzheimer's disease).
134
+ - Dynamic PET requires frame timing information from DICOM headers or sidecar JSON.
135
+ - Static PET (single late frame) is sufficient for most clinical SUVR analyses.
136
+ - This skill is for research workflows; not for clinical decision-making.
137
+
138
+ ---
139
+
140
+ ## When to Call This Skill
141
+
142
+ - After `smri-skill` when T1w structural preprocessing is complete and PET data needs processing.
143
+ - When the user needs SUVR computation from amyloid (PiB), metabolism (FDG), or tau PET data.
144
+ - When PET-to-T1w coregistration or normalization to MNI space is required.
145
+ - When partial volume correction is requested for ROI-based PET quantification.
146
+ - When dataset skills (e.g., `aibl-skill`, `adni-skill`) delegate PET processing.
147
+
148
+ ---
149
+
150
+ ## Complementary / Related Skills
151
+
152
+ - `smri-skill` → T1w structural preprocessing (brain extraction, parcellation)
153
+ - `fmri-skill` → if PET is used alongside fMRI for multimodal analysis
154
+ - `fsl-tool` → FLIRT (coregistration), FNIRT (normalization), PETPVC (partial volume correction)
155
+ - `freesurfer-tool` → cortical/subcortical parcellation for ROI definition
156
+ - `nibabel-skill` → NIfTI I/O for mask manipulation
157
+ - `brain-visualization` → PET overlay visualization
158
+ - `aibl-skill` → AIBL dataset (PiB, FDG, tau PET)
159
+ - `adni-skill` → ADNI dataset (PET data available)
160
+
161
+ ---
162
+
163
+ ## Reference
164
+ - Klunk et al. (2004): PiB amyloid imaging
165
+ - Landau et al. (2012): Amyloid imaging with PiB and florbetapir
166
+ - Baker et al. (2017): AV-1451 tau PET imaging
167
+ - BIDS PET extension: https://bids-specification.readthedocs.io/en/stable/04-modality-specific-files/09-positron-emission-tomography.html
168
+ - FSL: https://fsl.fmrib.ox.ac.uk/fsl/
169
+ - FreeSurfer: https://surfer.nmr.mgh.harvard.edu/
170
+
171
+ Created At: 2026-05-06 12:19 HKT
172
+ Last Updated At: 2026-05-06 12:19 HKT
173
+ Author: chengwang96
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env python3
2
+ """Compute SUVR (Standardized Uptake Value Ratio) from a PET image and ROI masks.
3
+
4
+ Supports static PET (single frame) and mean-of-frames from dynamic PET.
5
+ Outputs per-region SUVR values as CSV and optional SUVR map as NIfTI.
6
+ """
7
+ import argparse
8
+ import sys
9
+ from pathlib import Path
10
+ from typing import Dict, List, Optional
11
+
12
+ try:
13
+ import numpy as np
14
+ except ImportError:
15
+ print("Error: numpy is required.", file=sys.stderr)
16
+ sys.exit(1)
17
+
18
+ try:
19
+ import nibabel as nib
20
+ except ImportError:
21
+ print("Error: nibabel is required.", file=sys.stderr)
22
+ sys.exit(1)
23
+
24
+
25
+ def load_mask(mask_path: Path) -> tuple:
26
+ """Load a NIfTI mask and return (data array, affine)."""
27
+ img = nib.load(str(mask_path))
28
+ data = img.get_fdata()
29
+ return data, img.affine, img.header
30
+
31
+
32
+ def extract_mean_signal(pet_data: np.ndarray, mask_data: np.ndarray) -> float:
33
+ """Extract mean PET signal within a binary mask."""
34
+ mask_bool = mask_data > 0
35
+ if not np.any(mask_bool):
36
+ return float("nan")
37
+ return float(np.mean(pet_data[mask_bool]))
38
+
39
+
40
+ def compute_suvr_map(pet_data: np.ndarray, target_mask: np.ndarray, ref_mean: float) -> np.ndarray:
41
+ """Compute voxelwise SUVR map within target mask."""
42
+ suvr = np.zeros_like(pet_data)
43
+ if ref_mean > 0:
44
+ target_bool = target_mask > 0
45
+ suvr[target_bool] = pet_data[target_bool] / ref_mean
46
+ return suvr
47
+
48
+
49
+ def load_multi_frame_pet(pet_path: Path, frame_index: Optional[int] = None) -> np.ndarray:
50
+ """Load PET image, optionally selecting a specific frame from 4D data."""
51
+ img = nib.load(str(pet_path))
52
+ data = img.get_fdata()
53
+
54
+ if data.ndim == 4:
55
+ if frame_index is not None:
56
+ if frame_index >= data.shape[3]:
57
+ print(f"[WARN] Frame index {frame_index} exceeds available frames {data.shape[3]}, using last frame")
58
+ frame_index = data.shape[3] - 1
59
+ data = data[:, :, :, frame_index]
60
+ else:
61
+ # Use mean across all frames
62
+ print(f" 4D PET detected ({data.shape[3]} frames), computing mean across frames")
63
+ data = np.mean(data, axis=3)
64
+
65
+ return data
66
+
67
+
68
+ def main() -> int:
69
+ parser = argparse.ArgumentParser(
70
+ description="Compute SUVR from a PET image and ROI/reference masks."
71
+ )
72
+ parser.add_argument(
73
+ "--pet",
74
+ required=True,
75
+ help="Path to PET NIfTI file (3D static or 4D dynamic)",
76
+ )
77
+ parser.add_argument(
78
+ "--ref-mask",
79
+ required=True,
80
+ help="Path to reference region binary mask (e.g., cerebellar cortex)",
81
+ )
82
+ parser.add_argument(
83
+ "--target-mask",
84
+ help="Path to target ROI binary mask (single region). If omitted, only reference mean is reported.",
85
+ )
86
+ parser.add_argument(
87
+ "--roi-masks",
88
+ help="Comma-separated list of additional ROI masks for multi-region SUVR computation",
89
+ )
90
+ parser.add_argument(
91
+ "--roi-names",
92
+ help="Comma-separated ROI names (must match --roi-masks order)",
93
+ )
94
+ parser.add_argument(
95
+ "--frame",
96
+ type=int,
97
+ default=None,
98
+ help="Frame index for 4D PET (default: mean across all frames)",
99
+ )
100
+ parser.add_argument(
101
+ "--output",
102
+ required=True,
103
+ help="Output path for SUVR values CSV",
104
+ )
105
+ parser.add_argument(
106
+ "--suvr-map-output",
107
+ help="Optional: output path for voxelwise SUVR map NIfTI (requires --target-mask)",
108
+ )
109
+ args = parser.parse_args()
110
+
111
+ pet_path = Path(args.pet).resolve()
112
+ ref_path = Path(args.ref_mask).resolve()
113
+
114
+ if not pet_path.exists():
115
+ print(f"PET file not found: {pet_path}", file=sys.stderr)
116
+ return 1
117
+ if not ref_path.exists():
118
+ print(f"Reference mask not found: {ref_path}", file=sys.stderr)
119
+ return 1
120
+
121
+ # Load PET
122
+ print(f"Loading PET: {pet_path}")
123
+ pet_data = load_multi_frame_pet(pet_path, args.frame)
124
+ print(f" PET shape: {pet_data.shape}, range: [{pet_data.min():.2f}, {pet_data.max():.2f}]")
125
+
126
+ # Load reference region
127
+ print(f"Loading reference mask: {ref_path}")
128
+ ref_data, ref_affine, ref_header = load_mask(ref_path)
129
+ ref_mean = extract_mean_signal(pet_data, ref_data)
130
+ print(f" Reference region mean: {ref_mean:.4f}")
131
+
132
+ if np.isnan(ref_mean) or ref_mean <= 0:
133
+ print("[ERROR] Reference region mean is NaN or <= 0. Check mask alignment.", file=sys.stderr)
134
+ return 1
135
+
136
+ # Collect results
137
+ results = []
138
+
139
+ # Single target mask
140
+ if args.target_mask:
141
+ target_path = Path(args.target_mask).resolve()
142
+ if not target_path.exists():
143
+ print(f"Target mask not found: {target_path}", file=sys.stderr)
144
+ return 1
145
+ target_data, _, _ = load_mask(target_path)
146
+ target_mean = extract_mean_signal(pet_data, target_data)
147
+ suvr = target_mean / ref_mean if ref_mean > 0 else float("nan")
148
+ results.append({"roi": "target", "mean_signal": target_mean, "ref_mean": ref_mean, "suvr": suvr})
149
+ print(f" Target mean: {target_mean:.4f}, SUVR: {suvr:.4f}")
150
+
151
+ # Optional SUVR map
152
+ if args.suvr_map_output:
153
+ suvr_map = compute_suvr_map(pet_data, target_data, ref_mean)
154
+ out_img = nib.Nifti1Image(suvr_map, ref_affine, ref_header)
155
+ suvr_map_path = Path(args.suvr_map_output).resolve()
156
+ suvr_map_path.parent.mkdir(parents=True, exist_ok=True)
157
+ nib.save(out_img, str(suvr_map_path))
158
+ print(f" SUVR map saved: {suvr_map_path}")
159
+
160
+ # Multiple ROI masks
161
+ if args.roi_masks:
162
+ roi_paths = [Path(p.strip()).resolve() for p in args.roi_masks.split(",")]
163
+ roi_names = None
164
+ if args.roi_names:
165
+ roi_names = [n.strip() for n in args.roi_names.split(",")]
166
+ if roi_names and len(roi_names) != len(roi_paths):
167
+ print("[WARN] --roi-names count does not match --roi-masks count, using file stems", file=sys.stderr)
168
+ roi_names = None
169
+
170
+ for i, roi_path in enumerate(roi_paths):
171
+ if not roi_path.exists():
172
+ print(f"[WARN] ROI mask not found: {roi_path}", file=sys.stderr)
173
+ continue
174
+ roi_data, _, _ = load_mask(roi_path)
175
+ roi_mean = extract_mean_signal(pet_data, roi_data)
176
+ suvr = roi_mean / ref_mean if ref_mean > 0 else float("nan")
177
+ name = roi_names[i] if roi_names else roi_path.stem
178
+ results.append({"roi": name, "mean_signal": roi_mean, "ref_mean": ref_mean, "suvr": suvr})
179
+
180
+ if not results:
181
+ print("[WARN] No target or ROI masks provided. Only reference mean is reported.")
182
+ results.append({"roi": "reference_only", "mean_signal": float("nan"), "ref_mean": ref_mean, "suvr": float("nan")})
183
+
184
+ # Write CSV
185
+ import csv
186
+
187
+ output_path = Path(args.output).resolve()
188
+ output_path.parent.mkdir(parents=True, exist_ok=True)
189
+ with open(output_path, "w", newline="", encoding="utf-8") as f:
190
+ writer = csv.DictWriter(f, fieldnames=["roi", "mean_signal", "ref_mean", "suvr"])
191
+ writer.writeheader()
192
+ writer.writerows(results)
193
+
194
+ print(f"\nSUVR Summary ({len(results)} ROI(s)) -> {output_path}")
195
+ for r in results:
196
+ print(f" {r['roi']}: SUVR = {r['suvr']:.4f}")
197
+
198
+ return 0
199
+
200
+
201
+ if __name__ == "__main__":
202
+ sys.exit(main())
@@ -0,0 +1,206 @@
1
+ ---
2
+ name: pnc-skill
3
+ description: "Use this skill whenever the user wants an end-to-end workflow for the Philadelphia Neurodevelopmental Cohort (PNC) dataset, including BIDS validation, multimodal processing of sMRI, rs-fMRI, task-fMRI, and dMRI, phenotype extraction, and QC integration. Triggers include: 'PNC', 'Philadelphia Neurodevelopmental Cohort', 'process PNC data', 'PNC fMRI', or any request to run the PNC 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
+ - brain-visualization
15
+ ---
16
+ # PNC Skill (Dataset-Orchestration Layer)
17
+
18
+ ## Overview
19
+
20
+ `pnc-skill` is the NeuroClaw orchestration skill for the **Philadelphia Neurodevelopmental Cohort (PNC)** dataset, a large-scale collaborative study between the University of Pennsylvania and the Children's Hospital of Philadelphia.
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 BIDS validation, phenotype extraction, and QC.
27
+
28
+ **Core workflow (never bypassed):**
29
+ 1. Identify input PNC 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 (`pnc_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
+ | BIDS validation | Validate PNC BIDS structure | `scripts/validate_pnc.py` | Validation report |
44
+ | sMRI processing | Brain extraction, tissue segmentation | `smri-skill` | `smri_output/` derivatives |
45
+ | rs-fMRI processing | Preprocessing, denoising, connectivity | `fmri-skill` | `fmri_output/` connectivity |
46
+ | task-fMRI processing | Go/No-Go, emotion, memory task GLM | `fmri-skill` | `fmri_output/` task results |
47
+ | dMRI processing | Diffusion preprocessing, tensor metrics | `dwi-skill` | `dwi_output/` metrics |
48
+ | Phenotype extraction | Cognitive, psychiatric, demographic | `scripts/extract_pnc_phenotype.py` | Merged phenotype CSV |
49
+ | QC summary | Per-subject quality control | `scripts/pnc_qc_summary.py` | QC summary + exclusion list |
50
+
51
+ ---
52
+
53
+ ## Dataset Characteristics
54
+
55
+ - **Cohort**: ~9,000+ youth aged 8-21 years
56
+ - **Scanner**: 3T Siemens TIM Trio
57
+ - **Modalities**: T1w sMRI, rs-fMRI, task-fMRI, dMRI/DTI
58
+ - **Task paradigms**: Go/No-Go, Fraternal Twins, Penn Line Orientation, Penn Word Memory
59
+ - **Clinical**: Psychiatric assessment, cognitive battery (Penn CNB)
60
+ - **Access**: NIMH Data Archive (NDA), OpenNeuro ds000030 (BIDS subset)
61
+ - **Format**: BIDS-compliant (community conversion)
62
+ - **Reference**: Satterthwaite et al. (2014), NeuroImage
63
+
64
+ ---
65
+
66
+ ## Supported Modalities
67
+
68
+ | Modality | Description | Tasks/Conditions |
69
+ |---|---|---|
70
+ | T1w | High-resolution structural MRI | 1mm isotropic |
71
+ | rs-fMRI | Resting-state functional MRI | Eyes open |
72
+ | task-fMRI | Task-based functional MRI | Go/No-Go, Emotion, Line Orientation, Word Memory |
73
+ | dMRI | Diffusion-weighted imaging | DTI, white matter tractography |
74
+
75
+ ---
76
+
77
+ ## PNC Task Paradigms
78
+
79
+ | Task | Description | Cognitive Domain |
80
+ |---|---|---|
81
+ | Go/No-Go | Response inhibition / impulse control | Executive function |
82
+ | Fraternal Twins | Emotion recognition | Social cognition |
83
+ | Penn Line Orientation | Spatial processing | Visuospatial |
84
+ | Penn Word Memory | Memory encoding/retrieval | Episodic memory |
85
+
86
+ ---
87
+
88
+ ## BIDS Preparation
89
+
90
+ ### Script: `scripts/validate_pnc.py`
91
+
92
+ Validates PNC BIDS structure and generates a compliance report.
93
+
94
+ ```bash
95
+ python skills/pnc-skill/scripts/validate_pnc.py \
96
+ --input /path/to/PNC/bids \
97
+ --output /path/to/pnc_output/qc/bids_validation.csv
98
+ ```
99
+
100
+ Features:
101
+ - BIDS directory structure validation
102
+ - Modality completeness check (T1w, rs-fMRI, task-fMRI, dMRI)
103
+ - Age range verification (8-21 years)
104
+ - Task paradigm presence check
105
+
106
+ ---
107
+
108
+ ## Core Workflow (Never Bypassed)
109
+
110
+ 1. Identify user target: full PNC processing, imaging subset, phenotype extraction, or BIDS validation only.
111
+ 2. Generate a numbered plan with tools, outputs, runtime, storage, and risks.
112
+ 3. Wait for explicit confirmation (`YES` / `execute` / `proceed`).
113
+ 4. On confirmation, run BIDS validation using `scripts/validate_pnc.py`.
114
+ 5. Delegate to `smri-skill` for structural MRI processing.
115
+ 6. Delegate to `fmri-skill` for rs-fMRI and task-fMRI processing.
116
+ 7. Delegate to `dwi-skill` for dMRI processing.
117
+ 8. If phenotype extraction is requested, run `scripts/extract_pnc_phenotype.py`.
118
+ 9. If QC summary is requested, run `scripts/pnc_qc_summary.py`.
119
+ 10. Save outputs into `pnc_output/`.
120
+
121
+ ---
122
+
123
+ ## Modality Processing Delegation
124
+
125
+ | Modality | Delegated skill | Typical tasks | Main outputs |
126
+ |---|---|---|---|
127
+ | sMRI (T1w) | `smri-skill` | brain extraction, tissue segmentation | `smri_output/` derivatives |
128
+ | rs-fMRI | `fmri-skill` | preprocessing, denoising, connectivity | `fmri_output/` connectivity |
129
+ | task-fMRI | `fmri-skill` | task GLM, activation analysis | `fmri_output/` task results |
130
+ | dMRI | `dwi-skill` | diffusion preprocessing, tensor metrics | `dwi_output/` metrics |
131
+
132
+ ---
133
+
134
+ ## Standard Output Layout
135
+
136
+ ```
137
+ pnc_output/
138
+ ├── bids/ # BIDS-staged data (or validation report)
139
+ ├── smri/ # Structural MRI derivatives
140
+ ├── fmri/ # Functional MRI derivatives (rs + task)
141
+ ├── dwi/ # Diffusion MRI derivatives
142
+ ├── phenotype/ # Merged phenotype tables (cognitive, psychiatric)
143
+ ├── qc/ # QC summaries and exclusion lists
144
+ └── logs/ # Processing logs
145
+ ```
146
+
147
+ ---
148
+
149
+ ## Benchmark Adapter Guidance
150
+
151
+ For benchmark-style prompts, do not force the full orchestration when the task only asks for local PNC data validation.
152
+
153
+ - If the task starts from PNC data already present on disk and only asks for BIDS validation:
154
+ - Skip the download stage
155
+ - Default to the narrow path `local PNC discovery -> BIDS validation -> report`
156
+ - In benchmark mode, do not require explicit confirmation before presenting the validation solution.
157
+
158
+ ---
159
+
160
+ ## Safety and Execution Policy
161
+ - No execution before explicit plan confirmation.
162
+ - All execution must be routed via `claw-shell`.
163
+ - Missing dependencies must be resolved by `dependency-planner` before running.
164
+
165
+ ---
166
+
167
+ ## Important Notes and Limitations
168
+ - PNC is a developmental cohort; analyses should account for age effects (8-21 years).
169
+ - Pediatric data may require adjusted preprocessing parameters (e.g., higher motion thresholds).
170
+ - Penn CNB (Computerized Neurocognitive Battery) provides rich cognitive phenotyping.
171
+ - Psychiatric assessment includes DSM-based diagnoses.
172
+ - Large sample size enables well-powered developmental analyses.
173
+ - `pnc-skill` is orchestration-only; detailed preprocessing logic remains in modality skills.
174
+
175
+ ---
176
+
177
+ ## When to Call This Skill
178
+ - User asks for end-to-end PNC workflow.
179
+ - User asks to process PNC neuroimaging data.
180
+ - User needs BIDS validation for PNC data.
181
+ - User asks to extract PNC phenotype data (cognitive, psychiatric, demographic).
182
+ - User asks for developmental neuroimaging analysis.
183
+
184
+ ---
185
+
186
+ ## Complementary / Related Skills
187
+ - `smri-skill` → structural MRI preprocessing
188
+ - `fmri-skill` → functional MRI preprocessing and analysis
189
+ - `dwi-skill` → diffusion MRI preprocessing
190
+ - `bids-organizer` → BIDS validation and organization
191
+ - `brain-visualization` → visualization of derivatives
192
+ - `dependency-planner` → dependency resolution
193
+ - `conda-env-manager` → environment management
194
+ - `claw-shell` → command execution
195
+
196
+ ---
197
+
198
+ ## Reference
199
+ - PNC: https://www.med.upenn.edu/bbl/
200
+ - Satterthwaite et al. (2014): Neuroimaging of the Philadelphia Neurodevelopmental Cohort. NeuroImage.
201
+ - OpenNeuro ds000030
202
+ - NIMH Data Archive: https://nda.nih.gov/
203
+
204
+ Created At: 2026-05-06 13:55 HKT
205
+ Last Updated At: 2026-05-06 13:55 HKT
206
+ Author: chengwang96