import argparse
[docs]
def main():
parser = argparse.ArgumentParser()
# dataset synthesis / loading settings
parser.add_argument('--dataset', type=str, default='speechcommands',
choices=['speechcommands', 'mnist', 'mante'])
parser.add_argument('--top_n', type=int, default=10)
parser.add_argument('--nbatch', type=int, default=100)
parser.add_argument('--seqlen', type=int, default=200000)
parser.add_argument('--stoch', type=str, default='stim', choices=['stim', 'delay', 'none'], )
parser.add_argument('--dim_ring', type=int, default=6)
parser.add_argument('--sigma', type=float, default=1)
# input preprocessing
parser.add_argument('--center', action='store_true')
parser.add_argument('--unit_std', action='store_true')
parser.add_argument('--orthgonalize', action='store_true')
parser.add_argument('--whiten', action='store_true')
parser.add_argument('--zero_phase', action='store_true')
parser.add_argument('--skip_normed_trial', action='store_true')
# tau extraction methods
parser.add_argument('--skip_spaced', action='store_true')
parser.add_argument('--num_tau0', type=int, default=10)
parser.add_argument('--filt', action='store_true')
parser.add_argument('--first_unstream', action='store_true')
parser.add_argument('--flattening_method', type=str, default='flat')
# network and heterogeneity setup
parser.add_argument('--Nnet', type=int, default=10)
parser.add_argument('--N', type=int, default=250)
parser.add_argument('--p', type=float, default=.1)
parser.add_argument('--J', type=float, default=1.)
parser.add_argument('--Ju', type=float, default=1.)
parser.add_argument('--af', type=str, default='tanh')
parser.add_argument('--h', type=str, default='uniform')
parser.add_argument('--h_is_additive', action='store_true')
parser.add_argument('--dt', type=float, default=1.)
# parser.add_argument('--tau_min', type=float, default=0.)
# parser.add_argument('--tau_max', type=float, default=1.)
# pooling method
parser.add_argument('--pooling', type=list, default=['go', 'avg', 'snapshot'])
parser.add_argument('--go_length', type=int, default=10)
parser.add_argument('--nsnapshot', type=int, default=10)
# training settings
parser.add_argument('--njobs', type=int, default=2)
parser.add_argument('--cv', type=int, default=0)
parser.add_argument('--Creg', type=float, nargs='+', default=[0.01, 0.1, 1., 10, 100])
parser.add_argument('--clf_name', type=str, default='logreg')
# plotting
parser.add_argument('--skip_plot_uvx', action='store_true')
parser.add_argument('--skip_plot_man', action='store_true')
# naming
parser.add_argument('--name', type=str, default='test_cli')
parser.add_argument('--seed', type=int, default=1234)
args = parser.parse_args()
demo_cfg = dict(
# dataset synthesis / loading settings
dataset_name=args.dataset,
top_n = args.top_n,
Nbatch=args.nbatch,
seq_len=args.seqlen,
dim_ring=args.dim_ring,
sigma = args.sigma,
# input preprocessing
normed_trial= not args.skip_normed_trial,
center=args.center,
unit_std=args.unit_std,
orthgonalize=args.orthgonalize,
zero_phase=args.zero_phase,
whiten=args.whiten,
# tau extraction methods
num_tau0 = args.num_tau0,
filt=args.filt,
first_unstream=args.first_unstream,
flattening_method=args.flattening_method,
# network and heterogeneity set up
N = args.N,
p = args.p,
J = args.J,
Ju= args.Ju,
af=args.af,
dt=args.dt,
h = args.h,
h_is_multiplicative = not args.h_is_additive,
# tau_min = args.tau_min,
# tau_max = args.tau_max,
# pooling
pooling_funcs = args.pooling,
golength = args.go_length,
nsnapshot = args.nsnapshot,
# training
n_jobs=args.njobs,
cv=args.cv,
Creg = args.Creg,
clf_name = args.clf_name,
# naming, seed, and the nubmer of realizations
prefix = args.name,
seed = args.seed,
Nnet = args.Nnet,
# plotting
plot_uvx = not args.skip_plot_uvx,
plot_man = not args.skip_plot_man,
)
# machine learning demos
if args.dataset in ['mnist', 'speechcommands']:
import ml
if not args.skip_spaced:
ml.run_spaced_tau0_multinet(**demo_cfg)
else:
ml.run_multinet(**demo_cfg)
# neuroscience demos
elif args.dataset == 'mante':
import ns
if args.stoch == 'stim':
demo_cfg['stim_period'] = [50, 10, 250]
demo_cfg['delay_period']= 100
elif args.stoch == 'delay':
demo_cfg['stim_period'] = 100
demo_cfg['delay_period']= [50, 10, 250]
elif args.stoch == 'none':
demo_cfg['stim_period'] = 100
demo_cfg['delay_period']= 1
if not args.skip_spaced:
ns.run_spaced_tau0_multinet(**demo_cfg)
else:
ns.run_multinet(**demo_cfg)
else:
raise ValueError(f'Dataset name {args.dataset} not recognized.')
if __name__ == '__main__':
main()