[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ECC97Q2RACZ7SY0VEC08J3":3,"skill-same:01M6ECC97Q2RACZ7SY0VEC08J3":52},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6ECC97Q2RACZ7SY0VEC08J3","neuropixels-analysis",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fneuropixels-analysis\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24],"analysis","neuropixels analysis","2026-11-10 10:12:30",false,"# Neuropixels Data Analysis\n\n## Overview\n\nComprehensive toolkit for analyzing Neuropixels high-density neural recordings using current best practices from SpikeInterface, Allen Institute, and International Brain Laboratory (IBL). Supports the full workflow from raw data to publication-ready curated units.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Working with Neuropixels recordings (.ap.bin, .lf.bin, .meta files)\n- Loading data from SpikeGLX, Open Ephys, or NWB formats\n- Preprocessing neural recordings (filtering, CAR, bad channel detection)\n- Detecting and correcting motion\u002Fdrift in recordings\n- Running spike sorting (Kilosort4, SpykingCircus2, Mountainsort5)\n- Computing quality metrics (SNR, ISI violations, presence ratio)\n- Curating units using Allen\u002FIBL criteria\n- Creating visualizations of neural data\n- Exporting results to Phy or NWB\n\n## Supported Hardware & Formats\n\n| Probe | Electrodes | Channels | Notes |\n|-------|-----------|----------|-------|\n| Neuropixels 1.0 | 960 | 384 | Requires phase_shift correction |\n| Neuropixels 2.0 (single) | 1280 | 384 | Denser geometry |\n| Neuropixels 2.0 (4-shank) | 5120 | 384 | Multi-region recording |\n\n| Format | Extension | Reader |\n|--------|-----------|--------|\n| SpikeGLX | `.ap.bin`, `.lf.bin`, `.meta` | `si.read_spikeglx()` |\n| Open Ephys | `.continuous`, `.oebin` | `si.read_openephys()` |\n| NWB | `.nwb` | `si.read_nwb()` |\n\n## Quick Start\n\n### Basic Import and Setup\n\n```python\nimport spikeinterface.full as si\nimport neuropixels_analysis as npa\n\n# Configure parallel processing\njob_kwargs = dict(n_jobs=-1, chunk_duration='1s', progress_bar=True)\n```\n\n### Loading Data\n\n```python\n# SpikeGLX (most common)\nrecording = si.read_spikeglx('\u002Fpath\u002Fto\u002Fdata', stream_id='imec0.ap')\n\n# Open Ephys (common for many labs)\nrecording = si.read_openephys('\u002Fpath\u002Fto\u002FRecord_Node_101\u002F')\n\n# Check available streams\nstreams, ids = si.get_neo_streams('spikeglx', '\u002Fpath\u002Fto\u002Fdata')\nprint(streams)  # ['imec0.ap', 'imec0.lf', 'nidq']\n\n# For testing with subset of data\nrecording = recording.frame_slice(0, int(60 * recording.get_sampling_frequency()))\n```\n\n### Complete Pipeline (One Command)\n\n```python\n# Run full analysis pipeline\nresults = npa.run_pipeline(\n    recording,\n    output_dir='output\u002F',\n    sorter='kilosort4',\n    curation_method='allen',\n)\n\n# Access results\nsorting = results['sorting']\nmetrics = results['metrics']\nlabels = results['labels']\n```\n\n## Standard Analysis Workflow\n\n### 1. Preprocessing\n\n```python\n# Recommended preprocessing chain\nrec = si.highpass_filter(recording, freq_min=400)\nrec = si.phase_shift(rec)  # Required for Neuropixels 1.0\nbad_ids, _ = si.detect_bad_channels(rec)\nrec = rec.remove_channels(bad_ids)\nrec = si.common_reference(rec, operator='median')\n\n# Or use our wrapper\nrec = npa.preprocess(recording)\n```\n\n### 2. Check and Correct Drift\n\n```python\n# Check for drift (always do this!)\nmotion_info = npa.estimate_motion(rec, preset='kilosort_like')\nnpa.plot_drift(rec, motion_info, output='drift_map.png')\n\n# Apply correction if needed\nif motion_info['motion'].max() > 10:  # microns\n    rec = npa.correct_motion(rec, preset='nonrigid_accurate')\n```\n\n### 3. Spike Sorting\n\n```python\n# Kilosort4 (recommended, requires GPU)\nsorting = si.run_sorter('kilosort4', rec, folder='ks4_output')\n\n# CPU alternatives\nsorting = si.run_sorter('tridesclous2', rec, folder='tdc2_output')\nsorting = si.run_sorter('spykingcircus2', rec, folder='sc2_output')\nsorting = si.run_sorter('mountainsort5', rec, folder='ms5_output')\n\n# Check available sorters\nprint(si.installed_sorters())\n```\n\n### 4. Postprocessing\n\n```python\n# Create analyzer and compute all extensions\nanalyzer = si.create_sorting_analyzer(sorting, rec, sparse=True)\n\nanalyzer.compute('random_spikes', max_spikes_per_unit=500)\nanalyzer.compute('waveforms', ms_before=1.0, ms_after=2.0)\nanalyzer.compute('templates', operators=['average', 'std'])\nanalyzer.compute('spike_amplitudes')\nanalyzer.compute('correlograms', window_ms=50.0, bin_ms=1.0)\nanalyzer.compute('unit_locations', method='monopolar_triangulation')\nanalyzer.compute('quality_metrics')\n\nmetrics = analyzer.get_extension('quality_metrics').get_data()\n```\n\n### 5. Curation\n\n```python\n# Allen Institute criteria (conservative)\ngood_units = metrics.query(\"\"\"\n    presence_ratio > 0.9 and\n    isi_violations_ratio \u003C 0.5 and\n    amplitude_cutoff \u003C 0.1\n\"\"\").index.tolist()\n\n# Or use automated curation\nlabels = npa.curate(metrics, method='allen')  # 'allen', 'ibl', 'strict'\n```\n\n### 6. AI-Assisted Curation (For Uncertain Units)\n\nWhen using this skill with Claude Code, Claude can directly analyze waveform plots and provide expert curation decisions. For programmatic API access:\n\n```python\nfrom anthropic import Anthropic\n\n# Setup API client\nclient = Anthropic()\n\n# Analyze uncertain units visually\nuncertain = metrics.query('snr > 3 and snr \u003C 8').index.tolist()\n\nfor unit_id in uncertain:\n    result = npa.analyze_unit_visually(analyzer, unit_id, api_client=client)\n    print(f\"Unit {unit_id}: {result['classification']}\")\n    print(f\"  Reasoning: {result['reasoning'][:100]}...\")\n```\n\n**Claude Code Integration**: When running within Claude Code, ask Claude to examine waveform\u002Fcorrelogram plots directly - no API setup required.\n\n### 7. Generate Analysis Report\n\n```python\n# Generate comprehensive HTML report with visualizations\nreport_dir = npa.generate_analysis_report(results, 'output\u002F')\n# Opens report.html with summary stats, figures, and unit table\n\n# Print formatted summary to console\nnpa.print_analysis_summary(results)\n```\n\n### 8. Export Results\n\n```python\n# Export to Phy for manual review\nsi.export_to_phy(analyzer, output_folder='phy_export\u002F',\n                 compute_pc_features=True, compute_amplitudes=True)\n\n# Export to NWB\nfrom spikeinterface.exporters import export_to_nwb\nexport_to_nwb(rec, sorting, 'output.nwb')\n\n# Save quality metrics\nmetrics.to_csv('quality_metrics.csv')\n```\n\n## Common Pitfalls and Best Practices\n\n1. **Always check drift** before spike sorting - drift > 10μm significantly impacts quality\n2. **Use phase_shift** for Neuropixels 1.0 probes (not needed for 2.0)\n3. **Save preprocessed data** to avoid recomputing - use `rec.save(folder='preprocessed\u002F')`\n4. **Use GPU** for Kilosort4 - it's 10-50x faster than CPU alternatives\n5. **Review uncertain units manually** - automated curation is a starting point\n6. **Combine metrics with AI** - use metrics for clear cases, AI for borderline units\n7. **Document your thresholds** - different analyses may need different criteria\n8. **Export to Phy** for critical experiments - human oversight is valuable\n\n## Key Parameters to Adjust\n\n### Preprocessing\n- `freq_min`: Highpass cutoff (300-400 Hz typical)\n- `detect_threshold`: Bad channel detection sensitivity\n\n### Motion Correction\n- `preset`: 'kilosort_like' (fast) or 'nonrigid_accurate' (better for severe drift)\n\n### Spike Sorting (Kilosort4)\n- `batch_size`: Samples per batch (30000 default)\n- `nblocks`: Number of drift blocks (increase for long recordings)\n- `Th_learned`: Detection threshold (lower = more spikes)\n\n### Quality Metrics\n- `snr_threshold`: Signal-to-noise cutoff (3-5 typical)\n- `isi_violations_ratio`: Refractory violations (0.01-0.5)\n- `presence_ratio`: Recording coverage (0.5-0.95)\n\n## Bundled Resources\n\n### scripts\u002Fpreprocess_recording.py\nAutomated preprocessing script:\n```bash\npython scripts\u002Fpreprocess_recording.py \u002Fpath\u002Fto\u002Fdata --output preprocessed\u002F\n```\n\n### scripts\u002Frun_sorting.py\nRun spike sorting:\n```bash\npython scripts\u002Frun_sorting.py preprocessed\u002F --sorter kilosort4 --output sorting\u002F\n```\n\n### scripts\u002Fcompute_metrics.py\nCompute quality metrics and apply curation:\n```bash\npython scripts\u002Fcompute_metrics.py sorting\u002F preprocessed\u002F --output metrics\u002F --curation allen\n```\n\n### scripts\u002Fexport_to_phy.py\nExport to Phy for manual curation:\n```bash\npython scripts\u002Fexport_to_phy.py metrics\u002Fanalyzer --output phy_export\u002F\n```\n\n### assets\u002Fanalysis_template.py\nComplete analysis template. Copy and customize:\n```bash\ncp assets\u002Fanalysis_template.py my_analysis.py\n# Edit parameters and run\npython my_analysis.py\n```\n\n### reference\u002Fstandard_workflow.md\nDetailed step-by-step workflow with explanations for each stage.\n\n### reference\u002Fapi_reference.md\nQuick function reference organized by module.\n\n### reference\u002Fplotting_guide.md\nComprehensive visualization guide for publication-quality figures.\n\n## Detailed Reference Guides\n\n| Topic | Reference |\n|-------|-----------|\n| Full workflow | [references\u002Fstandard_workflow.md](reference\u002Fstandard_workflow.md) |\n| API reference | [references\u002Fapi_reference.md](reference\u002Fapi_reference.md) |\n| Plotting guide | [references\u002Fplotting_guide.md](reference\u002Fplotting_guide.md) |\n| Preprocessing | [references\u002FPREPROCESSING.md](reference\u002FPREPROCESSING.md) |\n| Spike sorting | [references\u002FSPIKE_SORTING.md](reference\u002FSPIKE_SORTING.md) |\n| Motion correction | [references\u002FMOTION_CORRECTION.md](reference\u002FMOTION_CORRECTION.md) |\n| Quality metrics | [references\u002FQUALITY_METRICS.md](reference\u002FQUALITY_METRICS.md) |\n| Automated curation | [references\u002FAUTOMATED_CURATION.md](reference\u002FAUTOMATED_CURATION.md) |\n| AI-assisted curation | [references\u002FAI_CURATION.md](reference\u002FAI_CURATION.md) |\n| Waveform analysis | [references\u002FANALYSIS.md](reference\u002FANALYSIS.md) |\n\n## Installation\n\n```bash\n# Core packages\npip install spikeinterface[full] probeinterface neo\n\n# Spike sorters\npip install kilosort          # Kilosort4 (GPU required)\npip install spykingcircus     # SpykingCircus2 (CPU)\npip install mountainsort5     # Mountainsort5 (CPU)\n\n# Our toolkit\npip install neuropixels-analysis\n\n# Optional: AI curation\npip install anthropic\n\n# Optional: IBL tools\npip install ibl-neuropixel ibllib\n```\n\n## Project Structure\n\n```\nproject\u002F\n├── raw_data\u002F\n│   └── recording_g0\u002F\n│       └── recording_g0_imec0\u002F\n│           ├── recording_g0_t0.imec0.ap.bin\n│           └── recording_g0_t0.imec0.ap.meta\n├── preprocessed\u002F           # Saved preprocessed recording\n├── motion\u002F                 # Motion estimation results\n├── sorting_output\u002F         # Spike sorter output\n├── analyzer\u002F               # SortingAnalyzer (waveforms, metrics)\n├── phy_export\u002F             # For manual curation\n├── ai_curation\u002F            # AI analysis reports\n└── results\u002F\n    ├── quality_metrics.csv\n    ├── curation_labels.json\n    └── output.nwb\n```\n\n## Additional Resources\n\n- **SpikeInterface Docs**: https:\u002F\u002Fspikeinterface.readthedocs.io\u002F\n- **Neuropixels Tutorial**: https:\u002F\u002Fspikeinterface.readthedocs.io\u002Fen\u002Fstable\u002Fhow_to\u002Fanalyze_neuropixels.html\n- **Kilosort4 GitHub**: https:\u002F\u002Fgithub.com\u002FMouseLand\u002FKilosort\n- **IBL Neuropixel Tools**: https:\u002F\u002Fgithub.com\u002Fint-brain-lab\u002Fibl-neuropixel\n- **Allen Institute ecephys**: https:\u002F\u002Fgithub.com\u002FAllenInstitute\u002Fecephys_spike_sorting\n- **Bombcell (Automated QC)**: https:\u002F\u002Fgithub.com\u002FJulie-Fabre\u002Fbombcell\n- **SpikeAgent (AI Curation)**: https:\u002F\u002Fgithub.com\u002FSpikeAgent\u002FSpikeAgent\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fneuropixels-analysis",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill neuropixels-analysis",{"tool":44,"command":45},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill neuropixels-analysis",{"tool":47,"command":48},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill neuropixels-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FK-Dense-AI\u002Fclaude-scientific-skills\u002Fneuropixels-analysis\u002FSKILL.md",true,[],[53,63,73,82,88,95],{"skillNo":54,"name":55,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":59,"publishedAt":25},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[58],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":25},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":25},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":25},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":25},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":25},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]