def add(self, thisType, value, position=None): """Add data to an existing data type (and add a new one if necess) """ if not thisType in self: self.addDataType(thisType) if position is None: # 'ran' is always the first thing to update repN = sum(self['ran'][self.trials.thisIndex]) if thisType != 'ran': # because it has already been updated repN -= 1 # make a list where 1st digit is trial number position = [self.trials.thisIndex] position.append(repN) # check whether data falls within bounds posArr = np.asarray(position) shapeArr = np.asarray(self.dataShape) if not np.alltrue(posArr < shapeArr): # array isn't big enough logging.warning('need a bigger array for: ' + thisType) # not implemented yet! self[thisType] = extendArr(self[thisType], posArr) # check for ndarrays with more than one value and for non-numeric data if (self.isNumeric[thisType] and ((type(value) == np.ndarray and len(value) > 1) or (type(value) not in [float, int]))): self._convertToObjectArray(thisType) # insert the value self[thisType][position[0], int(position[1])] = value