t_noflow = 10 # in sec t_flow = 50 # in sec binsize = 0.1 current = 8 # in cm/s. n_animals = 100 # generate data track_data = {} track_data['no_ll'] = [] for k in range(0, n_animals): ipos = np.array([np.random.uniform(0,.68, 1), np.random.uniform(0,.15,1), np.random.uniform(0,.15,1)]).flatten() data = wlk.randwalk(t_noflow, binsize, 0, ipos, latline = False, flow_version = FLOW_DYNAMICS) data = wlk.randwalk(t_flow, binsize, current, data, latline = False, flow_version = FLOW_DYNAMICS) data['track'] = data['track'] * 100 track_data['no_ll'].append(data) track_data['ll'] = [] for k in range(0, n_animals): ipos = np.array([np.random.uniform(0,.68, 1), np.random.uniform(0,.15,1), np.random.uniform(0,.15,1)]).flatten() data = wlk.randwalk(t_noflow, binsize, 0, ipos, latline = True, flow_version = FLOW_DYNAMICS) data = wlk.randwalk(t_flow, binsize, current, data, latline = True, flow_version = FLOW_DYNAMICS) data['track'] = data['track'] * 100 track_data['ll'].append(data) flow = np.ones(track_data['no_ll'][0]['track'].shape[0],'int') * current flow[0: (float(t_noflow)/ binsize)] = 0
'lateral_line':np.zeros((TIME/binsize*numfrog)), 'state':np.zeros((TIME/binsize*numfrog)) } frogData_F = {'time': np.zeros((TIME/binsize*numfrog)), 'track': np.zeros((TIME/binsize*numfrog,3)), 'velocity':np.zeros((TIME/binsize*numfrog,3)), 'orientation':np.zeros((TIME/binsize*numfrog)), 'lateral_line':np.zeros((TIME/binsize*numfrog)), 'state':np.zeros((TIME/binsize*numfrog)) } for j in range(0,numfrog): #(SIMLENGTH,BINSIZE,FLOW_SPEED,IPOS,LATLINE,VERSION) - Version refers to flow dynamics. run_data_NF = wlk.randwalk(TIME,binsize,0, np.array([0.34, 0.075, 0.15]),latline = LATLINE,flow_version = FLOW_DYNAMICS) # there is likely a more elegant way to pack these data up. frogData_NF['time'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['time'] frogData_NF['track'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['track'] frogData_NF['velocity'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['velocity'] frogData_NF['orientation'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['orientation'] frogData_NF['lateral_line'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['lateral_line'] frogData_NF['state'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_NF['state'] frogEndPoint = frogData_NF['track'][-1:,:] run_data_F = wlk.randwalk(TIME,binsize, FLOWSPEED, frogEndPoint,latline = LATLINE,flow_version = FLOW_DYNAMICS) frogData_F['time'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_F['time'] frogData_F['track'][(j+1)*froglen-froglen:(j+1)*froglen] = run_data_F['track']
frog1_F = frog1_F[index] frog1_F = frog1_F[0::DOWNSAMPLE_RATE] # reset the simulation length to reflect data t_flow = len(frog1_F)*binsize*DOWNSAMPLE_RATE # Append data into one structure: frog1 = np.append(frog1_NF,frog1_F,axis=0) frog1 = {'track': frog1, 'state': None} FROG1NAME = 'Observed Data' else: # generate all data w/ lateral line switched off LATLINE = False frog1 = wlk.randwalk(t_noflow, binsize, 0, np.array([0.37, 0.075, 0.15]), latline = LATLINE, flow_version = FLOW_DYNAMICS) frog1 = wlk.randwalk(t_flow, binsize, current, frog1,latline = LATLINE, flow_version = FLOW_DYNAMICS) frog1['track'] = frog1['track']*100 FROG1NAME = 'NO Lateral Line Model' # downsample for data in frog1: frog1[data] = frog1[data][0::DOWNSAMPLE_RATE] # generate all data w/ lateral line switched on - First compute at high resolution before downsampling LATLINE = True frog2 = wlk.randwalk(t_noflow, binsize, 0, np.array([0.34, 0.075, 0.15]), latline = LATLINE, flow_version = FLOW_DYNAMICS) frog2 = wlk.randwalk(t_flow, binsize, current, frog2,latline = LATLINE, flow_version = FLOW_DYNAMICS) frog2['track'] = frog2['track']*100 state_colors = ['blue', 'black', 'red']