def update()

in c3dm/tools/stats.py [0:0]


    def update(self,preds,time_start=None,freeze_iter=False,stat_set='train',log_vars=None):
        
        if self.epoch==-1: # uninitialized
            print("warning: epoch==-1 means uninitialized stats structure -> new_epoch() called")
            self.new_epoch()

        if stat_set not in self.stats:
            self.stats[stat_set] = {}
            self.it[stat_set]    = -1

        if not freeze_iter:
            self.it[stat_set] += 1

        epoch = self.epoch
        it    = self.it[stat_set]

        log_vars = log_vars or self.log_vars  #TODO: need it?
        for stat in log_vars:
            if stat not in self.stats[stat_set]:
                self.stats[stat_set][stat] = AverageMeter()

            if stat=='sec/it': # compute speed
                if time_start is None:
                    elapsed = 0.
                else:
                    elapsed = time.time() - time_start
                time_per_it = float(elapsed) / float(it+1)
                val = time_per_it
                # self.stats[stat_set]['sec/it'].update(time_per_it,epoch=epoch,n=1)
            else:
                if stat in preds:
                    try:
                        val = self.gather_value(preds[stat])
                    except:
                        raise ValueError("could not extract prediction %s\
                                          from the prediction dictionary" % stat)
                else:
                    val = None

            if val is not None:
                self.stats[stat_set][stat].update(val,epoch=epoch,n=1)