Compact xforms
xforms can be used to compactly represent a whole workflow.
[1]:
from pathlib import Path
import nems0.recording as recording
import nems0.uri
import nems0.xforms as xforms
[nems.configs.defaults INFO] Saving log messages to /tmp/nems\NEMS 2020-05-28 115742.log
Configuration
[2]:
# get the data and results paths
results_dir = nems.get_setting('NEMS_RESULTS_DIR')
signals_dir = nems.get_setting('NEMS_RECORDINGS_DIR')
[3]:
# download some demo data
recording.get_demo_recordings(signals_dir)
datafile = Path(signals_dir) / 'TAR010c-18-1.tgz'
Generate the Modelspec
[4]:
modelkeywords = 'dlog-wc.18x2.g-fir.2x15-lvl.1-dexp.1'
meta = {'cellids': ['TAR010c-18-1'], 'batch': 271, 'modelname': modelkeywords}
[5]:
xfspec = [['load_recordings', {'recording_uri_list': [str(datafile)], 'meta':meta}],
['split_val_and_average_reps', {'epoch_regex': '^STIM_'}],
['init_from_keywords', {'keywordstring': modelkeywords}],
['fit_basic_init', {}],
['fit_basic', {}],
['predict', {}],
['add_summary_statistics', {}],
['plot_summary', {}]]
Run the Analysis
[6]:
ctx, log_xf = xforms.evaluate(xfspec)
[nems.xforms INFO] Evaluating: load_recordings
[nems.xforms INFO] Extracting cellid(s) None
[nems.preprocessing INFO] Adding to epoch_onsets: TRIAL with shift = 0
[nems.xforms INFO] Evaluating: split_val_and_average_reps
[nems.xforms INFO] Evaluating: init_from_keywords
[nems.initializers INFO] kw: dlog
[nems.initializers INFO] kw: wc.18x2.g
[nems.initializers INFO] kw: fir.2x15
[nems.initializers INFO] kw: lvl.1
[nems.initializers INFO] kw: dexp.1
[nems.initializers INFO] Setting modelspec[0] input to stim
[nems.xforms INFO] Evaluating: fit_basic_init
[nems.initializers INFO] prefit_LN parameters: tol=3.16e-06 max_iter=1500
[nems.initializers INFO] target_module: ['levelshift', 'relu'] found at modelspec[3].
[nems.initializers INFO] Mod 3 (nems.modules.levelshift.levelshift) initializing level to resp mean 0.207
[nems.initializers INFO] resp has 1 channels
[nems.initializers INFO] Fit: [0 1 2 3]
[nems.initializers INFO] Freeze: []
[nems.initializers INFO] Exclude: [4.]
[nems.initializers INFO] Excluding module 4 (nems.modules.nonlinearity.double_exponential)
[nems.analysis.fit_basic INFO] Data len pre-mask: 49500
[nems.analysis.fit_basic INFO] Data len post-mask: 49500
[nems.modelspec INFO] Freezing fast rec at start=0
[nems.fitters.fitter INFO] options {'ftol': 3.162277660168379e-06, 'maxiter': 1500, 'maxfun': 15000}
[nems.fitters.fitter INFO] Start sigma: [ 0. 0.4167 0.5833 0.3192 0.3192 0. 0.1 -0.05 0.
0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0.1 -0.05 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0.2074]
[nems.analysis.cost_functions INFO] Eval #100. E=0.969591
[nems.analysis.cost_functions INFO] Eval #200. E=0.936257
[nems.analysis.cost_functions INFO] Eval #300. E=0.923534
[nems.analysis.cost_functions INFO] Eval #400. E=0.914845
[nems.analysis.cost_functions INFO] Eval #500. E=0.907234
[nems.analysis.cost_functions INFO] Eval #600. E=0.902652
[nems.analysis.cost_functions INFO] Eval #700. E=0.900209
[nems.analysis.cost_functions INFO] Eval #800. E=0.896979
[nems.analysis.cost_functions INFO] Eval #900. E=0.892012
[nems.analysis.cost_functions INFO] Eval #1000. E=0.890533
[nems.analysis.cost_functions INFO] Eval #1100. E=0.888487
[nems.analysis.cost_functions INFO] Eval #1200. E=0.888105
[nems.analysis.cost_functions INFO] Eval #1300. E=0.886851
[nems.analysis.cost_functions INFO] Eval #1400. E=0.892400
[nems.analysis.cost_functions INFO] Eval #1500. E=0.885467
[nems.analysis.cost_functions INFO] Eval #1600. E=0.893602
[nems.analysis.cost_functions INFO] Eval #1700. E=0.885210
[nems.analysis.cost_functions INFO] Eval #1800. E=0.884890
[nems.analysis.cost_functions INFO] Eval #1900. E=0.884963
[nems.analysis.cost_functions INFO] Eval #2000. E=0.884744
[nems.analysis.cost_functions INFO] Eval #2100. E=0.884670
[nems.analysis.cost_functions INFO] Eval #2200. E=0.884623
[nems.analysis.cost_functions INFO] Eval #2300. E=0.884562
[nems.analysis.cost_functions INFO] Eval #2400. E=0.884507
[nems.analysis.cost_functions INFO] Eval #2500. E=0.884304
[nems.analysis.cost_functions INFO] Eval #2600. E=0.884195
[nems.analysis.cost_functions INFO] Eval #2700. E=0.884168
[nems.analysis.cost_functions INFO] Eval #2800. E=0.884115
[nems.analysis.cost_functions INFO] Eval #2900. E=0.884045
[nems.analysis.cost_functions INFO] Eval #3000. E=0.883892
[nems.analysis.cost_functions INFO] Eval #3100. E=0.883873
[nems.analysis.cost_functions INFO] Eval #3200. E=0.883811
[nems.analysis.cost_functions INFO] Eval #3300. E=0.883768
[nems.analysis.cost_functions INFO] Eval #3400. E=0.883687
[nems.analysis.cost_functions INFO] Eval #3500. E=0.883603
[nems.analysis.cost_functions INFO] Eval #3600. E=0.883502
[nems.analysis.cost_functions INFO] Eval #3700. E=0.883442
[nems.fitters.fitter INFO] Starting error: 0.972554 -- Final error: 0.883439
[nems.fitters.fitter INFO] Final sigma: [-0.2475 0.0259 0.34 0.326 0.2071 0.2028 0.4318 0.2361 -0.111
-0.1094 -0.1346 -0.0323 -0.0323 -0.0379 -0.0195 0.0254 0.0268 0.0076
-0.0148 -0.0856 -0.1761 -0.1915 0.0175 0.0387 0.0993 -0.0074 0.025
-0.0016 0.0266 -0.007 -0.0229 -0.0404 -0.0241 0.0059 0.0319 0.1303]
[nems.analysis.fit_basic INFO] Delta error: 0.972554 - 0.883439 = -8.911500e-02
[nems.initializers INFO] Found module 4 (double_exponential) for subset prefit
[nems.initializers INFO] Fit: [4]
[nems.initializers INFO] Freeze: [0 1 2 3]
[nems.initializers INFO] Exclude: []
[nems.initializers INFO] Freezing phi for module 0 (nems.modules.nonlinearity.dlog)
[nems.initializers INFO] Freezing phi for module 1 (nems.modules.weight_channels.gaussian)
[nems.initializers INFO] Freezing phi for module 2 (nems.modules.fir.basic)
[nems.initializers INFO] Freezing phi for module 3 (nems.modules.levelshift.levelshift)
[nems.analysis.fit_basic INFO] Data len pre-mask: 49500
[nems.analysis.fit_basic INFO] Data len post-mask: 49500
[nems.modelspec INFO] Freezing fast rec at start=4
[nems.fitters.fitter INFO] options {'ftol': 3.162277660168379e-06, 'maxiter': 700, 'maxfun': 7000}
[nems.fitters.fitter INFO] Start sigma: [0.692 0. 1.3263 0.2069]
[nems.analysis.cost_functions INFO] Eval #100. E=0.859099
[nems.fitters.fitter INFO] Starting error: 0.908151 -- Final error: 0.859019
[nems.fitters.fitter INFO] Final sigma: [2.1329 0.0947 0.9031 0.7141]
[nems.analysis.fit_basic INFO] Delta error: 0.908151 - 0.859019 = -4.913194e-02
[nems.xforms INFO] Evaluating: fit_basic
[nems.xforms INFO] ----------------------------------------------------
[nems.xforms INFO] Fitting: fit 1/1, fold 1/1 (tol=1.00e-07, max_iter=1000)
[nems.analysis.fit_basic INFO] Data len pre-mask: 49500
[nems.analysis.fit_basic INFO] Data len post-mask: 49500
[nems.modelspec INFO] Freezing fast rec at start=0
[nems.fitters.fitter INFO] options {'ftol': 1e-07, 'maxiter': 1000, 'maxfun': 10000}
[nems.fitters.fitter INFO] Start sigma: [-2.4750e-01 2.5900e-02 3.4000e-01 3.2600e-01 2.0710e-01 2.0280e-01
4.3180e-01 2.3610e-01 -1.1100e-01 -1.0940e-01 -1.3460e-01 -3.2300e-02
-3.2300e-02 -3.7900e-02 -1.9500e-02 2.5400e-02 2.6800e-02 7.6000e-03
-1.4800e-02 -8.5600e-02 -1.7610e-01 -1.9150e-01 1.7500e-02 3.8700e-02
9.9300e-02 -7.4000e-03 2.5000e-02 -1.6000e-03 2.6600e-02 -7.0000e-03
-2.2900e-02 -4.0400e-02 -2.4100e-02 5.9000e-03 3.1900e-02 1.3030e-01
2.1329e+00 9.4700e-02 9.0310e-01 7.1410e-01]
[nems.analysis.cost_functions INFO] Eval #100. E=1.002096
[nems.analysis.cost_functions INFO] Eval #200. E=0.858397
[nems.analysis.cost_functions INFO] Eval #300. E=0.856455
[nems.analysis.cost_functions INFO] Eval #400. E=0.854488
[nems.analysis.cost_functions INFO] Eval #500. E=0.852750
[nems.analysis.cost_functions INFO] Eval #600. E=0.851971
[nems.analysis.cost_functions INFO] Eval #700. E=0.850883
[nems.analysis.cost_functions INFO] Eval #800. E=0.849784
[nems.analysis.cost_functions INFO] Eval #900. E=0.849510
[nems.analysis.cost_functions INFO] Eval #1000. E=0.848484
[nems.analysis.cost_functions INFO] Eval #1100. E=0.847361
[nems.analysis.cost_functions INFO] Eval #1200. E=0.846035
[nems.analysis.cost_functions INFO] Eval #1300. E=0.845979
[nems.analysis.cost_functions INFO] Eval #1400. E=0.845716
[nems.analysis.cost_functions INFO] Eval #1500. E=0.845663
[nems.analysis.cost_functions INFO] Eval #1600. E=0.845409
[nems.analysis.cost_functions INFO] Eval #1700. E=0.845612
[nems.analysis.cost_functions INFO] Eval #1800. E=0.844752
[nems.analysis.cost_functions INFO] Eval #1900. E=0.844602
[nems.analysis.cost_functions INFO] Eval #2000. E=0.844394
[nems.analysis.cost_functions INFO] Eval #2100. E=0.844174
[nems.analysis.cost_functions INFO] Eval #2200. E=0.843957
[nems.analysis.cost_functions INFO] Eval #2300. E=0.850596
[nems.analysis.cost_functions INFO] Eval #2400. E=0.843669
[nems.analysis.cost_functions INFO] Eval #2500. E=0.843656
[nems.analysis.cost_functions INFO] Eval #2600. E=0.843381
[nems.analysis.cost_functions INFO] Eval #2700. E=0.843192
[nems.analysis.cost_functions INFO] Eval #2800. E=0.843146
[nems.analysis.cost_functions INFO] Eval #2900. E=0.843049
[nems.analysis.cost_functions INFO] Eval #3000. E=0.842972
[nems.analysis.cost_functions INFO] Eval #3100. E=0.842839
[nems.analysis.cost_functions INFO] Eval #3200. E=0.842654
[nems.analysis.cost_functions INFO] Eval #3300. E=0.842980
[nems.analysis.cost_functions INFO] Eval #3400. E=0.842568
[nems.analysis.cost_functions INFO] Eval #3500. E=0.842503
[nems.analysis.cost_functions INFO] Eval #3600. E=0.842493
[nems.analysis.cost_functions INFO] Eval #3700. E=0.842447
[nems.analysis.cost_functions INFO] Eval #3800. E=0.842432
[nems.analysis.cost_functions INFO] Eval #3900. E=0.842373
[nems.analysis.cost_functions INFO] Eval #4000. E=0.842371
[nems.analysis.cost_functions INFO] Eval #4100. E=0.842366
[nems.analysis.cost_functions INFO] Eval #4200. E=0.842360
[nems.analysis.cost_functions INFO] Eval #4300. E=0.842359
[nems.analysis.cost_functions INFO] Eval #4400. E=0.842347
[nems.analysis.cost_functions INFO] Eval #4500. E=0.842335
[nems.analysis.cost_functions INFO] Eval #4600. E=0.842325
[nems.analysis.cost_functions INFO] Eval #4700. E=0.842325
[nems.analysis.cost_functions INFO] Eval #4800. E=0.842320
[nems.analysis.cost_functions INFO] Eval #4900. E=0.842310
[nems.analysis.cost_functions INFO] Eval #5000. E=0.842308
[nems.analysis.cost_functions INFO] Eval #5100. E=0.842297
[nems.analysis.cost_functions INFO] Eval #5200. E=0.842290
[nems.analysis.cost_functions INFO] Eval #5300. E=0.842810
[nems.analysis.cost_functions INFO] Eval #5400. E=0.842282
[nems.analysis.cost_functions INFO] Eval #5500. E=0.843291
[nems.analysis.cost_functions INFO] Eval #5600. E=0.842258
[nems.analysis.cost_functions INFO] Eval #5700. E=0.842256
[nems.analysis.cost_functions INFO] Eval #5800. E=0.842224
[nems.analysis.cost_functions INFO] Eval #5900. E=0.842233
[nems.analysis.cost_functions INFO] Eval #6000. E=0.842182
[nems.analysis.cost_functions INFO] Eval #6100. E=0.842171
[nems.analysis.cost_functions INFO] Eval #6200. E=0.842150
[nems.analysis.cost_functions INFO] Eval #6300. E=0.842130
[nems.analysis.cost_functions INFO] Eval #6400. E=0.842094
[nems.analysis.cost_functions INFO] Eval #6500. E=0.842092
[nems.analysis.cost_functions INFO] Eval #6600. E=0.842068
[nems.analysis.cost_functions INFO] Eval #6700. E=0.842045
[nems.analysis.cost_functions INFO] Eval #6800. E=0.842044
[nems.analysis.cost_functions INFO] Eval #6900. E=0.842022
[nems.analysis.cost_functions INFO] Eval #7000. E=0.841997
[nems.analysis.cost_functions INFO] Eval #7100. E=0.841969
[nems.analysis.cost_functions INFO] Eval #7200. E=0.841965
[nems.analysis.cost_functions INFO] Eval #7300. E=0.842455
[nems.analysis.cost_functions INFO] Eval #7400. E=0.841950
[nems.analysis.cost_functions INFO] Eval #7500. E=0.841942
[nems.analysis.cost_functions INFO] Eval #7600. E=0.841936
[nems.analysis.cost_functions INFO] Eval #7700. E=0.841932
[nems.analysis.cost_functions INFO] Eval #7800. E=0.841914
[nems.analysis.cost_functions INFO] Eval #7900. E=0.841909
[nems.analysis.cost_functions INFO] Eval #8000. E=0.841902
[nems.analysis.cost_functions INFO] Eval #8100. E=0.841923
[nems.analysis.cost_functions INFO] Eval #8200. E=0.841899
[nems.analysis.cost_functions INFO] Eval #8300. E=0.841882
[nems.analysis.cost_functions INFO] Eval #8400. E=0.841875
[nems.analysis.cost_functions INFO] Eval #8500. E=0.841871
[nems.analysis.cost_functions INFO] Eval #8600. E=0.841869
[nems.analysis.cost_functions INFO] Eval #8700. E=0.841868
[nems.analysis.cost_functions INFO] Eval #8800. E=0.841866
[nems.analysis.cost_functions INFO] Eval #8900. E=0.841863
[nems.analysis.cost_functions INFO] Eval #9000. E=0.841849
[nems.analysis.cost_functions INFO] Eval #9100. E=0.841845
[nems.analysis.cost_functions INFO] Eval #9200. E=0.841836
[nems.analysis.cost_functions INFO] Eval #9300. E=0.841826
[nems.analysis.cost_functions INFO] Eval #9400. E=0.841936
[nems.analysis.cost_functions INFO] Eval #9500. E=0.841805
[nems.analysis.cost_functions INFO] Eval #9600. E=0.841802
[nems.analysis.cost_functions INFO] Eval #9700. E=0.841799
[nems.analysis.cost_functions INFO] Eval #9800. E=0.841798
[nems.analysis.cost_functions INFO] Eval #9900. E=0.841788
[nems.analysis.cost_functions INFO] Eval #10000. E=0.841786
[nems.fitters.fitter INFO] Starting error: 0.859019 -- Final error: 0.841786
[nems.fitters.fitter INFO] Final sigma: [-1.2434e+00 1.0810e-01 5.6900e-01 5.9780e-01 2.3680e-01 -1.0700e-02
5.4380e-01 2.8970e-01 -3.1360e-01 -8.2100e-02 -1.1800e-01 3.1000e-02
-5.9000e-03 4.3500e-02 -5.6500e-02 -4.0000e-04 4.1800e-02 -1.9500e-02
1.4100e-02 -4.9600e-02 1.5700e-02 -3.6470e-01 -1.3670e-01 2.7000e-01
1.1620e-01 1.5700e-02 -6.9800e-02 -3.3800e-02 -3.2300e-02 3.5100e-02
6.1000e-03 -4.4300e-02 -1.5700e-02 4.0000e-04 7.7000e-03 5.9200e-02
2.3537e+00 1.1220e-01 8.8440e-01 7.8510e-01]
[nems.analysis.fit_basic INFO] Delta error: 0.859019 - 0.841786 = -1.723298e-02
[nems.xforms INFO] Evaluating: predict
[nems.xforms INFO] Evaluating: add_summary_statistics
[nems.xforms INFO] Evaluating: plot_summary
[nems.modelspec INFO] Quickplot: no epoch specified, falling back to "REFERENCE"
[nems.modelspec WARNING] Quickplot: no valid epochs matching REFERENCE. Will not subset data.
[nems.modelspec INFO] plotting row 1/6
[nems.modelspec INFO] plotting row 2/6
[nems.modelspec INFO] plotting row 3/6
[nems.modelspec INFO] plotting row 4/6
[nems.modelspec INFO] plotting row 5/6
[nems.modelspec INFO] plotting row 6/6
[nems.modelspec INFO] Quickplot: generated fig with title "Cell: UNKNOWN, Batch: 271, None #0 dlog-wc.18x2.g-fir.2x15-lvl.1-dexp.1"
bin range: 0-500
[nems.xforms INFO] Done (re-)evaluating xforms.