def plot_strain_AS_structure(experiment, level, group, ax, AS_list, day, num_AS, num_mins): E = experiment colors = [E.fcolors[x][0] for x in ['F', 'W', 'M']] lw = 1.5 if level == 'mouse' else .5 k = 0 for fwm_arrays in AS_list: ypos = len(AS_list) - k col = 0 for arr in fwm_arrays: for xs in arr: ax.plot(xs / 60, [ypos, ypos], lw=lw, color=colors[col]) col += 1 print_progress(k, len(AS_list)) k += 1 print set_layout(ax, level, num_mins) ax.set_title('%s, day%d' % (E.strain_names[group.number], day), fontsize=10) if day == E.transition1DayNumber: ax.text(.7, .7, 'diet\ntransition', fontsize=10, transform=ax.transAxes)
def _check_bout_counts_in_bins(experiment, act, vec_type='12bins'): num_bins = 12 print "%s, %s, %dbins" % (_check_bout_counts_in_bins.__name__, act, num_bins) arr = np.zeros((experiment.num_md_ok, num_bins + 3)) cnt = 0 for group in experiment.groups: for mouse in group.individuals: if not mouse.ignored: for MD in mouse.mouse_days: if MD.dayNumber in experiment.daysToUse: if not MD.ignored: arr[cnt, : 3] = MD.groupNumber, MD.mouseNumber, MD.dayNumber arr[cnt, 3:] = MD._check_bout_counts_in_bins(act) my_utils.print_progress(cnt, experiment.num_md_ok) cnt += 1 dirname = experiment.features_dir + 'vectors/_bout_counts_check/' import os if not os.path.isdir(dirname): os.makedirs(dirname) np.save(dirname + '%s_bout_counts_check' % act, arr) return arr
def plot_mouse_AS_structure(experiment, level, mouse, ax, colors, EARLY=False, num_mins=15, days=None, cycle='24H'): E = experiment days_to_use = E.daysToUse if days is None else days AS_list = mouse.generate_AS_structure(days=days_to_use, cycle=cycle) lws = [1.5, 1.5, 1.5, .3] if level == 'mouse' else [.5, .5, .5, .1] k = 0 for fwmo_arrays in AS_list: ypos = len(AS_list) - k col = 0 for arr in fwmo_arrays: for xs in arr: ax.plot(xs / 60, [ypos, ypos], lw=lws[col], color=colors[col]) col += 1 print_progress(k, len(AS_list)) k += 1 set_layout(ax, level, EARLY, num_mins) subtitle = 'M%d' % (mouse.mouseNumber) ax.set_title(subtitle, fontsize=10) plt.subplots_adjust(hspace=.4)
def generate_breakfast_data(experiment, act='F', ONSET=True, num_mins=15, tbin_size=5, days=None, GET_AVGS=False, strain_avg_type='over_mds', GENERATE=False, VERBOSE=False): E = experiment days_to_use = E.daysToUse if days is None else days _, num_md_ok = E.count_mousedays(days=days_to_use) print "%s, %s, ONSET: %s" % (generate_breakfast_data.__name__, act, ONSET) num_bins = int(num_mins * 60 / tbin_size) text = 'AS_onset' if ONSET else 'AS_offset' md_data = np.zeros((num_md_ok, num_bins)) md_labels = np.zeros((num_md_ok, 3), dtype=int) cnt = 0 for group in E.groups: for mouse in group.individuals: if not mouse.ignored: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if not MD.ignored: md_data[cnt] = MD.generate_breakfast_data( act, ONSET, num_mins, tbin_size, GENERATE) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if not VERBOSE: my_utils.print_progress(cnt, E.num_md_ok) else: print MD cnt += 1 cstart = time.clock() cstop = time.clock() if GENERATE: if not VERBOSE: print dirname = E.breakfast_dir + \ '%s/%s/prob_%dmin_tbin%ds/' %( act, text, num_mins, tbin_size) print "binary output saved to: %s" % dirname print "..took %1.2f minutes" % ((cstop - cstart) / 60.) if GET_AVGS: s_data, s_labels, m_data, m_labels = \ my_utils.get_1d_mouse_strain_averages(E, md_data, md_labels, strain_avg_type) return s_data, s_labels, m_data, m_labels, md_data, md_labels return md_data, md_labels
def generate_feature_vectors(experiment, feat='ASP', vec_type='12bins', days=None, GET_AVGS=False, strain_avg_type='over_mds', GENERATE=False, VERBOSE=False): """ returns: array with data for all legit mousedays arr: (num_mousedays, num_bins) mice and strain data data[0]: avgs data[1]: stdev data[2]: stderr labels """ E = experiment cstart = time.clock() num_bins = 12 if vec_type.endswith('bins') else 3 print "%s, %s, %s" % (generate_feature_vectors.__name__, feat, vec_type) days_to_use = E.daysToUse if days is None else days _, num_md_ok = E.count_mousedays(days=days_to_use) md_data = np.zeros((num_md_ok, num_bins)) md_labels = np.zeros((num_md_ok, 3), dtype=int) cnt = 0 for group in E.groups: for mouse in group.individuals: if not mouse.ignored: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if not MD.ignored: md_data[cnt] = MD.generate_feature_vector( feat, vec_type, GENERATE, VERBOSE) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if GENERATE and not VERBOSE: my_utils.print_progress(cnt, E.num_md_ok) cnt += 1 cstop = time.clock() if GENERATE: if not VERBOSE: print print "binary output saved to: %s" % E.features_dir print "..took %1.2f minutes" % ((cstop - cstart) / 60.) if GET_AVGS: s_data, s_labels, m_data, m_labels = \ my_utils.get_1d_mouse_strain_averages( E, md_data, md_labels, strain_avg_type) return s_data, s_labels, m_data, m_labels, md_data, md_labels return md_data, md_labels
def generate_time_budgets(experiment, cycle='24H', AS=False, days=None, GET_AVGS=False, strain_avg_type='over_mds', GENERATE=False, VERBOSE=False): E = experiment cstart = time.clock() print "%s, %s" % (generate_time_budgets.__name__, cycle) days_to_use = E.daysToUse if days is None else days _, num_md_ok = E.count_mousedays(days=days_to_use) num_slices = 5 if not AS else 4 #move, feed, drink, other_AS, inactive md_data = np.zeros((num_md_ok, num_slices)) md_labels = np.zeros((num_md_ok, 3), dtype=int) cnt = 0 for group in E.groups: for mouse in group.individuals: if not mouse.ignored: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if not MD.ignored: md_data[cnt] = MD.generate_time_budgets( cycle, num_slices, GENERATE) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if not VERBOSE: my_utils.print_progress(cnt, E.num_md_ok) else: print MD cnt += 1 cstop = time.clock() if GENERATE: if not VERBOSE: print dirname = E.time_budgets_dir + '%s/' % cycle print "binary output saved to: %s" % dirname print "..took %1.2f minutes" % ((cstop - cstart) / 60.) if GET_AVGS: s_data, s_labels, m_data, m_labels = \ my_utils.get_1d_mouse_strain_averages(E, md_data, md_labels, strain_avg_type) return s_data, s_labels, m_data, m_labels, md_data, md_labels return md_data, md_labels
def generate_active_states(self, mouseNumber=None, dayNumber=None): cstart = time.clock() if mouseNumber is None: cnt = 0 for group in self.groups: for mouse in group.individuals: for MD in mouse.mouse_days: if MD.dayNumber in self.daysToUse: MD.generate_active_states() my_utils.print_progress(cnt, self.num_md_ok) cnt += 1 else: mouse = self.get_mouse_object(mouseNumber) MD = mouse.mouse_days[dayNumber - 1] MD.generate_active_states() cstop = time.clock() if mouseNumber is None: print "binary output saved to: %s" % self.active_states_dir print "..took: %1.2f minutes" % ((cstop - cstart) / 60.)
def generate_active_states(experiment, mouseNumber=None, dayNumber=5): cstart = time.clock() if mouseNumber is None: cnt = 0 for group in experiment.groups: for mouse in group.individuals: if not mouse.ignored: for MD in mouse.mouse_days: if MD.dayNumber in experiment.daysToUse: if not MD.ignored: MD.generate_active_states() my_utils.print_progress( cnt, experiment.num_md_ok) cnt += 1 else: mouse = experiment.get_mouse_object(mouseNumber) if not mouse.ignored: MD = mouse.mouse_days[dayNumber - 1] if not MD.ignored: MD.generate_active_states() cstop = time.clock() if mouseNumber is None: print "binary output saved to: %s" % experiment.active_states_dir print "..took: %1.2f minutes" % ((cstop - cstart) / 60.)
def generate_breakfast_data(self, cycle='24H', level='mouseday', act='F', err_type='sd', ONSET=True, num_mins=15, tbin_size=5, days=None, group_avg_type='over_mds', GENERATE=False, VERBOSE=False): cstart = time.clock() if days is None: days_to_use = self.daysToUse num_md = self.num_mousedays else: days_to_use = days num_md, _ = self.count_mousedays(days=days_to_use) print "Exp: %s, %s, %s, ONSET: %s, cycle: %s, GENERATE:%s" % ( self.short_name, self.generate_breakfast_data.__name__, act, ONSET, cycle, GENERATE) num_bins = int(num_mins * 60 / tbin_size) text = 'AS_onset' if ONSET else 'AS_offset' md_data = np.zeros((num_md, num_bins)) md_labels = np.zeros((num_md, 3), dtype=int) cnt = 0 for group in self.groups: for mouse in group.individuals: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if MD.ignored: md_data[cnt] = np.nan else: md_data[cnt] = MD.generate_breakfast_data( cycle, act, ONSET, num_mins, tbin_size, GENERATE) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if not VERBOSE: my_utils.print_progress(cnt, self.num_md_ok) else: print MD cnt += 1 cstop = time.clock() if GENERATE: if not VERBOSE: print dirname = self.breakfast_dir + \ '%s/%s/prob_%dmin_tbin%ds_%s/' %( act, text, num_mins, tbin_size, cycle) print "binary output saved to: %s" % dirname print "..took %1.2f minutes" % ((cstop - cstart) / 60.) E = self data, labels = my_utils.get_1d_averages_errors(E, md_data, md_labels, level, err_type, group_avg_type) return data, labels
def generate_time_budgets(self, cycle='24H', level='mouseday', err_type='sd', AS=False, days=None, group_avg_type='over_mds', GENERATE=False, VERBOSE=False): cstart = time.clock() if days is None: days_to_use = self.daysToUse num_md = self.num_mousedays else: days_to_use = days num_md, _ = self.count_mousedays(days=days_to_use) print "Exp: %s, %s, %s" % (self.short_name, self.generate_time_budgets.__name__, cycle) num_act = 5 if not AS else 4 #move, feed, drink, other_AS, inactive md_data = np.zeros((num_md, num_act)) md_labels = np.zeros((num_md, 3), dtype=int) cnt = 0 for group in self.groups: for mouse in group.individuals: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if MD.ignored: md_data[cnt] = np.nan else: md_data[cnt] = MD.generate_time_budgets( cycle, num_act, GENERATE) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if not VERBOSE: my_utils.print_progress(cnt, self.num_md_ok) else: print MD cnt += 1 cstop = time.clock() if GENERATE: if not VERBOSE: print dirname = self.time_budgets_dir + '%s/' % cycle print "binary output saved to: %s" % dirname print "..took %1.2f minutes" % ((cstop - cstart) / 60.) E = self data, labels = my_utils.get_1d_averages_errors(E, md_data, md_labels, level, err_type) return data, labels
def generate_feature_vectors(self, feature='ASP', level='mouseday', bin_type='12bins', err_type='sd', days=None, group_avg_type='over_mds', GENERATE=False, VERBOSE=False): """ """ cstart = time.clock() num_bins = int(bin_type.strip('bins').strip('AS').strip('cycles')) # days_to_use = self.daysToUse if days is None else days if days is None: days_to_use = self.daysToUse num_md = self.num_mousedays else: days_to_use = days num_md, _ = self.count_mousedays(days=days_to_use) print "--Exp: %s, %s\n%s, %s, bin_type: %s, err_type: %s,\ndays: %s, BIN_SHIFT: %s" % ( self.short_name, self.generate_feature_vectors.__name__, feature, level, bin_type, err_type, days_to_use, self.BIN_SHIFT) md_data = np.zeros((num_md, num_bins)) md_labels = np.zeros((num_md, 3), dtype=int) cnt = 0 for group in self.groups: for mouse in group.individuals: for MD in mouse.mouse_days: if MD.dayNumber in days_to_use: if MD.ignored: # md_data.append(np.nan) md_data[cnt] = np.nan else: # md_data.append(MD.generate_feature_vector(feature, bin_type, GENERATE, VERBOSE)) md_data[cnt] = MD.generate_feature_vector( feature, bin_type, GENERATE, VERBOSE) # md_labels.append((MD.groupNumber, MD.mouseNumber, MD.dayNumber)) md_labels[ cnt] = MD.groupNumber, MD.mouseNumber, MD.dayNumber if GENERATE and not VERBOSE: my_utils.print_progress(cnt, self.num_md_ok) cnt += 1 cstop = time.clock() if GENERATE: if not VERBOSE: print string = '_shifted%+02dm' % (self.binTimeShift / 60) if self.BIN_SHIFT else '' dirname = self.features_dir + 'vectors_CT/%s/%s%s/' % ( feature, bin_type, string) print "binary output saved to: %s" % dirname print "..took %1.2f minutes" % ((cstop - cstart) / 60.) E = self data, labels = my_utils.get_1d_averages_errors(E, md_data, md_labels, level, err_type, group_avg_type) return data, labels