Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: Checks
on: [push, pull_request]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: pre-commit/action@v3.0.0
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
repos:
- repo: https://github.com/psf/black
rev: 22.6.0
hooks:
- id: black
language_version: python3
args: ["--line-length", "120"]
exclude: '\.(csv|yml|yaml)$'
# - repo: https://github.com/pycqa/flake8
# rev: 4.0.1
# hooks:
# - id: flake8
# args: ["--max-line-length", "120", "--ignore", "E203"]
# language_version: python3
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: requirements-txt-fixer
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
exclude: '\.(csv|yml|yaml)$'
64 changes: 62 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,62 @@
# sapinet_regularization
Reproduction of simulations from Moyal et al. (202x) _Heterogeneous quantization regularizes spiking neural network activity_.
# Heterogeneous Quantization Regularizes Spiking Neural Network Activity

Spiking neural network simulations from [Moyal et al.](
https://www.nature.com/articles/s41598-025-96223-z) (2025), tested on Ubuntu 22.04.


Installation
------------
If you would like to run, modify, or extend this project:

* Clone the repository:

git clone https://github.com/cplab/sapinet_regularization

* Create a conda virtual environment (optional):

conda create -n <env_name> python=3.11
conda activate <env_name>

* Install with pip:

cd sapinet_regularization
pip install -e .

See ``setup.py`` for dependency information.


Simulation
----------
* To reproduce the results and plots, run the master script from its own directory:

cd src/projects
python simulation.py -multirun yaml/hq2025.yaml

* You may modify component, model, and project YAMLs to your liking and run single-use pipelines, e.g.:

cd src/projects
python simulation.py -experiment yaml/synthetic.yaml

Plots and diagnostic output will be written to `results/<run>`.


Analysis
--------
To reproduce the statistical analyses:

* Edit the following R file so that `run_dir` and `meta_dir` point to the run directory
generated in the previous step:

src/utils/analysis/analysis.r

* Run `analysis.r` and inspect the results generated under `analysis/<run>`.

You may also directly inspect the raw synthetic datasets and statistical output
reported in the manuscript. Both are included in this repository under:

analysis/SciRep-Final


Note
----
Sapicore 0.4 is compatible with both Linux and Windows.
16 changes: 16 additions & 0 deletions analysis/SciRep-Final/csv/full_clf_cond_1.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
model.term,df1,df2,F.ratio,p.value
Layer,1,441,5.805,0.0163940824707428
Condition,3,441,3298.391,1.40556729801199e-301
Duplication,3,441,179.135,6.09289163386833e-76
Session,1,441,555.771,4.11120373447204e-80
Layer:Condition,3,441,6.572,0.000235805568692485
Layer:Duplication,3,441,5.944,0.000557259393307905
Layer:Session,1,441,0.042,0.838225874225619
Condition:Duplication,9,441,28.307,9.3891107570878e-39
Condition:Session,3,441,937.419,6.69716854927288e-191
Duplication:Session,3,441,3.08,0.0273166226018128
Layer:Condition:Duplication,9,441,1.656,0.0974283388520933
Layer:Condition:Session,3,441,1.498,0.21432258197009
Layer:Duplication:Session,3,441,0.047,0.986298344329484
Condition:Duplication:Session,9,441,7.022,1.65477356379195e-09
Layer:Condition:Duplication:Session,9,441,2.719,0.00429506307005925
49 changes: 49 additions & 0 deletions analysis/SciRep-Final/csv/full_clf_cond_2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
contrast,Duplication,Layer,estimate,SE,df,t.ratio,p.value
Homogeneous - Uniform,4,GC,-16.0639880952331,0.860475202517394,440.999999999895,-18.6687403056317,0
Homogeneous - Scaled,4,GC,-22.2023809523757,0.860475202517393,440.999999999924,-25.8024646002822,0
Homogeneous - Adaptive,4,GC,-22.0163690476142,0.860475202517394,440.99999999991,-25.5862911368084,0
Uniform - Scaled,4,GC,-6.13839285714263,0.860475202517395,440.999999999966,-7.13372429465047,2.55417909045264e-12
Uniform - Adaptive,4,GC,-5.95238095238116,0.860475202517396,440.999999999966,-6.91755083117672,7.5747297323403e-11
Scaled - Adaptive,4,GC,0.186011904761466,0.860475202517395,440.999999999966,0.216173463473755,0.996428897623739
Homogeneous - Uniform,8,GC,-26.7745535714287,0.860475202517396,440.999999999966,-31.1160083324859,0
Homogeneous - Scaled,8,GC,-26.1793154761906,0.860475202517395,440.999999999966,-30.4242532493682,0
Homogeneous - Adaptive,8,GC,-25.4724702380954,0.860475202517397,440.999999999966,-29.6027940881659,0
Uniform - Scaled,8,GC,0.595238095238103,0.860475202517395,440.99999999998,0.691755083117656,0.900230925391618
Uniform - Adaptive,8,GC,1.30208333333337,0.860475202517397,440.99999999998,1.51321424431989,0.430396696763386
Scaled - Adaptive,8,GC,0.706845238095265,0.860475202517396,440.99999999998,0.821459161202236,0.84431254673782
Homogeneous - Uniform,16,GC,-28.8690476190483,0.860475202517395,440.999999999966,-33.5501215312067,0
Homogeneous - Scaled,16,GC,-28.0877976190483,0.860475202517396,440.999999999966,-32.6421929846148,0
Homogeneous - Adaptive,16,GC,-27.5669642857149,0.860475202517396,440.999999999966,-32.0369072868868,0
Uniform - Scaled,16,GC,0.781249999999972,0.860475202517396,440.999999999994,0.907928546591879,0.800633047591831
Uniform - Adaptive,16,GC,1.30208333333337,0.860475202517395,440.999999999994,1.51321424431989,0.430396696763386
Scaled - Adaptive,16,GC,0.520833333333393,0.860475202517396,440.999999999994,0.605285697728011,0.930375031963111
Homogeneous - Uniform,32,GC,-28.8839285714293,0.860475202517396,440.999999999966,-33.5674154082847,0
Homogeneous - Scaled,32,GC,-27.5446428571435,0.860475202517395,440.999999999966,-32.0109664712699,0
Homogeneous - Adaptive,32,GC,-28.5863095238103,0.860475202517396,440.999999999966,-33.2215378667259,0
Uniform - Scaled,32,GC,1.33928571428576,0.860475202517397,440.99999999998,1.55644893701476,0.40478545711267
Uniform - Adaptive,32,GC,0.297619047619017,0.860475202517397,440.99999999998,0.345877541558787,0.985767159729874
Scaled - Adaptive,32,GC,-1.04166666666675,0.860475202517397,440.99999999998,-1.21057139545597,0.620449130313097
Homogeneous - Uniform,4,MC,-15.7068452380955,0.860475202517395,440.999999999895,-18.2536872557672,0
Homogeneous - Scaled,4,MC,-20.9151785714286,0.860475202517394,440.999999999895,-24.3065442330464,0
Homogeneous - Adaptive,4,MC,-20.1711309523811,0.860475202517395,440.999999999895,-23.4418503791494,0
Uniform - Scaled,4,MC,-5.20833333333316,0.860475202517394,440.999999999966,-6.05285697727922,1.82240592616623e-08
Uniform - Adaptive,4,MC,-4.46428571428562,0.860475202517395,440.999999999966,-5.18816312338225,1.93604288611926e-06
Scaled - Adaptive,4,MC,0.74404761904754,0.860475202517395,440.999999999952,0.864693853896968,0.823056834750585
Homogeneous - Uniform,8,MC,-22.9464285714286,0.860475202517394,440.999999999966,-26.6671584541854,0
Homogeneous - Scaled,8,MC,-26.6666666666667,0.860475202517397,440.999999999966,-30.9906277236706,0
Homogeneous - Adaptive,8,MC,-23.6160714285715,0.860475202517397,440.999999999966,-27.4453829226927,0
Uniform - Scaled,8,MC,-3.7202380952381,0.860475202517396,440.99999999998,-4.3234692694853,0.000111582040550617
Uniform - Adaptive,8,MC,-0.669642857142894,0.860475202517395,440.999999999994,-0.778224468507397,0.864309676165084
Scaled - Adaptive,8,MC,3.05059523809521,0.8604752025174,440.99999999998,3.54524480097789,0.00244348065632305
Homogeneous - Uniform,16,MC,-26.9568452380952,0.860475202517396,440.999999999966,-31.3278583266904,0
Homogeneous - Scaled,16,MC,-25.5431547619047,0.860475202517396,440.999999999966,-29.684940004286,0
Homogeneous - Adaptive,16,MC,-25.766369047619,0.860475202517394,440.999999999966,-29.9443481604552,0
Uniform - Scaled,16,MC,1.41369047619048,0.860475202517395,440.99999999998,1.64291832240442,0.355621577834319
Uniform - Adaptive,16,MC,1.19047619047617,0.860475202517394,441.000000000008,1.38351016623528,0.510361743066513
Scaled - Adaptive,16,MC,-0.223214285714309,0.860475202517394,440.99999999998,-0.259408156169145,0.993876629091368
Homogeneous - Uniform,32,MC,-25.014880952381,0.860475202517396,440.999999999952,-29.0710073680191,0
Homogeneous - Scaled,32,MC,-25.2752976190477,0.860475202517397,440.999999999952,-29.3736502168831,0
Homogeneous - Adaptive,32,MC,-25.5357142857143,0.860475202517395,440.999999999966,-29.6762930657471,0
Uniform - Scaled,32,MC,-0.260416666666702,0.860475202517398,440.99999999998,-0.30264284886401,0.990364532146554
Uniform - Adaptive,32,MC,-0.520833333333334,0.860475202517395,440.999999999994,-0.605285697727942,0.930375031963133
Scaled - Adaptive,32,MC,-0.260416666666632,0.860475202517397,440.99999999998,-0.30264284886393,0.990364532146562
65 changes: 65 additions & 0 deletions analysis/SciRep-Final/csv/full_clf_cond_3.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Layer,Session,Condition,Duplication,Accuracy.m,Accuracy.s
GC,Concentration,Homogeneous,4,79.9404761904762,0.947051414443939
GC,Concentration,Homogeneous,8,81.5997023809524,1.54317700424802
GC,Concentration,Homogeneous,16,81.3913690476191,1.56257086007124
GC,Concentration,Homogeneous,32,81.8154761904762,1.09756481634439
GC,Concentration,Uniform,4,87.0535714285714,4.51921983428477
GC,Concentration,Uniform,8,95.5357142857143,2.96767489228148
GC,Concentration,Uniform,16,97.1726190476191,2.45938007890809
GC,Concentration,Uniform,32,97.6190476190476,1.55869921597137
GC,Concentration,Scaled,4,87.2767857142857,2.88003689001587
GC,Concentration,Scaled,8,93.452380952381,2.86351330620455
GC,Concentration,Scaled,16,96.5773809523809,3.12955207815951
GC,Concentration,Scaled,32,97.0238095238095,1.68358757425369
GC,Concentration,Adaptive,4,90.4761904761905,3.88373715873103
GC,Concentration,Adaptive,8,92.1875,3.56344771548444
GC,Concentration,Adaptive,16,96.6517857142857,2.75426863392207
GC,Concentration,Adaptive,32,97.7678571428571,2.54036891943702
GC,Saturation,Homogeneous,4,56.7559523809524,0.97288722686827
GC,Saturation,Homogeneous,8,56.6666666666667,0.765589516690297
GC,Saturation,Homogeneous,16,57.3735119047619,1.09036436872825
GC,Saturation,Homogeneous,32,56.9940476190476,0.829681014806154
GC,Saturation,Uniform,4,81.7708333333333,4.33850587414085
GC,Saturation,Uniform,8,96.2797619047619,3.72066324101346
GC,Saturation,Uniform,16,99.3303571428571,1.25010122686983
GC,Saturation,Uniform,32,98.9583333333333,1.64557844220779
GC,Saturation,Scaled,4,93.8244047619048,4.63191519816374
GC,Saturation,Scaled,8,97.1726190476191,3.496232179902
GC,Saturation,Scaled,16,98.3630952380952,1.41397016567312
GC,Saturation,Scaled,32,96.875,2.00597382858596
GC,Saturation,Adaptive,4,90.2529761904762,3.81718908880377
GC,Saturation,Adaptive,8,97.0238095238095,3.45619071988121
GC,Saturation,Adaptive,16,97.2470238095238,3.29019554165098
GC,Saturation,Adaptive,32,98.2142857142857,2.22717701593687
MC,Concentration,Homogeneous,4,83.7574404761905,0.914110702407137
MC,Concentration,Homogeneous,8,83.3482142857143,1.07036511849017
MC,Concentration,Homogeneous,16,83.5863095238095,0.937786777215678
MC,Concentration,Homogeneous,32,83.7946428571429,0.935625352786815
MC,Concentration,Uniform,4,87.2023809523809,3.14970394174356
MC,Concentration,Uniform,8,95.2380952380952,2.11048871530456
MC,Concentration,Uniform,16,97.0982142857143,2.04811090042679
MC,Concentration,Uniform,32,97.9166666666667,1.31184086909367
MC,Concentration,Scaled,4,88.9136904761905,3.0507248603621
MC,Concentration,Scaled,8,95.3125,1.72626377981818
MC,Concentration,Scaled,16,94.6428571428571,1.59084072566919
MC,Concentration,Scaled,32,95.3125,2.0232467204642
MC,Concentration,Adaptive,4,92.6339285714286,3.52775880688384
MC,Concentration,Adaptive,8,91.5178571428572,3.82794758345148
MC,Concentration,Adaptive,16,96.9494047619048,1.69668962068324
MC,Concentration,Adaptive,32,95.3125,2.97512736114452
MC,Saturation,Homogeneous,4,58.6383928571429,1.15044845377825
MC,Saturation,Homogeneous,8,58.4821428571429,1.3651601120452
MC,Saturation,Homogeneous,16,58.4821428571429,1.16425197842141
MC,Saturation,Homogeneous,32,58.6607142857143,1.25827355871387
MC,Saturation,Uniform,4,86.6071428571429,3.22905400442986
MC,Saturation,Uniform,8,92.485119047619,1.62039447280267
MC,Saturation,Uniform,16,98.8839285714286,1.32861394489794
MC,Saturation,Uniform,32,94.5684523809524,5.22258739478909
MC,Saturation,Scaled,4,95.3125,2.34750098018293
MC,Saturation,Scaled,8,99.8511904761905,0.275541696360882
MC,Saturation,Scaled,16,98.5119047619048,1.14717156149932
MC,Saturation,Scaled,32,97.6934523809524,4.20219907682974
MC,Saturation,Adaptive,4,90.1041666666667,4.17197790740362
MC,Saturation,Adaptive,8,97.5446428571429,2.61280757873071
MC,Saturation,Adaptive,16,96.6517857142857,2.89755818861851
MC,Saturation,Adaptive,32,98.2142857142857,2.71842982366425
16 changes: 16 additions & 0 deletions analysis/SciRep-Final/csv/full_clf_dup_1.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
model.term,df1,df2,F.ratio,p.value
Layer,1,441,5.805,0.0163940824707428
Condition,3,441,3298.391,1.40556729801199e-301
Duplication,3,441,179.135,6.09289163386833e-76
Session,1,441,555.771,4.11120373447204e-80
Layer:Condition,3,441,6.572,0.000235805568692485
Layer:Duplication,3,441,5.944,0.000557259393307905
Layer:Session,1,441,0.042,0.838225874225619
Condition:Duplication,9,441,28.307,9.3891107570878e-39
Condition:Session,3,441,937.419,6.69716854927288e-191
Duplication:Session,3,441,3.08,0.0273166226018128
Layer:Condition:Duplication,9,441,1.656,0.0974283388520933
Layer:Condition:Session,3,441,1.498,0.21432258197009
Layer:Duplication:Session,3,441,0.047,0.986298344329484
Condition:Duplication:Session,9,441,7.022,1.65477356379195e-09
Layer:Condition:Duplication:Session,9,441,2.719,0.00429506307005925
25 changes: 25 additions & 0 deletions analysis/SciRep-Final/csv/full_clf_dup_2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
contrast,Condition,Layer,estimate,SE,df,t.ratio,p.value
Duplication8 - Duplication4,Homogeneous,GC,0.784970238090433,0.860475202517394,440.999999999895,0.912252015855815,0.694108086145561
Duplication16 - Duplication8,Homogeneous,GC,0.249255952380492,0.860475202517395,440.999999999966,0.28967244105498,0.983673825909224
Duplication32 - Duplication16,Homogeneous,GC,0.0223214285713724,0.860475202517395,440.999999999966,0.0259408156168465,0.999987446050796
Duplication8 - Duplication4,Uniform,GC,11.4955357142861,0.860475202517396,440.999999999966,13.35952004271,0
Duplication16 - Duplication8,Uniform,GC,2.34375000000004,0.860475202517395,440.99999999998,2.72378563977579,0.0187883894856506
Duplication32 - Duplication16,Uniform,GC,0.0372023809523942,0.860475202517395,440.999999999994,0.0432346926948684,0.999941937723361
Duplication8 - Duplication4,Scaled,GC,4.76190476190537,0.860475202517396,440.999999999966,5.53404066494188,1.16328894184115e-07
Duplication16 - Duplication8,Scaled,GC,2.15773809523817,0.860475202517397,440.99999999998,2.50761217630156,0.0343602329101428
Duplication32 - Duplication16,Scaled,GC,-0.520833333333397,0.860475202517397,440.99999999998,-0.605285697728014,0.879509285876056
Duplication8 - Duplication4,Adaptive,GC,4.24107142857157,0.860475202517396,440.999999999966,4.9287549672134,3.03696106684903e-06
Duplication16 - Duplication8,Adaptive,GC,2.34375000000004,0.860475202517395,440.99999999998,2.72378563977579,0.0191034260150131
Duplication32 - Duplication16,Adaptive,GC,1.04166666666674,0.860475202517397,440.99999999998,1.21057139545597,0.490582187575215
Duplication8 - Duplication4,Homogeneous,MC,-0.282738095237958,0.860475202517395,440.999999999881,-0.328583664480724,0.976624720760365
Duplication16 - Duplication8,Homogeneous,MC,0.11904761904772,0.860475202517395,440.999999999966,0.138351016623647,0.998124634689698
Duplication32 - Duplication16,Homogeneous,MC,0.193452380952311,0.860475202517395,440.999999999952,0.224820402013154,0.99215827990709
Duplication8 - Duplication4,Uniform,MC,6.95684523809521,0.860475202517397,440.999999999966,8.08488753393745,1.18793863634892e-14
Duplication16 - Duplication8,Uniform,MC,4.12946428571429,0.860475202517398,440.99999999998,4.79905088912867,8.97547431355505e-06
Duplication32 - Duplication16,Uniform,MC,-1.74851190476191,0.860475202517398,440.99999999998,-2.03203055665809,0.11214144781483
Duplication8 - Duplication4,Scaled,MC,5.46875000000015,0.860475202517397,440.999999999966,6.35549982614355,1.04583897098109e-09
Duplication16 - Duplication8,Scaled,MC,-1.00446428571429,0.860475202517399,440.99999999998,-1.16733670276103,0.519525991055776
Duplication32 - Duplication16,Scaled,MC,-0.0744047619047302,0.860475202517398,440.99999999998,-0.0864693853896687,0.99953766250479
Duplication8 - Duplication4,Adaptive,MC,3.16220238095248,0.860475202517396,440.999999999966,3.67494887906261,0.000711872739884711
Duplication16 - Duplication8,Adaptive,MC,2.26934523809523,0.860475202517395,440.999999999994,2.63731625438602,0.0237694438513918
Duplication32 - Duplication16,Adaptive,MC,-0.0372023809524071,0.860475202517395,440.999999999994,-0.0432346926948834,0.999941936674904
Loading
Loading