@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.
- 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,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
|