@brainpilot/skills 0.0.6
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/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/package.json +35 -0
- package/skills/01_Meta-Skills/contribute-skill/SKILL.md +277 -0
- package/skills/01_Meta-Skills/contribute-skills-via-pr/SKILL.md +163 -0
- package/skills/01_Meta-Skills/paper-to-skill/SKILL.md +435 -0
- package/skills/01_Meta-Skills/paper-to-skill/references/extraction-guide.md +286 -0
- package/skills/01_Meta-Skills/paper-to-skill/references/skill-template.md +250 -0
- package/skills/01_Meta-Skills/repo-to-skill/SKILL.md +289 -0
- package/skills/01_Meta-Skills/share-case/SKILL.md +253 -0
- package/skills/01_Meta-Skills/share-usage/README.md +63 -0
- package/skills/01_Meta-Skills/share-usage/SKILL.md +395 -0
- package/skills/01_Meta-Skills/verify-skill/SKILL.md +331 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-power-analysis/SKILL.md +194 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-power-analysis/references/effect-sizes.md +352 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-power-analysis/references/sample-size-guide.md +407 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-statistics/SKILL.md +361 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-statistics/references/common-analyses.md +517 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-visualization/SKILL.md +292 -0
- package/skills/02_Cross-Domain_Foundation/cogsci-visualization/references/plot-recipes.md +709 -0
- package/skills/02_Cross-Domain_Foundation/research-literacy/SKILL.md +286 -0
- package/skills/02_Cross-Domain_Foundation/research-literacy/references/common-assumptions.md +320 -0
- package/skills/02_Cross-Domain_Foundation/research-literacy/references/planning-template.md +143 -0
- package/skills/03_Cognitive_Psychology/alternative-uses-task-designer/SKILL.md +197 -0
- package/skills/03_Cognitive_Psychology/alternative-uses-task-designer/references/instruction-templates.md +60 -0
- package/skills/03_Cognitive_Psychology/cognitive-paradigm-design/SKILL.md +246 -0
- package/skills/03_Cognitive_Psychology/cognitive-paradigm-design/references/classic-paradigms.md +435 -0
- package/skills/03_Cognitive_Psychology/cognitive-paradigm-design/references/design-principles.md +256 -0
- package/skills/03_Cognitive_Psychology/creativity-self-efficacy-mediation/SKILL.md +270 -0
- package/skills/03_Cognitive_Psychology/creativity-self-efficacy-mediation/references/lavaan-templates.md +172 -0
- package/skills/03_Cognitive_Psychology/divergent-thinking-scoring/SKILL.md +238 -0
- package/skills/03_Cognitive_Psychology/divergent-thinking-scoring/references/scoring-rubric.md +143 -0
- package/skills/03_Cognitive_Psychology/drift-diffusion-model/SKILL.md +203 -0
- package/skills/03_Cognitive_Psychology/drift-diffusion-model/references/fitting-guide.md +571 -0
- package/skills/03_Cognitive_Psychology/drift-diffusion-model/references/model-variants.md +427 -0
- package/skills/03_Cognitive_Psychology/evidence-accumulation-selector/SKILL.md +310 -0
- package/skills/03_Cognitive_Psychology/evidence-accumulation-selector/references/ez-diffusion-formulas.md +137 -0
- package/skills/03_Cognitive_Psychology/signal-detection-analysis/SKILL.md +300 -0
- package/skills/03_Cognitive_Psychology/signal-detection-analysis/references/application-guide.md +278 -0
- package/skills/03_Cognitive_Psychology/signal-detection-analysis/references/sdt-formulas.md +318 -0
- package/skills/03_Cognitive_Psychology/visual-search-array-generator/SKILL.md +283 -0
- package/skills/03_Cognitive_Psychology/visual-search-array-generator/references/array-generation-parameters.yaml +111 -0
- package/skills/04_Psycholinguistics/reading-time-analysis/SKILL.md +301 -0
- package/skills/04_Psycholinguistics/reading-time-analysis/references/measure-computation-guide.md +195 -0
- package/skills/04_Psycholinguistics/self-paced-reading-designer/SKILL.md +257 -0
- package/skills/04_Psycholinguistics/self-paced-reading-designer/references/analysis-guide.md +356 -0
- package/skills/04_Psycholinguistics/self-paced-reading-designer/references/region-segmentation.md +266 -0
- package/skills/04_Psycholinguistics/sentence-stimulus-norming/SKILL.md +346 -0
- package/skills/04_Psycholinguistics/sentence-stimulus-norming/references/lexical-databases-guide.md +184 -0
- package/skills/05_EEG_ERP/eeg-paradigm-designer/SKILL.md +226 -0
- package/skills/05_EEG_ERP/eeg-paradigm-designer/references/component-paradigm-map.md +276 -0
- package/skills/05_EEG_ERP/eeg-paradigm-designer/references/timing-parameters.md +244 -0
- package/skills/05_EEG_ERP/eeg-preprocessing-pipeline-guide/SKILL.md +367 -0
- package/skills/05_EEG_ERP/eeg-preprocessing-pipeline-guide/references/parameter-lookup-tables.md +138 -0
- package/skills/05_EEG_ERP/erp-analysis/SKILL.md +185 -0
- package/skills/05_EEG_ERP/erp-analysis/references/erp-components.md +447 -0
- package/skills/05_EEG_ERP/erp-analysis/references/preprocessing-pipeline.md +277 -0
- package/skills/05_EEG_ERP/erp-analysis/references/statistical-approaches.md +351 -0
- package/skills/05_EEG_ERP/mne-python-guide/SKILL.md +174 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/decoding.md +178 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/io_formats.md +160 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/preprocessing.md +259 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/simulation.md +173 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/source_localization.md +234 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/statistics.md +196 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/time_frequency.md +165 -0
- package/skills/05_EEG_ERP/mne-python-guide/references/visualization.md +175 -0
- package/skills/06_fMRI_Neuroimaging/brain-connectivity-modeler/SKILL.md +317 -0
- package/skills/06_fMRI_Neuroimaging/brain-connectivity-modeler/references/method-implementation-guide.md +116 -0
- package/skills/06_fMRI_Neuroimaging/fmri-glm-analysis-guide/SKILL.md +296 -0
- package/skills/06_fMRI_Neuroimaging/fmri-glm-analysis-guide/references/design-matrix-guide.md +214 -0
- package/skills/06_fMRI_Neuroimaging/fmri-glm-analysis-guide/references/statistical-inference.md +288 -0
- package/skills/06_fMRI_Neuroimaging/fmri-preprocessing-pipeline-guide/SKILL.md +274 -0
- package/skills/06_fMRI_Neuroimaging/fmri-preprocessing-pipeline-guide/references/quality-control.md +336 -0
- package/skills/06_fMRI_Neuroimaging/fmri-preprocessing-pipeline-guide/references/step-by-step-pipeline.md +380 -0
- package/skills/06_fMRI_Neuroimaging/fmri-task-design-guide/SKILL.md +264 -0
- package/skills/06_fMRI_Neuroimaging/fmri-task-design-guide/references/design-optimization-examples.md +114 -0
- package/skills/06_fMRI_Neuroimaging/neural-decoding-analysis/SKILL.md +273 -0
- package/skills/06_fMRI_Neuroimaging/neural-decoding-analysis/references/decoding-methods.md +170 -0
- package/skills/06_fMRI_Neuroimaging/neural-decoding-analysis/references/rsa-guide.md +266 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/SKILL.md +123 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/database-subjects.md +179 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/dataset-types.md +208 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/freesurfer-fmriprep.md +162 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/mapping-transforms.md +181 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/mni-utils.md +207 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/surface-analysis.md +219 -0
- package/skills/06_fMRI_Neuroimaging/pycortex-guide/references/visualization.md +251 -0
- package/skills/07_Computational_Modeling/act-r-model-builder/SKILL.md +297 -0
- package/skills/07_Computational_Modeling/act-r-model-builder/references/model-patterns.md +197 -0
- package/skills/07_Computational_Modeling/act-r-model-builder/references/parameter-table.yaml +204 -0
- package/skills/07_Computational_Modeling/bayesian-cognitive-model-builder/SKILL.md +294 -0
- package/skills/07_Computational_Modeling/bayesian-cognitive-model-builder/references/diagnostics-checklist.md +351 -0
- package/skills/07_Computational_Modeling/bayesian-cognitive-model-builder/references/prior-selection-guide.md +241 -0
- package/skills/07_Computational_Modeling/parameter-recovery-checker/SKILL.md +269 -0
- package/skills/07_Computational_Modeling/parameter-recovery-checker/references/recovery-diagnostics.md +207 -0
- package/skills/08_Computational_Neuroscience/brain-connectivity-modeler/SKILL.md +317 -0
- package/skills/08_Computational_Neuroscience/brain-connectivity-modeler/references/method-implementation-guide.md +116 -0
- package/skills/08_Computational_Neuroscience/neural-decoding-analysis/SKILL.md +273 -0
- package/skills/08_Computational_Neuroscience/neural-decoding-analysis/references/decoding-methods.md +170 -0
- package/skills/08_Computational_Neuroscience/neural-decoding-analysis/references/rsa-guide.md +266 -0
- package/skills/08_Computational_Neuroscience/neural-population-analysis-guide/SKILL.md +305 -0
- package/skills/08_Computational_Neuroscience/neural-population-analysis-guide/references/data-requirements.md +60 -0
- package/skills/08_Computational_Neuroscience/neural-population-analysis-guide/references/method-comparison.md +151 -0
- package/skills/08_Computational_Neuroscience/spiking-network-model-builder/SKILL.md +376 -0
- package/skills/08_Computational_Neuroscience/spiking-network-model-builder/references/hh-parameters.md +117 -0
- package/skills/08_Computational_Neuroscience/spiking-network-model-builder/references/network-regimes.md +130 -0
- package/skills/09_Cellular_Molecular_Neuroscience/calcium-imaging-analysis-guide/SKILL.md +258 -0
- package/skills/09_Cellular_Molecular_Neuroscience/calcium-imaging-analysis-guide/references/indicator-parameters.md +242 -0
- package/skills/09_Cellular_Molecular_Neuroscience/calcium-imaging-analysis-guide/references/pipeline-details.md +211 -0
- package/skills/09_Cellular_Molecular_Neuroscience/optogenetics-protocol-designer/SKILL.md +261 -0
- package/skills/09_Cellular_Molecular_Neuroscience/optogenetics-protocol-designer/references/opsin-catalog.md +124 -0
- package/skills/09_Cellular_Molecular_Neuroscience/optogenetics-protocol-designer/references/stimulation-parameters.md +304 -0
- package/skills/10_Clinical_Neuropsychology/lesion-symptom-mapping-guide/SKILL.md +367 -0
- package/skills/10_Clinical_Neuropsychology/lesion-symptom-mapping-guide/references/disconnection-guide.md +152 -0
- package/skills/10_Clinical_Neuropsychology/lesion-symptom-mapping-guide/references/vlsm-pipeline.md +182 -0
- package/skills/10_Clinical_Neuropsychology/neuropsych-battery-selector/SKILL.md +250 -0
- package/skills/10_Clinical_Neuropsychology/neuropsych-battery-selector/references/deficit-profiles.md +302 -0
- package/skills/10_Clinical_Neuropsychology/neuropsych-battery-selector/references/test-catalog.md +304 -0
- package/skills/11_Developmental_Cognition/infant-looking-time-designer/SKILL.md +345 -0
- package/skills/11_Developmental_Cognition/infant-looking-time-designer/references/age-parameters.yaml +186 -0
- package/skills/12_Social_Cognition/tom-task-selector/SKILL.md +379 -0
- package/skills/12_Social_Cognition/tom-task-selector/references/task-database.md +317 -0
- package/skills/13_Visualization/nature-figure/README.md +442 -0
- package/skills/13_Visualization/nature-figure/SKILL.md +60 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-01-bar-charts.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-02-line-trends.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-03-heatmaps.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-04-scatter-bubble.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-05-radar-polar.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-06-distributions.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-07-forest-interval.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-08-area-stacked.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-09-image-plates.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/chart-atlas/atlas-10-network-matrix.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/Dispersion_motivation.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/Dispersion_observation.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/Dispersion_observation_distillation.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/ImmunoStruct_contrastive.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/ImmunoStruct_results_CEDAR.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/ImmunoStruct_results_IEDB.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/ImmunoStruct_schematic.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/assets/RNAGenScape_schematic.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_CellSpliceNet/figures/ablation.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_CellSpliceNet/figures/comparison.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_CellSpliceNet/plot_ablation.py +86 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_CellSpliceNet/plot_comparison.py +109 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/diffusion_swiss_roll.py +97 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/diffusion_swiss_roll.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/fig2_comparison_GeneRegulatory.pdf +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/fig2_comparison_GeneRegulatory.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/fig2_comparison_Trajectory.pdf +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/fig2_comparison_Trajectory.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/figX_comparison_Ablation.pdf +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/figures/figX_comparison_Ablation.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/plot_comparison_Ablation.py +64 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/plot_comparison_GeneRegulatory.py +74 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Cflows/plot_comparison_Trajectory.py +74 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Dispersion/figures/idea.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Dispersion/figures/illustration.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Dispersion/plot_idea.py +76 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_Dispersion/plot_illustration.py +404 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_FPGM/figures/freq_prior.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_FPGM/plot_freq_prior.py +146 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/figures/bars_ablation_Cancer.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/figures/bars_ablation_IEDB.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/figures/bars_comparison_Cancer.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/figures/bars_comparison_IEDB.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/plot_bars.py +216 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ImmunoStruct/raw_data.py +125 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/figures/manifold.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/figures/manifold_holes.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/figures/results_comparison_optimization.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/figures/results_comparison_speed.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/figures/results_sweep.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/plot_comparison.py +228 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/plot_hole_manifold.py +82 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/plot_manifold.py +61 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_RNAGenScape/plot_sweep.py +77 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_VIGIL/figures/comparison_posttraining.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_VIGIL/figures/comparison_radar.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_VIGIL/plot_comparison_radar.py +173 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_VIGIL/plot_posttraining.py +82 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/figures/brute_force.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/figures/correctness_by_category.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/figures/correctness_by_subcategory.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/figures/rewriting.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/figures/selfcorrection_math.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/plot_brute_force.py +248 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/plot_correctness_by_category.py +132 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/plot_correctness_by_subcategory.py +131 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/plot_rewriting.py +105 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_brainteaser/plot_selfcorrection_math.py +99 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ophthal_review/figures/composition_heatmap.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ophthal_review/figures/trend_by_month.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ophthal_review/plot_composition.py +81 -0
- package/skills/13_Visualization/nature-figure/assets/figures4papers/figure_ophthal_review/plot_trend.py +125 -0
- package/skills/13_Visualization/nature-figure/assets/gallery/fig1-material-mechanism-rich.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/gallery/fig2-spatial-imaging-rich.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/gallery/fig3-in-vivo-efficacy-rich.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/gallery/fig4-single-cell-systems-rich.png +0 -0
- package/skills/13_Visualization/nature-figure/assets/gallery/fig5-validation-perturbation-rich.png +0 -0
- package/skills/13_Visualization/nature-figure/evals/evals.json +37 -0
- package/skills/13_Visualization/nature-figure/manifest.yaml +57 -0
- package/skills/13_Visualization/nature-figure/references/api.md +428 -0
- package/skills/13_Visualization/nature-figure/references/backend-selection.md +100 -0
- package/skills/13_Visualization/nature-figure/references/chart-types.md +281 -0
- package/skills/13_Visualization/nature-figure/references/common-patterns.md +350 -0
- package/skills/13_Visualization/nature-figure/references/demos.md +65 -0
- package/skills/13_Visualization/nature-figure/references/design-theory.md +436 -0
- package/skills/13_Visualization/nature-figure/references/figure-contract.md +93 -0
- package/skills/13_Visualization/nature-figure/references/nature-2026-observations.md +112 -0
- package/skills/13_Visualization/nature-figure/references/qa-contract.md +119 -0
- package/skills/13_Visualization/nature-figure/references/r-template-index.md +66 -0
- package/skills/13_Visualization/nature-figure/references/r-workflow.md +161 -0
- package/skills/13_Visualization/nature-figure/references/tutorials.md +251 -0
- package/skills/13_Visualization/nature-figure/static/core/contract.md +29 -0
- package/skills/13_Visualization/nature-figure/static/core/stance.md +37 -0
- package/skills/13_Visualization/nature-figure/static/fragments/backend/python.md +37 -0
- package/skills/13_Visualization/nature-figure/static/fragments/backend/r.md +44 -0
- package/skills/14_Writing/markdown-report-writing/SKILL.md +306 -0
- package/skills/14_Writing/markdown-report-writing/references/compatibility-matrix.md +72 -0
- package/skills/14_Writing/markdown-report-writing/references/templates.md +299 -0
- package/skills/15_Others/neuroimaging-power-guide/SKILL.md +324 -0
- package/skills/15_Others/neuroimaging-power-guide/references/effect-size-lookup-tables.md +102 -0
- package/skills/15_Others/neuroimaging-sample-size-calculator/SKILL.md +330 -0
- package/skills/15_Others/neuroimaging-sample-size-calculator/references/worked-examples.md +220 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# RSA Analysis Guide: Step-by-Step Workflow
|
|
2
|
+
|
|
3
|
+
This reference document supplements `SKILL.md` with a complete step-by-step workflow for representational similarity analysis (RSA), including RDM construction, model specification, noise ceiling computation, and visualization.
|
|
4
|
+
|
|
5
|
+
## Step-by-Step RSA Workflow
|
|
6
|
+
|
|
7
|
+
### Step 1: Estimate Condition-Specific Activity Patterns
|
|
8
|
+
|
|
9
|
+
**For fMRI:**
|
|
10
|
+
1. Run a general linear model (GLM) with one regressor per condition (beta-series or least-squares-separate approach)
|
|
11
|
+
2. Each condition yields a beta-weight map across voxels in an ROI
|
|
12
|
+
3. Use **least-squares-separate (LSS)** for single-trial estimates when computing trial-wise RDMs (Mumford et al., 2012)
|
|
13
|
+
4. Use **least-squares-all (LSA)** when you have a small number of conditions with many trials each
|
|
14
|
+
|
|
15
|
+
> **Domain judgment**: For single-trial estimation, LSS produces less biased estimates than LSA when trials are closely spaced in time, because including all regressors simultaneously leads to collinearity in the design matrix (Mumford et al., 2012).
|
|
16
|
+
|
|
17
|
+
**For EEG/MEG:**
|
|
18
|
+
1. Epoch data around stimulus onset; average trials within each condition
|
|
19
|
+
2. Use the spatial pattern at a specific time point, or average over a time window
|
|
20
|
+
3. For time-resolved RSA: compute RDM at each time point separately
|
|
21
|
+
|
|
22
|
+
### Step 2: Extract Patterns for the ROI or Brain Region
|
|
23
|
+
|
|
24
|
+
- **ROI approach**: Extract voxel/channel values for each condition from a predefined region
|
|
25
|
+
- **Searchlight RSA**: Compute RDMs in a local sphere around each voxel (same radius considerations as decoding searchlight: **3-4 voxels** for fMRI; Kriegeskorte et al., 2006)
|
|
26
|
+
- **Whole-brain RSA**: Use parcellation (e.g., Glasser atlas with 360 parcels) and compute one RDM per parcel
|
|
27
|
+
|
|
28
|
+
### Step 3: Construct the Neural RDM
|
|
29
|
+
|
|
30
|
+
#### Choosing a Distance Metric
|
|
31
|
+
|
|
32
|
+
| Metric | Formula | Bias | Scale | Best For |
|
|
33
|
+
|---|---|---|---|---|
|
|
34
|
+
| **Correlation distance** | 1 - Pearson(pattern_a, pattern_b) | Positively biased by noise | 0 to 2 | Exploratory RSA; comparing pattern shape |
|
|
35
|
+
| **Euclidean distance** | sqrt(sum((a - b)^2)) | Positively biased by noise | 0 to inf | When amplitude matters |
|
|
36
|
+
| **Crossnobis (cross-validated Mahalanobis)** | Multiply pattern differences across independent data partitions, with multivariate noise normalization | **Unbiased** (expected value = 0 under null) | -inf to inf | **Inferential statistics; model comparison** |
|
|
37
|
+
|
|
38
|
+
(Walther et al., 2016; Kriegeskorte & Diedrichsen, 2019)
|
|
39
|
+
|
|
40
|
+
#### Computing the Crossnobis Distance
|
|
41
|
+
|
|
42
|
+
The crossnobis estimator requires data from multiple independent partitions (e.g., fMRI runs):
|
|
43
|
+
|
|
44
|
+
1. Estimate condition-specific patterns separately for each run
|
|
45
|
+
2. Compute the residual covariance matrix from the GLM residuals (for noise normalization)
|
|
46
|
+
3. For each pair of conditions (i, j):
|
|
47
|
+
- Compute the pattern difference (beta_i - beta_j) in each run
|
|
48
|
+
- Multiply the pattern differences from different runs (cross-validated: never multiply a run's data with itself)
|
|
49
|
+
- Apply multivariate noise normalization (whiten using the residual covariance)
|
|
50
|
+
4. Average across all cross-validated run pairs
|
|
51
|
+
|
|
52
|
+
> **Domain judgment**: The cross-validation step ensures the estimator is unbiased. Without it, noise in the patterns inflates all pairwise distances by a positive amount proportional to the noise variance divided by the number of voxels. This bias makes it impossible to test whether two conditions are truly distinguishable (Walther et al., 2016).
|
|
53
|
+
|
|
54
|
+
#### Noise Normalization (Multivariate Whitening)
|
|
55
|
+
|
|
56
|
+
- Estimate the noise covariance matrix Sigma from GLM residuals
|
|
57
|
+
- Apply Sigma^(-1/2) to the pattern differences before computing distances
|
|
58
|
+
- This weights informative voxels (low noise correlation) more heavily than noisy or correlated voxels
|
|
59
|
+
- Improves reliability of RDMs substantially, especially for large ROIs (Walther et al., 2016)
|
|
60
|
+
|
|
61
|
+
### Step 4: Construct Model RDMs
|
|
62
|
+
|
|
63
|
+
Model RDMs encode your theoretical predictions about representational structure.
|
|
64
|
+
|
|
65
|
+
#### Common Model RDM Types
|
|
66
|
+
|
|
67
|
+
| Model Type | Construction | Example |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| **Categorical** | Binary: 0 for same category, 1 for different category | "Face vs. object" model: 0 within faces, 0 within objects, 1 between |
|
|
70
|
+
| **Feature-based** | Continuous distances from computational features | DNN layer activations; Gabor filter responses; semantic embedding distances |
|
|
71
|
+
| **Behavioral** | Distances derived from human similarity judgments | Multi-arrangement task (Kriegeskorte & Mur, 2012); pairwise similarity ratings |
|
|
72
|
+
| **Hierarchical** | Graded distances reflecting taxonomic depth | 0 within species, 0.5 within class, 1 across kingdoms |
|
|
73
|
+
| **Computational model** | Distances from the internal representations of a model | CNN layer RDMs; RNN hidden state RDMs; reinforcement learning value RDMs |
|
|
74
|
+
|
|
75
|
+
#### Constructing Model RDMs from Theoretical Predictions
|
|
76
|
+
|
|
77
|
+
1. **Define your stimulus set**: List all conditions (N conditions)
|
|
78
|
+
2. **For each pair of conditions**: Assign a predicted dissimilarity value
|
|
79
|
+
3. **Organize into an N x N symmetric matrix** with zeros on the diagonal
|
|
80
|
+
4. **Vectorize the lower triangle**: Extract the N*(N-1)/2 unique pairwise distances
|
|
81
|
+
|
|
82
|
+
> **Domain judgment**: Model RDMs should be constructed BEFORE looking at neural data. Constructing models post-hoc to match observed neural RDMs is circular (Kriegeskorte et al., 2009). Pre-register your model RDMs when possible.
|
|
83
|
+
|
|
84
|
+
### Step 5: Compare Neural RDMs to Model RDMs
|
|
85
|
+
|
|
86
|
+
#### Comparison Methods
|
|
87
|
+
|
|
88
|
+
| Method | Use When | Formula | Source |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| **Spearman rank correlation** | Default; robust to outliers and nonlinear monotonic relationships | rho(vectorized_brain_RDM, vectorized_model_RDM) | Nili et al., 2014 |
|
|
91
|
+
| **Pearson correlation** | When the linear relationship between model and brain distances is theoretically motivated | r(vectorized_brain_RDM, vectorized_model_RDM) | Kriegeskorte et al., 2008 |
|
|
92
|
+
| **Kendall tau-a** | For RDMs with many tied values (e.g., binary categorical models) | tau_a(vectorized_brain_RDM, vectorized_model_RDM) | Nili et al., 2014 |
|
|
93
|
+
| **Partial correlation** | When controlling for a confound model (e.g., low-level visual similarity) | partial_rho(brain, model_A \| model_B) | Kriegeskorte & Diedrichsen, 2019 |
|
|
94
|
+
| **Weighted regression** | Fitting multiple models simultaneously; estimating relative contributions | beta = (X'X)^{-1} X'y on vectorized RDMs | Kriegeskorte & Diedrichsen, 2019 |
|
|
95
|
+
|
|
96
|
+
#### Choosing Between Spearman and Pearson
|
|
97
|
+
|
|
98
|
+
- **Spearman** (default): Does not assume linearity between model and brain distances; only assumes a monotonic relationship. More robust to the arbitrary scaling of model predictions (Nili et al., 2014)
|
|
99
|
+
- **Pearson**: Appropriate when the model makes quantitative predictions about the magnitude of distances, not just their rank order
|
|
100
|
+
|
|
101
|
+
### Step 6: Statistical Inference
|
|
102
|
+
|
|
103
|
+
#### Permutation Test for Individual Model Significance
|
|
104
|
+
|
|
105
|
+
1. Permute condition labels **of the neural data** (not the model) to generate null RDMs
|
|
106
|
+
2. Recompute the correlation between each permuted neural RDM and the model RDM
|
|
107
|
+
3. Repeat **10,000 times** (Nili et al., 2014)
|
|
108
|
+
4. p-value = proportion of null correlations >= observed correlation
|
|
109
|
+
|
|
110
|
+
> **Domain judgment**: You must permute the condition labels (rows and columns of the RDM simultaneously), NOT individual entries of the RDM. Permuting entries destroys the distance-matrix structure and produces an invalid null distribution (Nili et al., 2014).
|
|
111
|
+
|
|
112
|
+
#### Noise Ceiling Computation
|
|
113
|
+
|
|
114
|
+
The noise ceiling bounds the best possible model fit given between-subject variability.
|
|
115
|
+
|
|
116
|
+
**Upper bound:**
|
|
117
|
+
1. For each subject, compute the correlation between that subject's RDM and the group-average RDM (including that subject)
|
|
118
|
+
2. Average across subjects
|
|
119
|
+
|
|
120
|
+
**Lower bound (preferred -- cross-validated):**
|
|
121
|
+
1. For each subject, compute the correlation between that subject's RDM and the group-average RDM **excluding** that subject
|
|
122
|
+
2. Average across subjects
|
|
123
|
+
|
|
124
|
+
(Nili et al., 2014)
|
|
125
|
+
|
|
126
|
+
**Interpretation:**
|
|
127
|
+
- A model whose fit falls within the noise ceiling explains as much representational variance as is possible given the noise in the data
|
|
128
|
+
- A model below the lower bound leaves systematic, explainable variance unaccounted for
|
|
129
|
+
- The gap between upper and lower bound reflects the degree of between-subject variability
|
|
130
|
+
|
|
131
|
+
#### Comparing Two Models
|
|
132
|
+
|
|
133
|
+
1. For each subject, compute the correlation of the brain RDM with Model A and with Model B
|
|
134
|
+
2. Compute the difference (corr_A - corr_B) for each subject
|
|
135
|
+
3. Test the group-level difference with a paired t-test or Wilcoxon signed-rank test
|
|
136
|
+
4. Alternatively, use a bootstrap test: resample subjects and test whether the difference in model fit is consistently positive or negative (Nili et al., 2014)
|
|
137
|
+
|
|
138
|
+
### Step 7: Visualize Results
|
|
139
|
+
|
|
140
|
+
#### RDM Visualization
|
|
141
|
+
|
|
142
|
+
- Display as a **color-coded matrix** (conditions x conditions) with an appropriate colormap (diverging for crossnobis, sequential for correlation distance)
|
|
143
|
+
- Order conditions meaningfully: group by category, sort by a relevant feature dimension
|
|
144
|
+
- Always include a **colorbar** with the distance metric labeled
|
|
145
|
+
- For crossnobis RDMs: use a diverging colormap centered at zero (e.g., blue-white-red) to highlight that negative values are meaningful
|
|
146
|
+
|
|
147
|
+
#### Multidimensional Scaling (MDS)
|
|
148
|
+
|
|
149
|
+
- Apply classical (metric) MDS to the RDM to project conditions into a 2D or 3D space
|
|
150
|
+
- Useful for visualizing cluster structure and gradients in the representation
|
|
151
|
+
- Report the stress value or proportion of variance explained by the MDS solution
|
|
152
|
+
- **Caution**: MDS is a visualization aid, not a statistical test. Do not draw inferential conclusions from MDS plots alone (Kriegeskorte et al., 2008)
|
|
153
|
+
|
|
154
|
+
#### Model Comparison Bar Plots
|
|
155
|
+
|
|
156
|
+
- Plot the correlation between each model RDM and the brain RDM (one bar per model)
|
|
157
|
+
- Include error bars (SEM across subjects or bootstrap confidence intervals)
|
|
158
|
+
- Overlay the noise ceiling as a shaded band
|
|
159
|
+
- Mark significant models and significant model differences
|
|
160
|
+
|
|
161
|
+
## Category-Level vs. Exemplar-Level RSA
|
|
162
|
+
|
|
163
|
+
### Category-Level Analysis
|
|
164
|
+
|
|
165
|
+
- Conditions represent categories (e.g., faces, houses, tools, animals)
|
|
166
|
+
- Typically **4-20 categories** with multiple exemplars per category
|
|
167
|
+
- RDM captures between-category representational distances
|
|
168
|
+
- Appropriate for: testing categorical organization (e.g., animate vs. inanimate distinction)
|
|
169
|
+
- **Limitation**: Cannot distinguish whether a region encodes the category boundary or continuous features that correlate with category membership
|
|
170
|
+
|
|
171
|
+
### Exemplar-Level Analysis
|
|
172
|
+
|
|
173
|
+
- Each condition is a unique stimulus (e.g., 96 individual object images)
|
|
174
|
+
- RDM captures fine-grained representational geometry
|
|
175
|
+
- Appropriate for: comparing neural representations to computational model layer representations (e.g., DNN layers)
|
|
176
|
+
- **Requirement**: Many more conditions (typically **48-96+**); each shown multiple times
|
|
177
|
+
- **Challenge**: Single-trial beta estimates are noisier; crossnobis estimator is essential to avoid bias (Walther et al., 2016)
|
|
178
|
+
|
|
179
|
+
> **Domain judgment**: Category-level RSA with few categories (e.g., 4) has very few unique distances in the RDM (only 6 for 4 categories), making model comparisons statistically weak. Exemplar-level designs with many conditions provide much more statistical power for RSA because the number of unique distances grows as N*(N-1)/2 (Kriegeskorte et al., 2008).
|
|
180
|
+
|
|
181
|
+
## Multi-Arrangement for Behavioral RDMs
|
|
182
|
+
|
|
183
|
+
### The Method
|
|
184
|
+
|
|
185
|
+
The multi-arrangement task (Kriegeskorte & Mur, 2012) efficiently measures perceived similarity among stimuli:
|
|
186
|
+
|
|
187
|
+
1. Participants view all stimuli on a computer screen and arrange them by perceived similarity (drag-and-drop)
|
|
188
|
+
2. Similar items are placed close together; dissimilar items far apart
|
|
189
|
+
3. The procedure adaptively selects subsets of stimuli for additional arrangements to improve estimation
|
|
190
|
+
4. Pairwise distances between stimulus positions are extracted and combined across arrangements
|
|
191
|
+
|
|
192
|
+
### Practical Parameters
|
|
193
|
+
|
|
194
|
+
- **Number of stimuli**: Works well with **12-96** stimuli (fewer than 12: too few distances; more than 96: too many items to arrange simultaneously)
|
|
195
|
+
- **Number of arrangements**: Typically **10-30** per participant; the algorithm adaptively selects informative subsets
|
|
196
|
+
- **Subset size per arrangement**: **6-12 stimuli** per arrangement screen (participant fatigue increases with larger subsets)
|
|
197
|
+
- **Duration**: Approximately **20-60 minutes** depending on stimulus set size
|
|
198
|
+
|
|
199
|
+
### When to Use Behavioral RDMs
|
|
200
|
+
|
|
201
|
+
- To test whether neural representations predict perceived similarity
|
|
202
|
+
- To bridge neural and behavioral levels of description (Kriegeskorte et al., 2008)
|
|
203
|
+
- As a model RDM alongside computational models to test which better explains neural data
|
|
204
|
+
|
|
205
|
+
## Using the RSA Toolbox (Python: rsatoolbox)
|
|
206
|
+
|
|
207
|
+
### Basic Workflow
|
|
208
|
+
|
|
209
|
+
```python
|
|
210
|
+
import rsatoolbox
|
|
211
|
+
import numpy as np
|
|
212
|
+
|
|
213
|
+
# 1. Create dataset objects (one per subject/session)
|
|
214
|
+
# data: n_conditions x n_channels/voxels
|
|
215
|
+
# descriptors: condition labels
|
|
216
|
+
dataset = rsatoolbox.data.Dataset(
|
|
217
|
+
measurements=beta_patterns, # conditions x voxels
|
|
218
|
+
obs_descriptors={'stimulus': condition_labels}
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
# 2. Compute RDM
|
|
222
|
+
rdm = rsatoolbox.rdm.calc_rdm(
|
|
223
|
+
dataset,
|
|
224
|
+
method='crossnobis', # preferred for inference
|
|
225
|
+
descriptor='stimulus',
|
|
226
|
+
noise=noise_covariance # from GLM residuals
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
# 3. Define model RDMs
|
|
230
|
+
model_rdm = rsatoolbox.rdm.RDMs(
|
|
231
|
+
dissimilarities=model_distances, # vectorized lower triangle
|
|
232
|
+
rdm_descriptors={'name': 'my_model'}
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
# 4. Compare
|
|
236
|
+
result = rsatoolbox.rdm.compare(
|
|
237
|
+
rdm, model_rdm,
|
|
238
|
+
method='spearman' # or 'corr', 'kendall'
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
# 5. Noise ceiling
|
|
242
|
+
ceiling = rsatoolbox.inference.eval_fixed(
|
|
243
|
+
model_rdm, subject_rdms,
|
|
244
|
+
method='spearman'
|
|
245
|
+
)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Key Function Parameters
|
|
249
|
+
|
|
250
|
+
| Function | Key Parameter | Recommended Value | Rationale |
|
|
251
|
+
|---|---|---|---|
|
|
252
|
+
| `calc_rdm` | `method` | `'crossnobis'` | Unbiased estimator (Walther et al., 2016) |
|
|
253
|
+
| `calc_rdm` | `noise` | GLM residual covariance | Multivariate noise normalization improves reliability |
|
|
254
|
+
| `compare` | `method` | `'spearman'` | Robust to nonlinear monotonic transforms (Nili et al., 2014) |
|
|
255
|
+
| `eval_fixed` | `method` | `'spearman'` | Consistent with comparison method |
|
|
256
|
+
|
|
257
|
+
## References
|
|
258
|
+
|
|
259
|
+
- Kriegeskorte, N., Goebel, R., & Bandettini, P. (2006). Information-based functional brain mapping. *PNAS*, 103(10), 3863-3868.
|
|
260
|
+
- Kriegeskorte, N., Mur, M., & Bandettini, P. (2008). Representational similarity analysis. *Front. Syst. Neurosci.*, 2, 4.
|
|
261
|
+
- Kriegeskorte, N., et al. (2009). Circular analysis in systems neuroscience. *Nat. Neurosci.*, 12(5), 535-540.
|
|
262
|
+
- Kriegeskorte, N., & Mur, M. (2012). Inverse MDS: Inferring dissimilarity structure from multiple item arrangements. *Front. Psychol.*, 3, 245.
|
|
263
|
+
- Kriegeskorte, N., & Diedrichsen, J. (2019). Peeling the onion of brain representations. *Annu. Rev. Neurosci.*, 42, 407-432.
|
|
264
|
+
- Mumford, J. A., Turner, B. O., Ashby, F. G., & Poldrack, R. A. (2012). Deconvolving BOLD activation in event-related designs for multivoxel pattern classification analyses. *NeuroImage*, 59(3), 2636-2643.
|
|
265
|
+
- Nili, H., et al. (2014). A toolbox for representational similarity analysis. *PLoS Comput. Biol.*, 10(4), e1003553.
|
|
266
|
+
- Walther, A., et al. (2016). Reliability of dissimilarity measures for multi-voxel pattern analysis. *NeuroImage*, 137, 188-200.
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "neural-population-analysis-guide"
|
|
3
|
+
description: "Guides dimensionality reduction and latent-variable analysis of neural populations (PCA, GPFA, dPCA)"
|
|
4
|
+
domain: "computational-neuroscience"
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
authors:
|
|
7
|
+
- "Claude Code Agent"
|
|
8
|
+
papers:
|
|
9
|
+
- "Cunningham & Yu, 2014"
|
|
10
|
+
- "Yu et al., 2009"
|
|
11
|
+
- "Kobak et al., 2016"
|
|
12
|
+
- "Churchland et al., 2012"
|
|
13
|
+
- "King & Dehaene, 2014"
|
|
14
|
+
- "Humphries, 2021"
|
|
15
|
+
dependencies:
|
|
16
|
+
required:
|
|
17
|
+
- research-literacy
|
|
18
|
+
recommended:
|
|
19
|
+
- neural-decoding-analysis
|
|
20
|
+
review_status: "ai-generated"
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Neural Population Analysis Guide
|
|
24
|
+
|
|
25
|
+
## Purpose
|
|
26
|
+
|
|
27
|
+
This skill encodes expert methodological knowledge for dimensionality reduction and latent-variable analysis of neural population recordings. A competent programmer without computational neuroscience training will get this wrong because:
|
|
28
|
+
|
|
29
|
+
- **Not all dimensionality reduction is the same.** PCA, Factor Analysis, GPFA, and dPCA answer fundamentally different questions about neural data. PCA finds axes of maximum variance; dPCA demixes variance by task parameter; GPFA extracts smooth single-trial trajectories. Choosing the wrong method answers the wrong question (Cunningham & Yu, 2014).
|
|
30
|
+
- **Standard data science preprocessing destroys neural signal.** Naive z-scoring or standard scaling of neural firing rates removes important information about rate differences across neurons. Soft normalization is required (Churchland et al., 2012).
|
|
31
|
+
- **Visualization methods are not analysis methods.** t-SNE and UMAP produce visually compelling low-dimensional embeddings but their distances are not interpretable, axes are not meaningful, and results are sensitive to hyperparameters. They must never be used for quantitative inference (Cunningham & Yu, 2014).
|
|
32
|
+
- **Dimensionality is not determined by "percent variance explained."** There is no universal threshold (e.g., 90%) for choosing the number of PCs. Parallel analysis or cross-validation is required to determine true dimensionality (Humphries, 2021).
|
|
33
|
+
|
|
34
|
+
## When to Use This Skill
|
|
35
|
+
|
|
36
|
+
- Analyzing simultaneously recorded neural populations (multi-electrode arrays, Neuropixels, calcium imaging)
|
|
37
|
+
- Choosing between PCA, Factor Analysis, GPFA, dPCA, jPCA, or nonlinear methods
|
|
38
|
+
- Extracting low-dimensional neural trajectories from spike trains
|
|
39
|
+
- Demixing neural variance by task parameters (stimulus, decision, time)
|
|
40
|
+
- Setting up population decoding analyses with temporal generalization
|
|
41
|
+
- Determining data requirements (neuron counts, trial counts) for population analyses
|
|
42
|
+
|
|
43
|
+
Do NOT use this skill for:
|
|
44
|
+
|
|
45
|
+
- Single-neuron tuning curve analysis (this is a different analytical framework)
|
|
46
|
+
- Spike sorting or preprocessing of raw electrophysiology (upstream of this skill)
|
|
47
|
+
- fMRI multivariate pattern analysis (see `neural-decoding-analysis` skill instead)
|
|
48
|
+
|
|
49
|
+
## Research Planning Protocol
|
|
50
|
+
|
|
51
|
+
Before executing the domain-specific steps below, you MUST:
|
|
52
|
+
|
|
53
|
+
1. **State the research question** -- What specific question is this analysis/paradigm addressing?
|
|
54
|
+
2. **Justify the method choice** -- Why is this approach appropriate? What alternatives were considered?
|
|
55
|
+
3. **Declare expected outcomes** -- What results would support vs. refute the hypothesis?
|
|
56
|
+
4. **Note assumptions and limitations** -- What does this method assume? Where could it mislead?
|
|
57
|
+
5. **Present the plan to the user and WAIT for confirmation** before proceeding.
|
|
58
|
+
|
|
59
|
+
For detailed methodology guidance, see the `research-literacy` skill.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## ⚠️ Verification Notice
|
|
65
|
+
|
|
66
|
+
This skill was generated by AI from academic literature. All parameters, thresholds, and citations require independent verification before use in research. If you find errors, please [open an issue](https://github.com/HaoxuanLiTHUAI/awesome_cognitive_and_neuroscience_skills/issues).
|
|
67
|
+
|
|
68
|
+
## When to Use Population Analysis vs. Single-Neuron Analysis
|
|
69
|
+
|
|
70
|
+
Single-neuron analysis characterizes individual tuning curves and response properties. Population analysis characterizes the collective, low-dimensional structure of neural activity. Use population analysis when (Cunningham & Yu, 2014):
|
|
71
|
+
|
|
72
|
+
- Neural responses are distributed across many neurons with no single neuron carrying the full signal
|
|
73
|
+
- You want to characterize the *geometry* of neural representations (e.g., are stimulus and decision signals orthogonal?)
|
|
74
|
+
- You want to track *trajectories* of population activity over time during behavior
|
|
75
|
+
- Single-neuron tuning is mixed or complex, making classical tuning curve approaches uninformative
|
|
76
|
+
- You have simultaneous recordings from tens to hundreds of neurons
|
|
77
|
+
|
|
78
|
+
> **Domain judgment**: Population analysis does NOT require that individual neurons be untuned. Even populations of well-tuned neurons have emergent low-dimensional structure that single-neuron analyses miss. The question is whether the research question is about individual neuron properties or collective population geometry (Cunningham & Yu, 2014).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Method Selection Decision Tree
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
What is your research question?
|
|
86
|
+
|
|
|
87
|
+
+-- "What are the dominant patterns of co-variation across the population?"
|
|
88
|
+
| --> PCA (linear, static)
|
|
89
|
+
| Simplest method; start here
|
|
90
|
+
| Output: principal components, variance explained, projections
|
|
91
|
+
|
|
|
92
|
+
+-- "What are the smooth latent trajectories on single trials?"
|
|
93
|
+
| --> GPFA (Yu et al., 2009) or Factor Analysis
|
|
94
|
+
| For temporal structure; extracts trial-by-trial dynamics
|
|
95
|
+
| Output: latent trajectories per trial, dimensionality estimate
|
|
96
|
+
|
|
|
97
|
+
+-- "How is variance distributed across task parameters?"
|
|
98
|
+
| --> dPCA (Kobak et al., 2016)
|
|
99
|
+
| Demixes stimulus, decision, time, and interaction variance
|
|
100
|
+
| Output: demixed components, marginalization pie chart
|
|
101
|
+
|
|
|
102
|
+
+-- "Are there rotational dynamics in the population?"
|
|
103
|
+
| --> jPCA (Churchland et al., 2012)
|
|
104
|
+
| Finds rotational structure in neural trajectories
|
|
105
|
+
| Output: rotational plane projections, R^2 of rotational fit
|
|
106
|
+
|
|
|
107
|
+
+-- "I want to visualize population structure in 2-3D"
|
|
108
|
+
--> t-SNE or UMAP -- VISUALIZATION ONLY
|
|
109
|
+
NOT for quantitative analysis or distance comparisons
|
|
110
|
+
Output: 2D/3D embedding (qualitative only)
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## PCA for Neural Data
|
|
116
|
+
|
|
117
|
+
### Preprocessing Before PCA
|
|
118
|
+
|
|
119
|
+
1. **Trial averaging vs. single-trial**: Trial-averaged PCA smooths out single-trial variability and is appropriate when the question is about condition-mean trajectories. Single-trial PCA preserves trial-to-trial variability but requires more data (Cunningham & Yu, 2014).
|
|
120
|
+
|
|
121
|
+
2. **Soft normalization** (CRITICAL): Do NOT use standard z-scoring (subtract mean, divide by SD). This eliminates firing rate differences that carry information. Instead, use soft normalization (Churchland et al., 2012):
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
normalized_rate = (rate - mean) / (range + constant)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
where `constant` is typically **5 spikes/s** (Churchland et al., 2012). This prevents low-firing neurons from dominating due to noise amplification while preserving rate differences.
|
|
128
|
+
|
|
129
|
+
3. **Square-root transform**: An alternative normalization for Poisson-like spike counts: `sqrt(mean firing rate + constant)` (Churchland et al., 2012). Stabilizes variance across neurons with different firing rates.
|
|
130
|
+
|
|
131
|
+
4. **Mean subtraction**: Subtract the condition-averaged PSTH across all conditions from each condition. This removes the shared temporal modulation and focuses PCA on condition-discriminating variance (Kobak et al., 2016).
|
|
132
|
+
|
|
133
|
+
### Determining Dimensionality
|
|
134
|
+
|
|
135
|
+
| Method | Description | When to Use | Source |
|
|
136
|
+
|---|---|---|---|
|
|
137
|
+
| **Parallel analysis** | Compare eigenvalues to those from shuffled data | **Recommended default**; principled threshold | Humphries, 2021 |
|
|
138
|
+
| **Cross-validated PCA** | Hold out neurons or time bins; test reconstruction | Avoids overfitting; gold standard | Cunningham & Yu, 2014 |
|
|
139
|
+
| **Scree plot elbow** | Subjective visual inspection | Quick but unreliable; avoid for publication | Expert consensus |
|
|
140
|
+
| **Percent variance threshold** | e.g., "keep PCs explaining 90%" | **NOT recommended**; arbitrary threshold | Humphries, 2021 |
|
|
141
|
+
|
|
142
|
+
> **Domain judgment**: There is no fixed variance-explained threshold for choosing the number of PCs. The "90% rule" from data science is meaningless for neural data because it confounds signal dimensionality with noise. Use parallel analysis (compare eigenvalues to those expected from random data with matched statistics) or cross-validation (Humphries, 2021).
|
|
143
|
+
|
|
144
|
+
### Cross-Validated PCA
|
|
145
|
+
|
|
146
|
+
To avoid overfitting dimensionality estimates:
|
|
147
|
+
|
|
148
|
+
1. Split neurons into two halves (or use leave-one-neuron-out)
|
|
149
|
+
2. Fit PCA on one half
|
|
150
|
+
3. Project the other half onto the PCs
|
|
151
|
+
4. Measure reconstruction error as a function of the number of PCs
|
|
152
|
+
5. Choose dimensionality where held-out reconstruction stops improving
|
|
153
|
+
|
|
154
|
+
This is especially critical with small neuron counts (<50 neurons) where noise dimensions can mimic signal dimensions (Cunningham & Yu, 2014).
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## GPFA -- Gaussian Process Factor Analysis
|
|
159
|
+
|
|
160
|
+
GPFA extracts smooth, low-dimensional latent trajectories from single-trial spike trains by combining factor analysis with Gaussian process temporal smoothing (Yu et al., 2009).
|
|
161
|
+
|
|
162
|
+
### When to Use GPFA
|
|
163
|
+
|
|
164
|
+
- You need **single-trial** latent trajectories (not just condition averages)
|
|
165
|
+
- The research question involves trial-to-trial variability in population dynamics
|
|
166
|
+
- You want an estimate of dimensionality that accounts for temporal smoothness
|
|
167
|
+
|
|
168
|
+
### Key Parameters
|
|
169
|
+
|
|
170
|
+
| Parameter | Recommended Value | Rationale | Source |
|
|
171
|
+
|---|---|---|---|
|
|
172
|
+
| Bin size | **20--50 ms** | Smaller bins preserve temporal resolution but increase noise; 20 ms is standard for motor cortex | Yu et al., 2009 |
|
|
173
|
+
| Latent dimensions | Cross-validate | Fit models with 2--15 dimensions; select by leave-one-neuron-out cross-validation log-likelihood | Yu et al., 2009 |
|
|
174
|
+
| GP timescale (tau) | Learned from data | Each latent dimension has its own timescale; inspect for biologically plausible values (10--500 ms) | Yu et al., 2009 |
|
|
175
|
+
|
|
176
|
+
### Data Requirements
|
|
177
|
+
|
|
178
|
+
- **Minimum simultaneously recorded neurons**: ~**50--100** for stable latent trajectories; below 30, estimates become unreliable (Yu et al., 2009; Cunningham & Yu, 2014)
|
|
179
|
+
- **Trial count**: **50+ trials per condition** for reliable single-trial extraction (Yu et al., 2009)
|
|
180
|
+
- **Stationarity assumption**: GPFA assumes the mapping from latent variables to neurons is fixed across all trials in the dataset. Non-stationarities (e.g., learning, drift) violate this assumption
|
|
181
|
+
|
|
182
|
+
> **Domain judgment**: GPFA is NOT simply "smoothed PCA." Factor analysis and PCA make different assumptions about noise structure. PCA treats all variance as signal; factor analysis separates shared (signal) variance from private (noise) variance per neuron. GPFA adds temporal smoothness to the shared component. This distinction matters when neurons have heterogeneous noise levels (Yu et al., 2009).
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## dPCA -- Demixed Principal Component Analysis
|
|
187
|
+
|
|
188
|
+
dPCA finds linear projections that capture maximum variance attributable to specific task parameters (e.g., stimulus identity, decision, time, and their interactions), rather than maximum total variance like PCA (Kobak et al., 2016).
|
|
189
|
+
|
|
190
|
+
### When to Use dPCA
|
|
191
|
+
|
|
192
|
+
- You have a factorial experimental design with multiple task parameters
|
|
193
|
+
- You want to know how much population variance is explained by each parameter
|
|
194
|
+
- You want to visualize how stimulus, decision, and temporal signals are mixed or separated in the population
|
|
195
|
+
|
|
196
|
+
### Key Procedures
|
|
197
|
+
|
|
198
|
+
1. **Marginalization**: Partition the data tensor by task parameter (e.g., average over all decisions to isolate stimulus variance). dPCA finds components that maximize variance within each marginalization (Kobak et al., 2016).
|
|
199
|
+
|
|
200
|
+
2. **Regularization**: The regularization parameter lambda controls the tradeoff between demixing (fidelity to marginalization) and reconstruction (total variance captured). Select lambda by **cross-validation** (Kobak et al., 2016):
|
|
201
|
+
- Hold out a subset of trials
|
|
202
|
+
- Fit dPCA on remaining trials for a range of lambda values
|
|
203
|
+
- Choose lambda that minimizes reconstruction error on held-out trials
|
|
204
|
+
|
|
205
|
+
3. **Significance testing**: Use a **shuffle test** to determine whether each component captures significantly more marginalized variance than expected by chance:
|
|
206
|
+
- Shuffle condition labels for the parameter of interest (1000+ iterations)
|
|
207
|
+
- Recompute dPCA on shuffled data
|
|
208
|
+
- Compare observed marginalized variance to the null distribution
|
|
209
|
+
(Kobak et al., 2016)
|
|
210
|
+
|
|
211
|
+
4. **Marginalization pie chart**: Report the proportion of total variance explained by each marginalization (stimulus, decision, time, interaction). This provides a concise summary of how the population mixes task variables (Kobak et al., 2016).
|
|
212
|
+
|
|
213
|
+
### Data Requirements
|
|
214
|
+
|
|
215
|
+
- **Trial counts**: **20+ trials per condition** minimum; more for stable interaction terms (Kobak et al., 2016)
|
|
216
|
+
- **Neuron counts**: Works with as few as 20--30 neurons but more reliable with 50+ (Kobak et al., 2016)
|
|
217
|
+
- **Factorial design**: dPCA requires a balanced factorial design; missing conditions or severely unbalanced cell sizes degrade performance
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Population Decoding
|
|
222
|
+
|
|
223
|
+
### Classifier Selection for Neural Populations
|
|
224
|
+
|
|
225
|
+
| Classifier | When to Use | Source |
|
|
226
|
+
|---|---|---|
|
|
227
|
+
| **Linear SVM** | Default; robust for high-dimensional population data | Cunningham & Yu, 2014 |
|
|
228
|
+
| **LDA** | When number of neurons << number of trials | Cunningham & Yu, 2014 |
|
|
229
|
+
| **Logistic Regression** | When probability estimates are needed | Cunningham & Yu, 2014 |
|
|
230
|
+
|
|
231
|
+
### Cross-Validation for Neural Data
|
|
232
|
+
|
|
233
|
+
| Strategy | When to Use | Source |
|
|
234
|
+
|---|---|---|
|
|
235
|
+
| **Leave-one-trial-out** | Small trial counts; maximizes training data | Cunningham & Yu, 2014 |
|
|
236
|
+
| **Stratified k-fold** (k=5--10) | Sufficient trials; balances bias/variance | Cunningham & Yu, 2014 |
|
|
237
|
+
|
|
238
|
+
### Temporal Generalization Matrix
|
|
239
|
+
|
|
240
|
+
Train a classifier at time t, test at all times t'. The resulting matrix reveals dynamics of neural coding (King & Dehaene, 2014):
|
|
241
|
+
|
|
242
|
+
- **Diagonal pattern**: Transient coding; neural representation changes over time
|
|
243
|
+
- **Block pattern**: Stable, sustained representation
|
|
244
|
+
- **Off-diagonal**: Reactivation of earlier representations
|
|
245
|
+
|
|
246
|
+
See the `neural-decoding-analysis` skill for detailed guidance on temporal generalization.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Common Pitfalls
|
|
251
|
+
|
|
252
|
+
### 1. Using Standard Z-Scoring Instead of Soft Normalization
|
|
253
|
+
|
|
254
|
+
Standard z-scoring (subtract mean, divide by SD) amplifies noise from low-firing neurons and eliminates informative rate differences. Always use soft normalization or square-root transform for neural population data (Churchland et al., 2012).
|
|
255
|
+
|
|
256
|
+
### 2. Interpreting t-SNE/UMAP Distances as Meaningful
|
|
257
|
+
|
|
258
|
+
t-SNE and UMAP distort distances, create spurious clusters, and are sensitive to hyperparameters (perplexity, n_neighbors). They are useful for visualization but must NEVER be used for quantitative claims about distance, clustering, or dimensionality (Cunningham & Yu, 2014).
|
|
259
|
+
|
|
260
|
+
### 3. Using Percent Variance Explained to Choose Dimensionality
|
|
261
|
+
|
|
262
|
+
There is no universal threshold. The correct approach is parallel analysis (compare to null eigenvalue distribution) or cross-validated reconstruction (Humphries, 2021).
|
|
263
|
+
|
|
264
|
+
### 4. Applying GPFA to Condition-Averaged Data
|
|
265
|
+
|
|
266
|
+
GPFA is designed for single-trial data. Applying it to trial-averaged PSTHs defeats its purpose (separating shared latent signal from private noise) and provides no advantage over PCA (Yu et al., 2009).
|
|
267
|
+
|
|
268
|
+
### 5. Ignoring Neuron Count Requirements
|
|
269
|
+
|
|
270
|
+
Population analyses have minimum neuron requirements for reliable estimates. Below ~30 simultaneously recorded neurons, dimensionality estimates from PCA are dominated by noise; GPFA latent trajectories become unstable below ~50 neurons (Cunningham & Yu, 2014; Yu et al., 2009).
|
|
271
|
+
|
|
272
|
+
### 6. Not Cross-Validating dPCA Regularization
|
|
273
|
+
|
|
274
|
+
Using default or arbitrary regularization parameters in dPCA can either over-demix (fitting noise) or under-demix (missing true task-related structure). Always cross-validate lambda (Kobak et al., 2016).
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Minimum Reporting Checklist
|
|
279
|
+
|
|
280
|
+
Based on Cunningham & Yu (2014), Kobak et al. (2016), and Yu et al. (2009):
|
|
281
|
+
|
|
282
|
+
- [ ] Number of simultaneously recorded neurons and recording method
|
|
283
|
+
- [ ] Neuron inclusion criteria (e.g., minimum firing rate, signal quality)
|
|
284
|
+
- [ ] Normalization method (soft normalization constant, or square-root transform)
|
|
285
|
+
- [ ] Method used and justification (PCA, GPFA, dPCA, jPCA)
|
|
286
|
+
- [ ] Dimensionality selection method (parallel analysis, cross-validation) and chosen dimensionality
|
|
287
|
+
- [ ] For GPFA: bin size, number of latent dimensions, learned GP timescales
|
|
288
|
+
- [ ] For dPCA: regularization parameter, cross-validation procedure, shuffle test results
|
|
289
|
+
- [ ] Trial counts per condition
|
|
290
|
+
- [ ] Variance explained (total and per component/marginalization)
|
|
291
|
+
- [ ] Software and version used (e.g., GPFA code from Yu et al., dPCA Python/MATLAB toolbox)
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Key References
|
|
296
|
+
|
|
297
|
+
- Churchland, M. M., Cunningham, J. P., Kaufman, M. T., Foster, J. D., Nuyujukian, P., Ryu, S. I., & Shenoy, K. V. (2012). Neural population dynamics during reaching. *Nature*, 487(7405), 51--56.
|
|
298
|
+
- Cunningham, J. P., & Yu, B. M. (2014). Dimensionality reduction for large-scale neural recordings. *Nature Neuroscience*, 17(11), 1500--1509.
|
|
299
|
+
- Humphries, M. D. (2021). Strong and weak principles of neural dimension reduction. *Neuron*, 109(8), 1230--1234.
|
|
300
|
+
- King, J.-R., & Dehaene, S. (2014). Characterizing the dynamics of mental representations: The temporal generalization method. *Trends in Cognitive Sciences*, 18(4), 203--210.
|
|
301
|
+
- Kobak, D., Brendel, W., Constantinidis, C., Feierstein, C. E., Kepecs, A., Mainen, Z. F., Qi, X.-L., Romo, R., Uchida, N., & Machens, C. K. (2016). Demixed principal component analysis of neural population data. *eLife*, 5, e10989.
|
|
302
|
+
- Yu, B. M., Cunningham, J. P., Santhanam, G., Ryu, S. I., Shenoy, K. V., & Sahani, M. (2009). Gaussian-process factor analysis for low-dimensional single-trial analysis of neural population activity. *Journal of Neurophysiology*, 102(1), 614--635.
|
|
303
|
+
|
|
304
|
+
See `references/method-comparison.md` for detailed parameter tables and software recommendations.
|
|
305
|
+
See `references/data-requirements.md` for minimum neuron and trial count guidelines by method.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Data Requirements for Neural Population Analysis Methods
|
|
2
|
+
|
|
3
|
+
This reference document supplements `SKILL.md` with detailed minimum data requirements for each population analysis method.
|
|
4
|
+
|
|
5
|
+
## Neuron Count Requirements
|
|
6
|
+
|
|
7
|
+
| Method | Minimum Neurons | Recommended Neurons | Rationale | Source |
|
|
8
|
+
|---|---|---|---|---|
|
|
9
|
+
| PCA (condition-avg) | 10--20 | 50+ | Fewer PCs than neurons; noise dominates with very few | Cunningham & Yu, 2014 |
|
|
10
|
+
| PCA (single-trial) | 30+ | 100+ | Single-trial noise requires more neurons for stable estimates | Cunningham & Yu, 2014 |
|
|
11
|
+
| Factor Analysis | 20+ | 50+ | Must estimate shared vs. private variance | Cunningham & Yu, 2014 |
|
|
12
|
+
| GPFA | 50+ | 100+ | Single-trial trajectory extraction requires overdetermined system | Yu et al., 2009 |
|
|
13
|
+
| dPCA | 20+ | 50+ | Must have enough neurons to capture variance in each marginalization | Kobak et al., 2016 |
|
|
14
|
+
| jPCA | 30+ | 50+ | Needs stable 6D PCA subspace first | Churchland et al., 2012 |
|
|
15
|
+
| t-SNE/UMAP | Any | N/A | Visualization only; fewer neurons = less meaningful | Expert consensus |
|
|
16
|
+
|
|
17
|
+
## Trial Count Requirements
|
|
18
|
+
|
|
19
|
+
| Method | Minimum Trials/Condition | Recommended Trials/Condition | Rationale | Source |
|
|
20
|
+
|---|---|---|---|---|
|
|
21
|
+
| PCA (condition-avg) | 20+ | 50+ | Trial averaging requires sufficient trials per condition to suppress noise | Cunningham & Yu, 2014 |
|
|
22
|
+
| PCA (single-trial) | 50+ | 100+ | Covariance estimation on single trials requires large sample | Cunningham & Yu, 2014 |
|
|
23
|
+
| GPFA | 50+ | 100+ | EM convergence and stable latent trajectory extraction | Yu et al., 2009 |
|
|
24
|
+
| dPCA | 20+ | 40+ | Cross-validation of regularization requires held-out trials | Kobak et al., 2016 |
|
|
25
|
+
| jPCA | 30+ | 50+ | Stable condition-averaged trajectories | Churchland et al., 2012 |
|
|
26
|
+
| Population decoding | 20+ | 50+ | Cross-validated classification requires sufficient trials per fold | Cunningham & Yu, 2014 |
|
|
27
|
+
|
|
28
|
+
## Recording Duration Guidelines
|
|
29
|
+
|
|
30
|
+
| Analysis Goal | Minimum Duration | Rationale | Source |
|
|
31
|
+
|---|---|---|---|
|
|
32
|
+
| Peri-event trajectories | Trial duration + 500 ms pre/post | Capture dynamics around events | Expert consensus |
|
|
33
|
+
| Slow dynamics (e.g., working memory) | Full trial including delay period | Must capture sustained activity | Expert consensus |
|
|
34
|
+
| Rotational dynamics (jPCA) | 200+ ms of movement-related activity | Rotations typically occur on 100--300 ms timescale | Churchland et al., 2012 |
|
|
35
|
+
| GPFA latent dynamics | 500+ ms per trial | GP timescale learning needs sufficient temporal extent | Yu et al., 2009 |
|
|
36
|
+
|
|
37
|
+
## Simultaneous vs. Sequential Recording
|
|
38
|
+
|
|
39
|
+
| Recording Type | Compatible Methods | Incompatible Methods | Notes |
|
|
40
|
+
|---|---|---|---|
|
|
41
|
+
| Simultaneous (multi-electrode array) | All methods | None | Gold standard; captures noise correlations |
|
|
42
|
+
| Sequential (single electrode, pseudopopulation) | PCA (condition-avg), dPCA | GPFA, noise correlation analysis | Cannot capture trial-by-trial co-variability; single-trial methods invalid |
|
|
43
|
+
|
|
44
|
+
> **Critical**: GPFA and any method requiring single-trial co-variability estimates MUST use simultaneously recorded neurons. Pseudopopulations (neurons recorded on different sessions stitched together) can be used for condition-averaged analyses like PCA or dPCA, but not for single-trial latent trajectory extraction (Cunningham & Yu, 2014).
|
|
45
|
+
|
|
46
|
+
## Practical Checklist Before Analysis
|
|
47
|
+
|
|
48
|
+
- [ ] Confirm recording type (simultaneous vs. sequential)
|
|
49
|
+
- [ ] Count total neurons passing quality criteria
|
|
50
|
+
- [ ] Count trials per condition (verify balance across conditions for dPCA)
|
|
51
|
+
- [ ] Check temporal extent of data relative to analysis goals
|
|
52
|
+
- [ ] Verify that neuron/trial counts meet minimum thresholds for chosen method
|
|
53
|
+
- [ ] If below minimums, consider simpler methods (e.g., PCA instead of GPFA) or pool across sessions (with caveats)
|
|
54
|
+
|
|
55
|
+
## References
|
|
56
|
+
|
|
57
|
+
- Churchland, M. M., et al. (2012). Neural population dynamics during reaching. *Nature*, 487(7405), 51--56.
|
|
58
|
+
- Cunningham, J. P., & Yu, B. M. (2014). Dimensionality reduction for large-scale neural recordings. *Nature Neuroscience*, 17(11), 1500--1509.
|
|
59
|
+
- Kobak, D., et al. (2016). Demixed principal component analysis of neural population data. *eLife*, 5, e10989.
|
|
60
|
+
- Yu, B. M., et al. (2009). Gaussian-process factor analysis for low-dimensional single-trial analysis of neural population activity. *Journal of Neurophysiology*, 102(1), 614--635.
|