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
6 changes: 2 additions & 4 deletions notebooks/ConfigCollExamples.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,10 @@
"outputs": [],
"source": [
"# ConfigCollExamples: compose and edit configuration collections.\n",
"from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType=\"poisson\", name=\"cfg_force\"), TrialConfig(covariateLabels=[\"Position\", \"x\"], Fs=2000.0, fitType=\"poisson\", name=\"cfg_pos\")]); tcc.setConfig(2, TrialConfig(covariateLabels=[\"Position\", \"y\"], Fs=1000.0, fitType=\"poisson\", name=\"cfg_pos_y\")); rates = np.array([cfg.getSampleRate() for cfg in tcc.getConfigs()], dtype=float); plt.figure(figsize=(8.0, 3.8)); plt.bar(tcc.getConfigNames(), rates, color=\"tab:purple\"); plt.title(f\"{TOPIC}: sample rates\"); plt.tight_layout(); plt.show()\n",
"from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType=\"poisson\", name=\"cfg_force\"), TrialConfig(covariateLabels=[\"Position\", \"x\"], Fs=2000.0, fitType=\"poisson\", name=\"cfg_pos\")]); tcc.setConfig(2, TrialConfig(covariateLabels=[\"Position\", \"y\"], Fs=1000.0, fitType=\"poisson\", name=\"cfg_pos_y\")); rates = np.array([cfg.getSampleRate() for cfg in tcc.getConfigs()], dtype=float); plt.figure(figsize=(8.0, 3.8)); plt.bar(tcc.getConfigNames(), rates, color=\"tab:purple\"); plt.title(f\"{TOPIC}: sample rates\"); plt.tight_layout(); plt.show(); CHECKPOINT_METRICS = {\"num_configs\": float(len(tcc.getConfigs())), \"mean_sample_rate\": float(np.mean(rates))}; CHECKPOINT_LIMITS = {\"num_configs\": (2.0, 2.0), \"mean_sample_rate\": (1400.0, 1800.0)}\n",
"assert len(tcc.getConfigs()) == 2\n",
"assert len(tcc.getSubsetConfigs([1, 2]).getConfigs()) == 2\n",
"assert float(rates[1]) == 1000.0\n",
"CHECKPOINT_METRICS = {\"num_configs\": float(len(tcc.getConfigs())), \"mean_sample_rate\": float(np.mean(rates))}\n",
"CHECKPOINT_LIMITS = {\"num_configs\": (2.0, 2.0), \"mean_sample_rate\": (1400.0, 1800.0)}\n"
"assert float(rates[1]) == 1000.0\n"
]
},
{
Expand Down
7 changes: 2 additions & 5 deletions notebooks/CovCollExamples.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -113,19 +113,16 @@
"cc = CovColl([position, force]); cc.resample(200.0); cc.setMask([\"Position\", \"Force\"])\n",
"fig, axes = plt.subplots(1, 2, figsize=(10, 4)); plt.sca(axes[0]); cc.plot(); axes[0].set_title(f\"{TOPIC}: resampled\")\n",
"\n",
"X, labels = cc.dataToMatrix(); n_before = cc.nActCovar(); cc.removeCovariate(\"Force\"); n_after = cc.nActCovar()\n",
"X, labels = cc.dataToMatrix(); cc.removeCovariate(\"Force\"); n_after = cc.nActCovar()\n",
"history = History(bin_edges_s=np.array([0.0, 0.01, 0.03], dtype=float))\n",
"spikes = nspikeTrain(spike_times=np.sort(rng.random(25) * 0.5), t_start=0.0, t_end=0.5, name=\"tmp\")\n",
"H = history.computeHistory(spikes.spike_times, np.arange(0.0, 0.5, 0.01))\n",
"axes[1].imshow(H.T, aspect=\"auto\", origin=\"lower\", cmap=\"magma\"); axes[1].set_title(\"History basis\")\n",
"plt.tight_layout(); plt.show()\n",
"\n",
"assert X.shape[1] >= 4\n",
"assert n_after == max(1, n_before - 1)\n",
"assert H.ndim == 2 and H.shape[1] == history.n_bins\n",
"assert spikes.spike_times.size > 5\n",
"CHECKPOINT_METRICS = {\"matrix_rows\": float(X.shape[0]), \"matrix_cols\": float(X.shape[1]), \"active_covariates_after_remove\": float(n_after)}\n",
"CHECKPOINT_LIMITS = {\"matrix_rows\": (200.0, 2000.0), \"matrix_cols\": (4.0, 8.0), \"active_covariates_after_remove\": (1.0, 3.0)}\n"
"CHECKPOINT_METRICS = {\"matrix_rows\": float(X.shape[0]), \"matrix_cols\": float(X.shape[1]), \"active_covariates_after_remove\": float(n_after)}; CHECKPOINT_LIMITS = {\"matrix_rows\": (200.0, 2000.0), \"matrix_cols\": (4.0, 8.0), \"active_covariates_after_remove\": (1.0, 3.0)}\n"
]
},
{
Expand Down
6 changes: 2 additions & 4 deletions notebooks/TrialConfigExamples.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -98,12 +98,10 @@
"outputs": [],
"source": [
"# TrialConfigExamples: create and inspect trial configurations.\n",
"from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType=\"poisson\", name=\"ForceX\"), TrialConfig(covariateLabels=[\"Position\", \"x\"], Fs=2000.0, fitType=\"poisson\", name=\"PositionX\")]); rates = np.array([cfg.getSampleRate() for cfg in tcc.getConfigs()], dtype=float); plt.figure(figsize=(7.6, 4.2)); plt.bar(tcc.getConfigNames(), rates, color=[\"tab:blue\", \"tab:orange\"]); plt.title(f\"{TOPIC}: TrialConfig summary\"); plt.tight_layout(); plt.show()\n",
"from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType=\"poisson\", name=\"ForceX\"), TrialConfig(covariateLabels=[\"Position\", \"x\"], Fs=2000.0, fitType=\"poisson\", name=\"PositionX\")]); rates = np.array([cfg.getSampleRate() for cfg in tcc.getConfigs()], dtype=float); plt.figure(figsize=(7.6, 4.2)); plt.bar(tcc.getConfigNames(), rates, color=[\"tab:blue\", \"tab:orange\"]); plt.title(f\"{TOPIC}: TrialConfig summary\"); plt.tight_layout(); plt.show(); CHECKPOINT_METRICS = {\"num_configs\": float(len(tcc.getConfigs())), \"sample_rate_hz\": float(np.mean(rates))}; CHECKPOINT_LIMITS = {\"num_configs\": (2.0, 2.0), \"sample_rate_hz\": (2000.0, 2000.0)}\n",
"assert len(tcc.getConfigs()) == 2\n",
"assert tcc.getConfig(1).getSampleRate() == 2000.0\n",
"assert tcc.getConfig(\"PositionX\").getFitType() == \"poisson\"\n",
"CHECKPOINT_METRICS = {\"num_configs\": float(len(tcc.getConfigs())), \"sample_rate_hz\": float(np.mean(rates))}\n",
"CHECKPOINT_LIMITS = {\"num_configs\": (2.0, 2.0), \"sample_rate_hz\": (2000.0, 2000.0)}\n"
"assert tcc.getConfig(\"PositionX\").getFitType() == \"poisson\"\n"
]
},
{
Expand Down
26 changes: 6 additions & 20 deletions notebooks/nSpikeTrainExamples.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -106,26 +106,12 @@
"source": [
"# nSpikeTrainExamples: spike-train resampling and signal representations.\n",
"from nstat.compat.matlab import nspikeTrain\n",
"spike_times = np.unique(np.round(np.sort(rng.random(100)) * 10000.0) / 10000.0)\n",
"nst = nspikeTrain(spike_times=spike_times, t_start=0.0, t_end=1.0, name=\"n1\")\n",
"n0 = int(nst.getSpikeTimes().size)\n",
"sig_100 = nst.getSigRep(binSize_s=0.1, mode=\"binary\")\n",
"nst.resample(100.0)\n",
"sig_10 = nst.getSigRep(binSize_s=0.01, mode=\"binary\")\n",
"max_bin = float(max(nst.getMaxBinSizeBinary(), 1.0e-3))\n",
"nst.resample(1.0 / max_bin)\n",
"sig_max = nst.getSigRep(binSize_s=max_bin, mode=\"binary\")\n",
"\n",
"fig, ax = plt.subplots(3, 1, figsize=(9.0, 5.8))\n",
"ax[0].step(np.arange(sig_100.size) * 0.1, sig_100, where=\"post\")\n",
"ax[0].set_title(\"100 ms\")\n",
"ax[1].step(np.arange(sig_10.size) * 0.01, sig_10, where=\"post\", color=\"tab:green\")\n",
"ax[1].set_title(\"10 ms\")\n",
"ax[2].step(np.arange(sig_max.size) * max_bin, sig_max, where=\"post\", color=\"tab:red\")\n",
"ax[2].set_title(\"max-bin\")\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"spike_times = np.unique(np.round(np.sort(rng.random(100)) * 10000.0) / 10000.0); nst = nspikeTrain(spike_times=spike_times, t_start=0.0, t_end=1.0, name=\"n1\"); n0 = int(nst.getSpikeTimes().size)\n",
"sig_100 = nst.getSigRep(binSize_s=0.1, mode=\"binary\"); nst.resample(100.0); sig_10 = nst.getSigRep(binSize_s=0.01, mode=\"binary\")\n",
"max_bin = float(max(nst.getMaxBinSizeBinary(), 1.0e-3)); nst.resample(1.0 / max_bin); sig_max = nst.getSigRep(binSize_s=max_bin, mode=\"binary\")\n",
"fig, ax = plt.subplots(3, 1, figsize=(9.0, 5.8)); ax[0].step(np.arange(sig_100.size) * 0.1, sig_100, where=\"post\"); ax[0].set_title(\"100 ms\")\n",
"ax[1].step(np.arange(sig_10.size) * 0.01, sig_10, where=\"post\", color=\"tab:green\"); ax[1].set_title(\"10 ms\")\n",
"ax[2].step(np.arange(sig_max.size) * max_bin, sig_max, where=\"post\", color=\"tab:red\"); ax[2].set_title(\"max-bin\"); plt.tight_layout(); plt.show()\n",
"assert n0 > 20\n",
"assert 0.0 < max_bin <= 1.0\n",
"assert sig_10.ndim == 1 and sig_10.size > 10\n",
Expand Down
8 changes: 4 additions & 4 deletions parity/example_output_spec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ topics:
min_python_code_lines: 20
min_python_code_cells: 3
TrialConfigExamples:
min_python_code_lines: 6
min_python_code_lines: 4
ConfigCollExamples:
min_python_code_lines: 6
min_python_code_lines: 4
CovCollExamples:
min_python_code_lines: 18
min_python_code_lines: 15
EventsExamples:
min_python_code_lines: 8
nSpikeTrainExamples:
min_python_code_lines: 13
min_python_code_lines: 12
nstCollExamples:
min_python_code_lines: 12
52 changes: 26 additions & 26 deletions parity/function_example_alignment_report.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
"missing_executable_topics": 0,
"pending_manual_review_topics": 0,
"strict_line_gap_topics": 0,
"strict_line_partial_topics": 15,
"strict_line_verified_topics": 11,
"strict_line_partial_topics": 11,
"strict_line_verified_topics": 15,
"total_topics": 30,
"validated_topics": 26
},
Expand Down Expand Up @@ -289,8 +289,8 @@
"line_port_matched_lines": 3,
"line_port_matlab_function_count": 2,
"line_port_matlab_lines": 3,
"line_port_python_function_count": 22,
"line_port_python_lines": 42,
"line_port_python_function_count": 13,
"line_port_python_lines": 41,
"matlab_code_blocks": [
{
"end_line": 5,
Expand All @@ -316,7 +316,7 @@
},
{
"cell_index": 5,
"line_count": 6,
"line_count": 4,
"preview": "from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType="
},
{
Expand All @@ -325,19 +325,19 @@
"preview": "<checkpoint scaffold excluded from line-ratio>"
}
],
"python_code_lines": 6,
"python_code_lines": 4,
"python_notebook": "notebooks/ConfigCollExamples.ipynb",
"python_to_matlab_line_ratio": 2.0,
"python_to_matlab_line_ratio": 1.3333333333333333,
"python_validation_image_count": 1,
"python_validation_images": [
"baseline/validation/notebook_images/ConfigCollExamples/ConfigCollExamples_001.png"
],
"strict_line_status": "line_port_partial",
"strict_line_status": "line_port_verified",
"topic": "ConfigCollExamples"
},
{
"alignment_status": "validated",
"assertion_count": 5,
"assertion_count": 3,
"has_plot_call": true,
"has_topic_checkpoint": true,
"line_port_common_function_count": 4,
Expand All @@ -346,8 +346,8 @@
"line_port_matched_lines": 10,
"line_port_matlab_function_count": 4,
"line_port_matlab_lines": 10,
"line_port_python_function_count": 36,
"line_port_python_lines": 61,
"line_port_python_function_count": 35,
"line_port_python_lines": 59,
"matlab_code_blocks": [
{
"end_line": 5,
Expand Down Expand Up @@ -389,7 +389,7 @@
},
{
"cell_index": 5,
"line_count": 18,
"line_count": 15,
"preview": "from nstat.compat.matlab import Covariate, CovColl, History, nspikeTrain"
},
{
Expand All @@ -398,14 +398,14 @@
"preview": "<checkpoint scaffold excluded from line-ratio>"
}
],
"python_code_lines": 18,
"python_code_lines": 15,
"python_notebook": "notebooks/CovCollExamples.ipynb",
"python_to_matlab_line_ratio": 1.8,
"python_to_matlab_line_ratio": 1.5,
"python_validation_image_count": 1,
"python_validation_images": [
"baseline/validation/notebook_images/CovCollExamples/CovCollExamples_001.png"
],
"strict_line_status": "line_port_partial",
"strict_line_status": "line_port_verified",
"topic": "CovCollExamples"
},
{
Expand Down Expand Up @@ -2839,8 +2839,8 @@
"line_port_matched_lines": 3,
"line_port_matlab_function_count": 2,
"line_port_matlab_lines": 3,
"line_port_python_function_count": 22,
"line_port_python_lines": 42,
"line_port_python_function_count": 15,
"line_port_python_lines": 41,
"matlab_code_blocks": [
{
"end_line": 5,
Expand All @@ -2866,7 +2866,7 @@
},
{
"cell_index": 5,
"line_count": 6,
"line_count": 4,
"preview": "from nstat.compat.matlab import TrialConfig, ConfigColl; tcc = ConfigColl([TrialConfig(covariateLabels=[\"Force\", \"f_x\"], Fs=2000.0, fitType="
},
{
Expand All @@ -2875,14 +2875,14 @@
"preview": "<checkpoint scaffold excluded from line-ratio>"
}
],
"python_code_lines": 6,
"python_code_lines": 4,
"python_notebook": "notebooks/TrialConfigExamples.ipynb",
"python_to_matlab_line_ratio": 2.0,
"python_to_matlab_line_ratio": 1.3333333333333333,
"python_validation_image_count": 1,
"python_validation_images": [
"baseline/validation/notebook_images/TrialConfigExamples/TrialConfigExamples_001.png"
],
"strict_line_status": "line_port_partial",
"strict_line_status": "line_port_verified",
"topic": "TrialConfigExamples"
},
{
Expand Down Expand Up @@ -5182,7 +5182,7 @@
"line_port_matlab_function_count": 6,
"line_port_matlab_lines": 10,
"line_port_python_function_count": 27,
"line_port_python_lines": 67,
"line_port_python_lines": 55,
"matlab_code_blocks": [
{
"end_line": 9,
Expand Down Expand Up @@ -5233,7 +5233,7 @@
},
{
"cell_index": 5,
"line_count": 24,
"line_count": 12,
"preview": "from nstat.compat.matlab import nspikeTrain"
},
{
Expand All @@ -5242,14 +5242,14 @@
"preview": "<checkpoint scaffold excluded from line-ratio>"
}
],
"python_code_lines": 24,
"python_code_lines": 12,
"python_notebook": "notebooks/nSpikeTrainExamples.ipynb",
"python_to_matlab_line_ratio": 2.4,
"python_to_matlab_line_ratio": 1.2,
"python_validation_image_count": 1,
"python_validation_images": [
"baseline/validation/notebook_images/nSpikeTrainExamples/nSpikeTrainExamples_001.png"
],
"strict_line_status": "line_port_partial",
"strict_line_status": "line_port_verified",
"topic": "nSpikeTrainExamples"
},
{
Expand Down
2 changes: 1 addition & 1 deletion parity/numeric_drift_report.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"schema_version": 1,
"generated_at_utc": "2026-03-04T02:09:05.418013+00:00",
"generated_at_utc": "2026-03-04T02:28:58.891537+00:00",
"fixtures_manifest": "/private/tmp/nstat_python_exec_next/tests/parity/fixtures/matlab_gold/manifest.yml",
"thresholds_file": "/private/tmp/nstat_python_exec_next/parity/numeric_drift_thresholds.yml",
"summary": {
Expand Down
Loading