@brainpilot/skills 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/package.json +2 -2
  2. package/skills/01_Meta-Skills/academic-research-hub/SKILL.md +108 -0
  3. package/skills/01_Meta-Skills/academic-research-hub/scripts/requirements.txt +17 -0
  4. package/skills/01_Meta-Skills/academic-research-hub/scripts/research.py +781 -0
  5. package/skills/01_Meta-Skills/beautiful-log/SKILL.md +64 -0
  6. package/skills/01_Meta-Skills/beautiful-log/scripts/beautiful_log.py +274 -0
  7. package/skills/01_Meta-Skills/ethoclaw-daily-paper/SKILL.md +130 -0
  8. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/config.template.yaml +54 -0
  9. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/top5_digest_template.md +5 -0
  10. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/build_top5_digest.py +300 -0
  11. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/common.py +137 -0
  12. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/merge_results.py +106 -0
  13. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/run_pipeline.py +177 -0
  14. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_arxiv.py +162 -0
  15. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_pubmed.py +202 -0
  16. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/SKILL.md +173 -0
  17. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/scripts/normalize_data.py +874 -0
  18. package/skills/01_Meta-Skills/ethoclaw-pdf-research/SKILL.md +134 -0
  19. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/confirmation-prompts.md +31 -0
  20. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/output-patterns.md +45 -0
  21. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_markdown_deliverables.py +41 -0
  22. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_research_log.py +84 -0
  23. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_summary_md.py +63 -0
  24. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/extract_pdf_bundle.py +140 -0
  25. package/skills/01_Meta-Skills/experiment-controller/SKILL.md +140 -0
  26. package/skills/01_Meta-Skills/knowledge-graph-builder/SKILL.md +366 -0
  27. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/entity_resolution.py +120 -0
  28. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/extraction_prompt_template.txt +19 -0
  29. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/graph_query.py +106 -0
  30. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/hypothesis_cli_reference.py +42 -0
  31. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/new_data_source_template.py +116 -0
  32. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/requirements.txt +15 -0
  33. package/skills/01_Meta-Skills/method-design/SKILL.md +61 -0
  34. package/skills/01_Meta-Skills/multi-search-engine/SKILL.md +119 -0
  35. package/skills/01_Meta-Skills/research-idea/SKILL.md +65 -0
  36. package/skills/05_EEG_ERP/eeg-skill/SKILL.md +197 -0
  37. package/skills/05_EEG_ERP/meg-skill/SKILL.md +188 -0
  38. package/skills/05_EEG_ERP/meg-skill/scripts/time_frequency.py +223 -0
  39. package/skills/05_EEG_ERP/mne-eeg-tool/SKILL.md +165 -0
  40. package/skills/05_EEG_ERP/mne-eeg-tool/scripts/eeg_pipeline_reference.py +231 -0
  41. package/skills/05_EEG_ERP/seed-iv-skill/SKILL.md +184 -0
  42. package/skills/05_EEG_ERP/seed-iv-skill/scripts/classify_seed_iv.py +154 -0
  43. package/skills/05_EEG_ERP/seed-iv-skill/scripts/extract_seed_iv_features.py +190 -0
  44. package/skills/05_EEG_ERP/seed-iv-skill/scripts/validate_seed_iv.py +102 -0
  45. package/skills/05_EEG_ERP/seed-vig-skill/SKILL.md +182 -0
  46. package/skills/05_EEG_ERP/seed-vig-skill/scripts/classify_seed_vig.py +165 -0
  47. package/skills/05_EEG_ERP/seed-vig-skill/scripts/extract_seed_vig_features.py +185 -0
  48. package/skills/05_EEG_ERP/seed-vig-skill/scripts/validate_seed_vig.py +88 -0
  49. package/skills/06_fMRI_Neuroimaging/abcd-skill/SKILL.md +308 -0
  50. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/abcd_qc_summary.py +449 -0
  51. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/extract_abcd_phenotype.py +292 -0
  52. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/reorganize_abcd.py +387 -0
  53. package/skills/06_fMRI_Neuroimaging/abide-skill/SKILL.md +302 -0
  54. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/abide_qc_summary.py +317 -0
  55. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/extract_abide_phenotype.py +267 -0
  56. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/reorganize_abide.py +387 -0
  57. package/skills/06_fMRI_Neuroimaging/adhd200-skill/SKILL.md +244 -0
  58. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/adhd200_qc_summary.py +98 -0
  59. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/extract_adhd200_phenotype.py +134 -0
  60. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/reorganize_adhd200.py +206 -0
  61. package/skills/06_fMRI_Neuroimaging/adni-skill/SKILL.md +358 -0
  62. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_adni_task_files.py +1305 -0
  63. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_vqa_from_tasks.py +766 -0
  64. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/reorganize_adni.py +491 -0
  65. package/skills/06_fMRI_Neuroimaging/aibl-skill/SKILL.md +295 -0
  66. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/aibl_qc_summary.py +260 -0
  67. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/extract_aibl_phenotype.py +365 -0
  68. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/reorganize_aibl.py +394 -0
  69. package/skills/06_fMRI_Neuroimaging/aomic-skill/SKILL.md +292 -0
  70. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/aomic_qc_summary.py +258 -0
  71. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/extract_aomic_phenotype.py +284 -0
  72. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/reorganize_aomic.py +322 -0
  73. package/skills/06_fMRI_Neuroimaging/asl-skill/SKILL.md +168 -0
  74. package/skills/06_fMRI_Neuroimaging/asl-skill/scripts/compute_cbf.py +224 -0
  75. package/skills/06_fMRI_Neuroimaging/bids-organizer/SKILL.md +241 -0
  76. package/skills/06_fMRI_Neuroimaging/bold5000-skill/SKILL.md +186 -0
  77. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/bold5000_qc_summary.py +96 -0
  78. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/extract_bold5000_stimulus.py +125 -0
  79. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/reorganize_bold5000.py +102 -0
  80. package/skills/06_fMRI_Neuroimaging/camcan-skill/SKILL.md +213 -0
  81. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/camcan_qc_summary.py +131 -0
  82. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/extract_camcan_phenotype.py +145 -0
  83. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/validate_camcan.py +141 -0
  84. package/skills/06_fMRI_Neuroimaging/cobre-skill/SKILL.md +201 -0
  85. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/cobre_qc_summary.py +95 -0
  86. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/extract_cobre_phenotype.py +104 -0
  87. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/reorganize_cobre.py +140 -0
  88. package/skills/06_fMRI_Neuroimaging/conn-tool/SKILL.md +180 -0
  89. package/skills/06_fMRI_Neuroimaging/dcm2nii/SKILL.md +189 -0
  90. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/SKILL.md +183 -0
  91. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/dmt_har_med_qc_summary.py +96 -0
  92. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/extract_dmt_har_med_phenotype.py +121 -0
  93. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/reorganize_dmt_har_med.py +125 -0
  94. package/skills/06_fMRI_Neuroimaging/dwi-skill/SKILL.md +359 -0
  95. package/skills/06_fMRI_Neuroimaging/fmri-skill/SKILL.md +371 -0
  96. package/skills/06_fMRI_Neuroimaging/fmriprep-tool/SKILL.md +228 -0
  97. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/SKILL.md +286 -0
  98. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/scripts/freesurfer_processor.py +145 -0
  99. package/skills/06_fMRI_Neuroimaging/fsl-tool/SKILL.md +208 -0
  100. package/skills/06_fMRI_Neuroimaging/hbn-skill/SKILL.md +271 -0
  101. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/extract_hbn_phenotype.py +107 -0
  102. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/hbn_qc_summary.py +96 -0
  103. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/reorganize_hbn.py +150 -0
  104. package/skills/06_fMRI_Neuroimaging/hcpa-skill/SKILL.md +210 -0
  105. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/extract_hcpa_phenotype.py +146 -0
  106. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/hcpa_qc_summary.py +120 -0
  107. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/reorganize_hcpa.py +155 -0
  108. package/skills/06_fMRI_Neuroimaging/hcpd-skill/SKILL.md +210 -0
  109. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/extract_hcpd_phenotype.py +148 -0
  110. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/hcpd_qc_summary.py +125 -0
  111. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/reorganize_hcpd.py +146 -0
  112. package/skills/06_fMRI_Neuroimaging/hcpep-skill/SKILL.md +215 -0
  113. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/extract_hcpep_phenotype.py +157 -0
  114. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/hcpep_qc_summary.py +143 -0
  115. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/reorganize_hcpep.py +146 -0
  116. package/skills/06_fMRI_Neuroimaging/hcppipeline-tool/SKILL.md +217 -0
  117. package/skills/06_fMRI_Neuroimaging/hcpya-skill/SKILL.md +214 -0
  118. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/extract_hcpya_phenotype.py +190 -0
  119. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/hcpya_qc_summary.py +152 -0
  120. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/reorganize_hcpya.py +203 -0
  121. package/skills/06_fMRI_Neuroimaging/ixi-skill/SKILL.md +198 -0
  122. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/ixi_qc_summary.py +137 -0
  123. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/reorganize_ixi.py +190 -0
  124. package/skills/06_fMRI_Neuroimaging/mnd-skill/SKILL.md +191 -0
  125. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/extract_mnd_phenotype.py +143 -0
  126. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/mnd_qc_summary.py +120 -0
  127. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/validate_mnd.py +107 -0
  128. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/SKILL.md +203 -0
  129. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/analyze_lesions.py +119 -0
  130. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/longitudinal_lesion.py +148 -0
  131. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/mschallenge_qc_summary.py +132 -0
  132. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/validate_mschallenge.py +116 -0
  133. package/skills/06_fMRI_Neuroimaging/nibabel-skill/SKILL.md +184 -0
  134. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/atlas_coordinate_reference.py +61 -0
  135. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/freesurfer_io_reference.py +34 -0
  136. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/nifti_inspection_reference.py +35 -0
  137. package/skills/06_fMRI_Neuroimaging/nifd-skill/SKILL.md +205 -0
  138. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/extract_nifd_phenotype.py +132 -0
  139. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/nifd_qc_summary.py +111 -0
  140. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/validate_nifd.py +111 -0
  141. package/skills/06_fMRI_Neuroimaging/nii2dcm/SKILL.md +143 -0
  142. package/skills/06_fMRI_Neuroimaging/nilearn-tool/SKILL.md +266 -0
  143. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/connectome_reference.py +65 -0
  144. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/denoise_timeseries_reference.py +58 -0
  145. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/hierarchical_parcellation_reference.py +53 -0
  146. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/kmeans_parcellation_reference.py +53 -0
  147. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/preprocess_bold_reference.py +76 -0
  148. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_dictlearning_reference.py +56 -0
  149. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_ica_reference.py +59 -0
  150. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/second_level_glm_reference.py +58 -0
  151. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/spacenet_classifier_reference.py +59 -0
  152. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/svm_classifier_reference.py +60 -0
  153. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/task_glm_reference.py +63 -0
  154. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/zalff_summary_reference.py +109 -0
  155. package/skills/06_fMRI_Neuroimaging/nsd-skill/SKILL.md +210 -0
  156. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/extract_nsd_stimulus.py +171 -0
  157. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/nsd_qc_summary.py +142 -0
  158. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/validate_nsd.py +142 -0
  159. package/skills/06_fMRI_Neuroimaging/oasis-skill/SKILL.md +205 -0
  160. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/extract_oasis_phenotype.py +126 -0
  161. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/oasis_qc_summary.py +115 -0
  162. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/validate_oasis.py +119 -0
  163. package/skills/06_fMRI_Neuroimaging/pet-skill/SKILL.md +173 -0
  164. package/skills/06_fMRI_Neuroimaging/pet-skill/scripts/compute_suvr.py +202 -0
  165. package/skills/06_fMRI_Neuroimaging/pnc-skill/SKILL.md +206 -0
  166. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/extract_pnc_phenotype.py +136 -0
  167. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/pnc_qc_summary.py +116 -0
  168. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/validate_pnc.py +120 -0
  169. package/skills/06_fMRI_Neuroimaging/ppmi-skill/SKILL.md +209 -0
  170. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/extract_ppmi_phenotype.py +138 -0
  171. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/ppmi_qc_summary.py +111 -0
  172. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/validate_ppmi.py +117 -0
  173. package/skills/06_fMRI_Neuroimaging/qsiprep-tool/SKILL.md +320 -0
  174. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/SKILL.md +215 -0
  175. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/extract_rest_mdd_phenotype.py +132 -0
  176. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/harmonize_sites.py +152 -0
  177. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/rest_mdd_qc_summary.py +124 -0
  178. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/validate_rest_mdd.py +103 -0
  179. package/skills/06_fMRI_Neuroimaging/smri-skill/SKILL.md +302 -0
  180. package/skills/06_fMRI_Neuroimaging/tcp-skill/SKILL.md +204 -0
  181. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/extract_tcp_phenotype.py +139 -0
  182. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/tcp_qc_summary.py +111 -0
  183. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/validate_tcp.py +99 -0
  184. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/SKILL.md +217 -0
  185. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/extract_ucla_cnp_phenotype.py +145 -0
  186. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/ucla_cnp_qc_summary.py +111 -0
  187. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/validate_ucla_cnp.py +113 -0
  188. package/skills/06_fMRI_Neuroimaging/ukb-skill/SKILL.md +310 -0
  189. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/build_ukb_survival.py +210 -0
  190. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_cases.py +308 -0
  191. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_phenotype.py +232 -0
  192. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/ukb_qc_summary.py +158 -0
  193. package/skills/06_fMRI_Neuroimaging/wmh-segmentation/SKILL.md +133 -0
  194. package/skills/07_Computational_Modeling/detrending/SKILL.md +118 -0
  195. package/skills/07_Computational_Modeling/dictlearning/SKILL.md +122 -0
  196. package/skills/07_Computational_Modeling/filtering/SKILL.md +121 -0
  197. package/skills/07_Computational_Modeling/glm/SKILL.md +153 -0
  198. package/skills/07_Computational_Modeling/hierarchical/SKILL.md +121 -0
  199. package/skills/07_Computational_Modeling/ica/SKILL.md +122 -0
  200. package/skills/07_Computational_Modeling/kmeans/SKILL.md +119 -0
  201. package/skills/07_Computational_Modeling/run_models/SKILL.md +427 -0
  202. package/skills/07_Computational_Modeling/spacenet/SKILL.md +122 -0
  203. package/skills/07_Computational_Modeling/svm/SKILL.md +120 -0
  204. package/skills/08_Computational_Neuroscience/brain_gnn/SKILL.md +183 -0
  205. package/skills/08_Computational_Neuroscience/dipy-tool/SKILL.md +239 -0
  206. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/dti_metrics_reference.py +70 -0
  207. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/load_and_mask_reference.py +76 -0
  208. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/roi_stats_reference.py +59 -0
  209. package/skills/08_Computational_Neuroscience/fm_app/SKILL.md +195 -0
  210. package/skills/08_Computational_Neuroscience/neurostorm/SKILL.md +151 -0
  211. package/skills/13_Visualization/brain-visualization/SKILL.md +191 -0
  212. package/skills/13_Visualization/brain-visualization/scripts/connectome_reference.py +108 -0
  213. package/skills/13_Visualization/brain-visualization/scripts/freesurfer_ply_reference.py +54 -0
  214. package/skills/13_Visualization/brain-visualization/scripts/zalff_summary_reference.py +116 -0
  215. package/skills/13_Visualization/ethoclaw-paper-figure-layout/SKILL.md +78 -0
  216. package/skills/13_Visualization/ethoclaw-paper-figure-layout/assets/naturecomm_figures.tex +74 -0
  217. package/skills/13_Visualization/ethoclaw-paper-figure-layout/scripts/layout_results_foldered.py +579 -0
  218. package/skills/14_Writing/overleaf-skill/SKILL.md +184 -0
  219. package/skills/14_Writing/overleaf-skill/scripts/install.sh +30 -0
  220. package/skills/14_Writing/paper-writing/SKILL.md +146 -0
  221. package/skills/14_Writing/paper-writing/scripts/data_statement_templates.py +164 -0
  222. package/skills/14_Writing/paper-writing/scripts/figure_templates.py +315 -0
  223. package/skills/14_Writing/paper-writing/scripts/nature_figure_style.py +214 -0
  224. package/skills/14_Writing/paper-writing/scripts/section_phrasebank.py +246 -0
  225. package/skills/16_Animal_Behavior/deeplabcut/SKILL.md +154 -0
  226. package/skills/16_Animal_Behavior/deeplabcut/references/3d-pose.md +89 -0
  227. package/skills/16_Animal_Behavior/deeplabcut/references/maDLC.md +123 -0
  228. package/skills/16_Animal_Behavior/deeplabcut/references/modelzoo.md +98 -0
  229. package/skills/16_Animal_Behavior/deeplabcut/references/standard-pipeline.md +165 -0
  230. package/skills/16_Animal_Behavior/deeplabcut/references/utilities.md +146 -0
  231. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/SKILL.md +274 -0
  232. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.html +112 -0
  233. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.md +21 -0
  234. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/cluster-section.md +5 -0
  235. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/heatmap-section.md +5 -0
  236. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/integrated-interpretation.md +3 -0
  237. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/overview.md +3 -0
  238. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/project-summary.md +3 -0
  239. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/radar-section.md +5 -0
  240. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/raw-trajectory.md +3 -0
  241. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/sample-check.md +3 -0
  242. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/single-subject-section.md +3 -0
  243. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/stats-section.md +5 -0
  244. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/epm.md +52 -0
  245. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/fst.md +37 -0
  246. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/nor.md +39 -0
  247. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/oft.md +43 -0
  248. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tcst.md +45 -0
  249. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tst.md +36 -0
  250. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/input-types.md +59 -0
  251. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/interpretation-guardrails.md +45 -0
  252. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/metadata-schema.md +57 -0
  253. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/report-sections.md +86 -0
  254. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/section-selection-rules.md +169 -0
  255. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/build_report_manifest.py +27 -0
  256. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/render_report.py +34 -0
  257. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/report_utils.py +1121 -0
  258. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/SKILL.md +390 -0
  259. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/reference_code.py +98 -0
  260. package/skills/16_Animal_Behavior/ethoclaw-animal-pose-estimation/SKILL.md +336 -0
  261. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/README.md +21 -0
  262. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/SKILL.md +41 -0
  263. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/batch_kinematic_generator.py +663 -0
  264. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/config.json +19 -0
  265. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/generate_kinematic_parameter.py +401 -0
  266. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/kinematic_generator.py +265 -0
  267. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/SKILL.md +72 -0
  268. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/references/config.example.toml +56 -0
  269. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params.py +232 -0
  270. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params_from_config.py +236 -0
  271. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/SKILL.md +68 -0
  272. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/references/notes.md +5 -0
  273. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/scripts/plot_h5_radar.py +513 -0
  274. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/SKILL.md +52 -0
  275. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/config.toml +81 -0
  276. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/references/stats-rule.md +18 -0
  277. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_inspect.py +79 -0
  278. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_batch.py +624 -0
  279. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_stats.py +438 -0
  280. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/SKILL.md +280 -0
  281. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_trajectory.py +790 -0
  282. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_velocity.py +855 -0
  283. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.csv +101 -0
  284. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.h5 +0 -0
  285. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_data_readme.md +126 -0
@@ -0,0 +1,336 @@
1
+ ---
2
+ name: ethoclaw-animal-pose-estimation
3
+ description: Animal pose estimation using DeepLabCut SuperAnimal pre-trained models, supporting analysis of local videos and images.
4
+ homepage: https://github.com/DeepLabCut/DeepLabCut
5
+ metadata:
6
+ {
7
+ "openclaw":
8
+ {
9
+ "emoji": "🐭",
10
+ "requires": { "python": ["deeplabcut"] },
11
+ "install":
12
+ [
13
+ {
14
+ "id": "pip",
15
+ "kind": "pip",
16
+ "package": "deeplabcut",
17
+ "version": "--pre",
18
+ "label": "Install DeepLabCut with model zoo support",
19
+ },
20
+ ],
21
+ },
22
+ }
23
+ ---
24
+
25
+ # Animal Pose Estimation (DeepLabCut SuperAnimal)
26
+
27
+ Use DeepLabCut's SuperAnimal pre-trained models to perform animal pose estimation (keypoint detection) on local videos or images.
28
+
29
+ ## Supported Models
30
+
31
+ - **superanimal_topviewmouse**: Top-view mouse model
32
+ - **superanimal_quadruped**: Quadruped animal model
33
+
34
+ ## Supported Model Architectures
35
+
36
+ - **hrnet_w32**: HRNet w32 (recommended, higher accuracy)
37
+ - **resnet_50**: ResNet-50 (faster speed)
38
+
39
+ ## Supported Detectors
40
+
41
+ - **fasterrcnn_resnet50_fpn_v2**: Faster R-CNN (recommended, higher accuracy)
42
+ - **fasterrcnn_mobilenet_v3_large_fpn**: MobileNet (faster speed)
43
+
44
+ ## Quick Start
45
+
46
+ ### Analyze a Single Video
47
+
48
+ ```python
49
+ import deeplabcut
50
+ from pathlib import Path
51
+
52
+ # Video path
53
+ video_path = "/path/to/your/video.mp4"
54
+
55
+ # Optional: specify output directory, if not specified uses the same directory as the video
56
+ output_folder = "/path/to/output" # Optional
57
+
58
+ # Run SuperAnimal analysis
59
+ deeplabcut.video_inference_superanimal(
60
+ videos=[video_path],
61
+ superanimal_name="superanimal_topviewmouse",
62
+ model_name="hrnet_w32",
63
+ detector_name="fasterrcnn_resnet50_fpn_v2",
64
+ video_adapt=False,
65
+ max_individuals=1,
66
+ pseudo_threshold=0.1,
67
+ bbox_threshold=0.9,
68
+ dest_folder=output_folder # If None, results are saved to the same directory as the video
69
+ )
70
+ ```
71
+
72
+ ### Analyze Multiple Images
73
+
74
+ ```python
75
+ from deeplabcut.pose_estimation_pytorch.apis import superanimal_analyze_images
76
+ from pathlib import Path
77
+
78
+ # List of image paths
79
+ image_paths = [
80
+ "/path/to/image1.jpg",
81
+ "/path/to/image2.jpg",
82
+ ]
83
+
84
+ # Optional: specify output directory
85
+ output_folder = "/path/to/output" # Optional
86
+
87
+ # Run SuperAnimal image analysis
88
+ superanimal_analyze_images(
89
+ images=image_paths,
90
+ superanimal_name="superanimal_topviewmouse",
91
+ model_name="hrnet_w32",
92
+ detector_name="fasterrcnn_resnet50_fpn_v2",
93
+ max_individuals=1,
94
+ dest_folder=output_folder # If None, results are saved to the same directory as the images
95
+ )
96
+ ```
97
+
98
+ ### Batch Analysis of Multiple Videos
99
+
100
+ ```python
101
+ import deeplabcut
102
+ from pathlib import Path
103
+
104
+ # Multiple video paths
105
+ video_paths = [
106
+ "/path/to/video1.mp4",
107
+ "/path/to/video2.mp4",
108
+ "/path/to/video3.avi",
109
+ ]
110
+
111
+ # Specify output directory (all video results will be saved here)
112
+ output_folder = "/path/to/output"
113
+
114
+ # Batch analysis
115
+ deeplabcut.video_inference_superanimal(
116
+ videos=video_paths,
117
+ superanimal_name="superanimal_topviewmouse",
118
+ model_name="hrnet_w32",
119
+ detector_name="fasterrcnn_resnet50_fpn_v2",
120
+ video_adapt=False,
121
+ max_individuals=1,
122
+ dest_folder=output_folder
123
+ )
124
+ ```
125
+
126
+ ## Parameter Description
127
+
128
+ ### Video Analysis Parameters
129
+
130
+ | Parameter | Type | Default | Description |
131
+ | ------------------ | ----- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
132
+ | `videos` | list | Required | List of video file paths |
133
+ | `superanimal_name` | str | Required | SuperAnimal model name |
134
+ | `model_name` | str | "hrnet_w32" | Pose estimation model name |
135
+ | `detector_name` | str | "fasterrcnn_resnet50_fpn_v2" | Object detector name |
136
+ | `video_adapt` | bool | False | Whether to enable video adaptation. **Disabled by default, only enable if specifically requested by the user** |
137
+ | `max_individuals` | int | 1 | Maximum number of animals to detect. **Default is 1, only increase if specifically requested by the user** |
138
+ | `pseudo_threshold` | float | 0.1 | Pseudo-label threshold |
139
+ | `bbox_threshold` | float | 0.9 | Bounding box detection threshold |
140
+ | `detector_epochs` | int | 1 | Number of detector training epochs |
141
+ | `pose_epochs` | int | 1 | Number of pose estimation training epochs |
142
+ | `dest_folder` | str | None | Result output directory, if None saves to the same directory as the video |
143
+ | `scale_list` | range | None | Multi-scale test list, e.g., `range(200, 600, 50)`. **Disabled by default, only enable if specifically requested by the user** |
144
+
145
+ ### Image Analysis Parameters
146
+
147
+ | Parameter | Type | Default | Description |
148
+ | ------------------ | ---- | ---------------------------- | ---------------------------------------------------------------------------------------------------------- |
149
+ | `images` | list | Required | List of image file paths |
150
+ | `superanimal_name` | str | Required | SuperAnimal model name |
151
+ | `model_name` | str | "hrnet_w32" | Pose estimation model name |
152
+ | `detector_name` | str | "fasterrcnn_resnet50_fpn_v2" | Object detector name |
153
+ | `max_individuals` | int | 1 | Maximum number of animals to detect. **Default is 1, only increase if specifically requested by the user** |
154
+ | `dest_folder` | str | None | Result output directory, if None saves to the same directory as the images |
155
+
156
+ ## Output Results
157
+
158
+ ### Video Analysis Output
159
+
160
+ After analysis is complete, the following files will be generated in the specified directory (or the same directory as the video):
161
+
162
+ - **`video_nameDLC_snapshot-....h5`**: HDF5 file containing keypoint coordinate data
163
+ - **`video_nameDLC_snapshot-....csv`**: CSV file containing keypoint coordinate data (easy to view)
164
+ - **`video_nameDLC_snapshot-....pickle`**: Pickle file containing complete analysis results
165
+ - **`video_name_labeled.mp4`** (optional): Visualization video with keypoint annotations
166
+
167
+ ### Image Analysis Output
168
+
169
+ - **`image_nameDLC_snapshot-....h5`**: Keypoint coordinate data
170
+ - **`image_nameDLC_snapshot-....csv`**: Keypoint coordinate CSV
171
+ - **`image_name_labeled.png`** (optional): Visualization image with keypoint annotations
172
+
173
+ ### Result Data Structure
174
+
175
+ CSV/H5 files contain the following columns:
176
+
177
+ - `scorer`: Model name
178
+ - `individuals`: Animal individual ID (e.g., individual1, individual2...)
179
+ - `bodyparts`: Body part names (e.g., nose, tailbase, leftear, etc.)
180
+ - `coords`: Coordinate type (x, y, likelihood)
181
+
182
+ ## Complete Example Scripts
183
+
184
+ ### Complete Video Analysis Example
185
+
186
+ ```python
187
+ import os
188
+ from pathlib import Path
189
+ import deeplabcut
190
+
191
+ # ==================== User Configuration Area ====================
192
+
193
+ # Video path (Required)
194
+ video_path = "/path/to/your/video.mp4"
195
+
196
+ # Output directory (Optional, set to None to use the same directory as the video)
197
+ output_folder = None # Example: "/path/to/output"
198
+
199
+ # SuperAnimal model selection
200
+ superanimal_name = "superanimal_topviewmouse" # or "superanimal_quadruped"
201
+
202
+ # Model architecture selection
203
+ model_name = "hrnet_w32" # or "resnet_50"
204
+
205
+ # Detector selection
206
+ detector_name = "fasterrcnn_resnet50_fpn_v2" # or "fasterrcnn_mobilenet_v3_large_fpn"
207
+
208
+ # Number of animals (default is 1, only increase if specifically requested by the user)
209
+ max_individuals = 1
210
+
211
+ # Whether to use multi-scale testing (disabled by default, only enable if specifically requested by the user)
212
+ use_multiscale = False
213
+ scale_list = range(200, 600, 50) if use_multiscale else None
214
+
215
+ # ==================== Run Analysis ====================
216
+
217
+ # Verify video exists
218
+ if not os.path.exists(video_path):
219
+ raise FileNotFoundError(f"Video file does not exist: {video_path}")
220
+
221
+ # Determine output directory
222
+ if output_folder is None:
223
+ output_folder = str(Path(video_path).parent)
224
+
225
+ # Ensure output directory exists
226
+ os.makedirs(output_folder, exist_ok=True)
227
+
228
+ print(f"Starting video analysis: {video_path}")
229
+ print(f"Output directory: {output_folder}")
230
+ print(f"Using model: {superanimal_name}")
231
+
232
+ # Run analysis
233
+ kwargs = {
234
+ "videos": [video_path],
235
+ "superanimal_name": superanimal_name,
236
+ "model_name": model_name,
237
+ "detector_name": detector_name,
238
+ "video_adapt": False,
239
+ "max_individuals": max_individuals,
240
+ "pseudo_threshold": 0.1,
241
+ "bbox_threshold": 0.9,
242
+ "detector_epochs": 1,
243
+ "pose_epochs": 1,
244
+ "dest_folder": output_folder,
245
+ }
246
+
247
+ if scale_list is not None:
248
+ kwargs["scale_list"] = scale_list
249
+
250
+ deeplabcut.video_inference_superanimal(**kwargs)
251
+
252
+ print("Analysis complete!")
253
+ print(f"Results saved to: {output_folder}")
254
+ ```
255
+
256
+ ### Complete Image Analysis Example
257
+
258
+ ```python
259
+ import os
260
+ from pathlib import Path
261
+ from deeplabcut.pose_estimation_pytorch.apis import superanimal_analyze_images
262
+
263
+ # ==================== User Configuration Area ====================
264
+
265
+ # Image paths (Required) - can be single or multiple
266
+ image_paths = [
267
+ "/path/to/image1.jpg",
268
+ "/path/to/image2.png",
269
+ ]
270
+
271
+ # Output directory (Optional, set to None to use the directory of the images)
272
+ output_folder = None # Example: "/path/to/output"
273
+
274
+ # SuperAnimal model selection
275
+ superanimal_name = "superanimal_topviewmouse"
276
+
277
+ # Model architecture selection
278
+ model_name = "hrnet_w32"
279
+
280
+ # Detector selection
281
+ detector_name = "fasterrcnn_resnet50_fpn_v2"
282
+
283
+ # Number of animals (default is 1, only increase if specifically requested by the user)
284
+ max_individuals = 1
285
+
286
+ # ==================== Run Analysis ====================
287
+
288
+ # Verify all images exist
289
+ for img_path in image_paths:
290
+ if not os.path.exists(img_path):
291
+ raise FileNotFoundError(f"Image file does not exist: {img_path}")
292
+
293
+ # Determine output directory
294
+ if output_folder is None:
295
+ # Use the directory of the first image
296
+ output_folder = str(Path(image_paths[0]).parent)
297
+
298
+ # Ensure output directory exists
299
+ os.makedirs(output_folder, exist_ok=True)
300
+
301
+ print(f"Starting analysis of {len(image_paths)} images")
302
+ print(f"Output directory: {output_folder}")
303
+
304
+ # Run analysis
305
+ superanimal_analyze_images(
306
+ images=image_paths,
307
+ superanimal_name=superanimal_name,
308
+ model_name=model_name,
309
+ detector_name=detector_name,
310
+ max_individuals=max_individuals,
311
+ dest_folder=output_folder,
312
+ )
313
+
314
+ print("Analysis complete!")
315
+ print(f"Results saved to: {output_folder}")
316
+ ```
317
+
318
+ ## Notes
319
+
320
+ 1. **First Run**: When using a SuperAnimal model for the first time, pre-trained weights will be automatically downloaded, requiring an internet connection.
321
+
322
+ 2. **GPU Acceleration**: If you have a CUDA-enabled GPU, DeepLabCut will automatically use GPU acceleration for analysis.
323
+
324
+ 3. **Memory Usage**: Analyzing long videos or high-resolution images may require significant memory; it is recommended to process in batches.
325
+
326
+ 4. **Result Interpretation**:
327
+ - The `likelihood` value indicates detection confidence (0-1), closer to 1 is more reliable
328
+ - It is recommended to filter out keypoints with likelihood < 0.5
329
+
330
+ 5. **Multi-Animal Scenarios**: If there are multiple animals in the video, please adjust the `max_individuals` parameter.
331
+
332
+ 6. **Model Selection Recommendations**:
333
+ - Top-view mouse experiments → `superanimal_topviewmouse`
334
+ - Other quadruped animals → `superanimal_quadruped`
335
+ - Prioritize accuracy → `hrnet_w32`
336
+ - Prioritize speed → `resnet_50`
@@ -0,0 +1,21 @@
1
+ # EthoClaw Kinematic Parameter Generator Skill
2
+
3
+ This skill checks if .h5 files contain KinematicParameter data, and if not, generates it from the 2Dskeleton data using the generate_kinematic_parameter.py script.
4
+
5
+ Can process either a single .h5 file or multiple .h5 files in a directory.
6
+
7
+ ## Process
8
+ 1. Checks if /KinematicParameter exists in each .h5 file
9
+ 2. If missing, determines FPS using available methods (H5 metadata, video file, or default)
10
+ 3. Generates KinematicParameter data using the skeleton data
11
+ 4. Saves the results back to each .h5 file
12
+
13
+ ## Dependencies
14
+ - h5py
15
+ - numpy
16
+ - ffmpeg (for FPS detection from video)
17
+ - opencv-python (alternative for FPS detection)
18
+ - Custom pixel-to-mm calibration ratio (optional)
19
+
20
+ ## Usage
21
+ Call this skill with the path to your .h5 file or directory containing .h5 files.
@@ -0,0 +1,41 @@
1
+ # EthoClaw Kinematic Parameter Generator Skill
2
+
3
+ This skill checks if .h5 files contain KinematicParameter data, and if not, generates it from the 2Dskeleton data using the generate_kinematic_parameter.py script.
4
+
5
+ Can process either a single .h5 file or multiple .h5 files in a directory.
6
+
7
+ ## Description
8
+ This skill automates the process of generating kinematic parameters from 2D skeleton data stored in HDF5 files. It:
9
+ 1. Checks if `/KinematicParameter` exists in the .h5 file(s)
10
+ 2. If missing, determines FPS using available methods (H5 metadata, video file, or default)
11
+ 3. Generates KinematicParameter data using the skeleton data
12
+ 4. Saves the results back to the .h5 file(s)
13
+
14
+ ## Prerequisites
15
+ - h5py
16
+ - numpy
17
+ - ffmpeg (for FPS detection from video)
18
+ - opencv-python (alternative for FPS detection)
19
+
20
+ ## Usage
21
+ When you encounter .h5 files that need KinematicParameter data, activate this skill. It will automatically:
22
+ - Process a single .h5 file or all .h5 files in a directory
23
+ - Check for existing KinematicParameter data
24
+ - Check for 2Dskeleton data (required)
25
+ - Determine FPS from H5 metadata, associated video file, or use a default
26
+ - Generate the KinematicParameter dataset if it doesn't exist
27
+ - Save the results in-place to the .h5 file(s)
28
+
29
+ ## Parameters
30
+ - `--h5-path`: Path to a single .h5 file to process
31
+ - `--directory`: Path to a directory containing .h5 files to process in batch
32
+ - `--fps-default`: Default FPS to use if not found in H5 or associated video (default: 30.0)
33
+ - `--ratio-default`: Default pixel-to-mm ratio to use for calibration (default: 1.0)
34
+
35
+ ## How it Works
36
+ 1. The skill first checks if `/KinematicParameter` exists in each HDF5 file
37
+ 2. If not found, it checks for the required `/2Dskeleton` group with BodyParts and data2D datasets
38
+ 3. It attempts to find FPS information in the H5 file under `/VideoInfo/fps`
39
+ 4. If FPS isn't in the H5 file, it searches for an associated video file with the same stem
40
+ 5. It uses ffmpeg or OpenCV to extract FPS from the video file
41
+ 6. Finally, it runs the generate_kinematic_parameter.py script to create the KinematicParameter data