@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.
- package/package.json +2 -2
- package/skills/01_Meta-Skills/academic-research-hub/SKILL.md +108 -0
- package/skills/01_Meta-Skills/academic-research-hub/scripts/requirements.txt +17 -0
- package/skills/01_Meta-Skills/academic-research-hub/scripts/research.py +781 -0
- package/skills/01_Meta-Skills/beautiful-log/SKILL.md +64 -0
- package/skills/01_Meta-Skills/beautiful-log/scripts/beautiful_log.py +274 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/SKILL.md +130 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/config.template.yaml +54 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/top5_digest_template.md +5 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/build_top5_digest.py +300 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/common.py +137 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/merge_results.py +106 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/run_pipeline.py +177 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_arxiv.py +162 -0
- package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_pubmed.py +202 -0
- package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/SKILL.md +173 -0
- package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/scripts/normalize_data.py +874 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/SKILL.md +134 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/confirmation-prompts.md +31 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/output-patterns.md +45 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_markdown_deliverables.py +41 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_research_log.py +84 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_summary_md.py +63 -0
- package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/extract_pdf_bundle.py +140 -0
- package/skills/01_Meta-Skills/experiment-controller/SKILL.md +140 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/SKILL.md +366 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/entity_resolution.py +120 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/extraction_prompt_template.txt +19 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/graph_query.py +106 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/hypothesis_cli_reference.py +42 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/new_data_source_template.py +116 -0
- package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/requirements.txt +15 -0
- package/skills/01_Meta-Skills/method-design/SKILL.md +61 -0
- package/skills/01_Meta-Skills/multi-search-engine/SKILL.md +119 -0
- package/skills/01_Meta-Skills/research-idea/SKILL.md +65 -0
- package/skills/05_EEG_ERP/eeg-skill/SKILL.md +197 -0
- package/skills/05_EEG_ERP/meg-skill/SKILL.md +188 -0
- package/skills/05_EEG_ERP/meg-skill/scripts/time_frequency.py +223 -0
- package/skills/05_EEG_ERP/mne-eeg-tool/SKILL.md +165 -0
- package/skills/05_EEG_ERP/mne-eeg-tool/scripts/eeg_pipeline_reference.py +231 -0
- package/skills/05_EEG_ERP/seed-iv-skill/SKILL.md +184 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/classify_seed_iv.py +154 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/extract_seed_iv_features.py +190 -0
- package/skills/05_EEG_ERP/seed-iv-skill/scripts/validate_seed_iv.py +102 -0
- package/skills/05_EEG_ERP/seed-vig-skill/SKILL.md +182 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/classify_seed_vig.py +165 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/extract_seed_vig_features.py +185 -0
- package/skills/05_EEG_ERP/seed-vig-skill/scripts/validate_seed_vig.py +88 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/SKILL.md +308 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/abcd_qc_summary.py +449 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/extract_abcd_phenotype.py +292 -0
- package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/reorganize_abcd.py +387 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/SKILL.md +302 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/abide_qc_summary.py +317 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/extract_abide_phenotype.py +267 -0
- package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/reorganize_abide.py +387 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/SKILL.md +244 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/adhd200_qc_summary.py +98 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/extract_adhd200_phenotype.py +134 -0
- package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/reorganize_adhd200.py +206 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/SKILL.md +358 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_adni_task_files.py +1305 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_vqa_from_tasks.py +766 -0
- package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/reorganize_adni.py +491 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/SKILL.md +295 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/aibl_qc_summary.py +260 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/extract_aibl_phenotype.py +365 -0
- package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/reorganize_aibl.py +394 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/SKILL.md +292 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/aomic_qc_summary.py +258 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/extract_aomic_phenotype.py +284 -0
- package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/reorganize_aomic.py +322 -0
- package/skills/06_fMRI_Neuroimaging/asl-skill/SKILL.md +168 -0
- package/skills/06_fMRI_Neuroimaging/asl-skill/scripts/compute_cbf.py +224 -0
- package/skills/06_fMRI_Neuroimaging/bids-organizer/SKILL.md +241 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/SKILL.md +186 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/bold5000_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/extract_bold5000_stimulus.py +125 -0
- package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/reorganize_bold5000.py +102 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/SKILL.md +213 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/camcan_qc_summary.py +131 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/extract_camcan_phenotype.py +145 -0
- package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/validate_camcan.py +141 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/SKILL.md +201 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/cobre_qc_summary.py +95 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/extract_cobre_phenotype.py +104 -0
- package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/reorganize_cobre.py +140 -0
- package/skills/06_fMRI_Neuroimaging/conn-tool/SKILL.md +180 -0
- package/skills/06_fMRI_Neuroimaging/dcm2nii/SKILL.md +189 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/SKILL.md +183 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/dmt_har_med_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/extract_dmt_har_med_phenotype.py +121 -0
- package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/reorganize_dmt_har_med.py +125 -0
- package/skills/06_fMRI_Neuroimaging/dwi-skill/SKILL.md +359 -0
- package/skills/06_fMRI_Neuroimaging/fmri-skill/SKILL.md +371 -0
- package/skills/06_fMRI_Neuroimaging/fmriprep-tool/SKILL.md +228 -0
- package/skills/06_fMRI_Neuroimaging/freesurfer-tool/SKILL.md +286 -0
- package/skills/06_fMRI_Neuroimaging/freesurfer-tool/scripts/freesurfer_processor.py +145 -0
- package/skills/06_fMRI_Neuroimaging/fsl-tool/SKILL.md +208 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/SKILL.md +271 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/extract_hbn_phenotype.py +107 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/hbn_qc_summary.py +96 -0
- package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/reorganize_hbn.py +150 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/extract_hcpa_phenotype.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/hcpa_qc_summary.py +120 -0
- package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/reorganize_hcpa.py +155 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/extract_hcpd_phenotype.py +148 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/hcpd_qc_summary.py +125 -0
- package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/reorganize_hcpd.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/SKILL.md +215 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/extract_hcpep_phenotype.py +157 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/hcpep_qc_summary.py +143 -0
- package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/reorganize_hcpep.py +146 -0
- package/skills/06_fMRI_Neuroimaging/hcppipeline-tool/SKILL.md +217 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/SKILL.md +214 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/extract_hcpya_phenotype.py +190 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/hcpya_qc_summary.py +152 -0
- package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/reorganize_hcpya.py +203 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/SKILL.md +198 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/ixi_qc_summary.py +137 -0
- package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/reorganize_ixi.py +190 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/SKILL.md +191 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/extract_mnd_phenotype.py +143 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/mnd_qc_summary.py +120 -0
- package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/validate_mnd.py +107 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/SKILL.md +203 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/analyze_lesions.py +119 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/longitudinal_lesion.py +148 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/mschallenge_qc_summary.py +132 -0
- package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/validate_mschallenge.py +116 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/SKILL.md +184 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/atlas_coordinate_reference.py +61 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/freesurfer_io_reference.py +34 -0
- package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/nifti_inspection_reference.py +35 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/SKILL.md +205 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/extract_nifd_phenotype.py +132 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/nifd_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/validate_nifd.py +111 -0
- package/skills/06_fMRI_Neuroimaging/nii2dcm/SKILL.md +143 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/SKILL.md +266 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/connectome_reference.py +65 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/denoise_timeseries_reference.py +58 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/hierarchical_parcellation_reference.py +53 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/kmeans_parcellation_reference.py +53 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/preprocess_bold_reference.py +76 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_dictlearning_reference.py +56 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_ica_reference.py +59 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/second_level_glm_reference.py +58 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/spacenet_classifier_reference.py +59 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/svm_classifier_reference.py +60 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/task_glm_reference.py +63 -0
- package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/zalff_summary_reference.py +109 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/SKILL.md +210 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/extract_nsd_stimulus.py +171 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/nsd_qc_summary.py +142 -0
- package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/validate_nsd.py +142 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/SKILL.md +205 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/extract_oasis_phenotype.py +126 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/oasis_qc_summary.py +115 -0
- package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/validate_oasis.py +119 -0
- package/skills/06_fMRI_Neuroimaging/pet-skill/SKILL.md +173 -0
- package/skills/06_fMRI_Neuroimaging/pet-skill/scripts/compute_suvr.py +202 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/SKILL.md +206 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/extract_pnc_phenotype.py +136 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/pnc_qc_summary.py +116 -0
- package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/validate_pnc.py +120 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/SKILL.md +209 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/extract_ppmi_phenotype.py +138 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/ppmi_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/validate_ppmi.py +117 -0
- package/skills/06_fMRI_Neuroimaging/qsiprep-tool/SKILL.md +320 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/SKILL.md +215 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/extract_rest_mdd_phenotype.py +132 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/harmonize_sites.py +152 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/rest_mdd_qc_summary.py +124 -0
- package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/validate_rest_mdd.py +103 -0
- package/skills/06_fMRI_Neuroimaging/smri-skill/SKILL.md +302 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/SKILL.md +204 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/extract_tcp_phenotype.py +139 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/tcp_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/validate_tcp.py +99 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/SKILL.md +217 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/extract_ucla_cnp_phenotype.py +145 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/ucla_cnp_qc_summary.py +111 -0
- package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/validate_ucla_cnp.py +113 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/SKILL.md +310 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/build_ukb_survival.py +210 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_cases.py +308 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_phenotype.py +232 -0
- package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/ukb_qc_summary.py +158 -0
- package/skills/06_fMRI_Neuroimaging/wmh-segmentation/SKILL.md +133 -0
- package/skills/07_Computational_Modeling/detrending/SKILL.md +118 -0
- package/skills/07_Computational_Modeling/dictlearning/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/filtering/SKILL.md +121 -0
- package/skills/07_Computational_Modeling/glm/SKILL.md +153 -0
- package/skills/07_Computational_Modeling/hierarchical/SKILL.md +121 -0
- package/skills/07_Computational_Modeling/ica/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/kmeans/SKILL.md +119 -0
- package/skills/07_Computational_Modeling/run_models/SKILL.md +427 -0
- package/skills/07_Computational_Modeling/spacenet/SKILL.md +122 -0
- package/skills/07_Computational_Modeling/svm/SKILL.md +120 -0
- package/skills/08_Computational_Neuroscience/brain_gnn/SKILL.md +183 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/SKILL.md +239 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/dti_metrics_reference.py +70 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/load_and_mask_reference.py +76 -0
- package/skills/08_Computational_Neuroscience/dipy-tool/scripts/roi_stats_reference.py +59 -0
- package/skills/08_Computational_Neuroscience/fm_app/SKILL.md +195 -0
- package/skills/08_Computational_Neuroscience/neurostorm/SKILL.md +151 -0
- package/skills/13_Visualization/brain-visualization/SKILL.md +191 -0
- package/skills/13_Visualization/brain-visualization/scripts/connectome_reference.py +108 -0
- package/skills/13_Visualization/brain-visualization/scripts/freesurfer_ply_reference.py +54 -0
- package/skills/13_Visualization/brain-visualization/scripts/zalff_summary_reference.py +116 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/SKILL.md +78 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/assets/naturecomm_figures.tex +74 -0
- package/skills/13_Visualization/ethoclaw-paper-figure-layout/scripts/layout_results_foldered.py +579 -0
- package/skills/14_Writing/overleaf-skill/SKILL.md +184 -0
- package/skills/14_Writing/overleaf-skill/scripts/install.sh +30 -0
- package/skills/14_Writing/paper-writing/SKILL.md +146 -0
- package/skills/14_Writing/paper-writing/scripts/data_statement_templates.py +164 -0
- package/skills/14_Writing/paper-writing/scripts/figure_templates.py +315 -0
- package/skills/14_Writing/paper-writing/scripts/nature_figure_style.py +214 -0
- package/skills/14_Writing/paper-writing/scripts/section_phrasebank.py +246 -0
- package/skills/16_Animal_Behavior/deeplabcut/SKILL.md +154 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/3d-pose.md +89 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/maDLC.md +123 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/modelzoo.md +98 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/standard-pipeline.md +165 -0
- package/skills/16_Animal_Behavior/deeplabcut/references/utilities.md +146 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/SKILL.md +274 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.html +112 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.md +21 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/cluster-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/heatmap-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/integrated-interpretation.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/overview.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/project-summary.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/radar-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/raw-trajectory.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/sample-check.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/single-subject-section.md +3 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/stats-section.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/epm.md +52 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/fst.md +37 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/nor.md +39 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/oft.md +43 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tcst.md +45 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tst.md +36 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/input-types.md +59 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/interpretation-guardrails.md +45 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/metadata-schema.md +57 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/report-sections.md +86 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/section-selection-rules.md +169 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/build_report_manifest.py +27 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/render_report.py +34 -0
- package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/report_utils.py +1121 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/SKILL.md +390 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/reference_code.py +98 -0
- package/skills/16_Animal_Behavior/ethoclaw-animal-pose-estimation/SKILL.md +336 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/README.md +21 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/SKILL.md +41 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/batch_kinematic_generator.py +663 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/config.json +19 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/generate_kinematic_parameter.py +401 -0
- package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/kinematic_generator.py +265 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/SKILL.md +72 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/references/config.example.toml +56 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params.py +232 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params_from_config.py +236 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/SKILL.md +68 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/references/notes.md +5 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/scripts/plot_h5_radar.py +513 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/SKILL.md +52 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/config.toml +81 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/references/stats-rule.md +18 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_inspect.py +79 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_batch.py +624 -0
- package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_stats.py +438 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/SKILL.md +280 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_trajectory.py +790 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_velocity.py +855 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.csv +101 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.h5 +0 -0
- package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_data_readme.md +126 -0
|
@@ -0,0 +1,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())
|