Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
    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.)
Exemple #8
0
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.)
Exemple #9
0
    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
Exemple #10
0
    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
Exemple #11
0
    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