def __update_datasource(self, datasource, stock, column, name): """ Update the object datasource with data from each stock. """ x, y = Formatter._get_x_y(stock, column) datasource.add(name=name, data=y) if 'x' not in datasource.data: datasource.add(name='x', data=x) return datasource
def update_data(self, attrname, old, new): sliders_values = {} data_temp = {} result = {} for k, v in list(self.sliders.items()): sliders_values[k] = v.value for i, __data_source in enumerate(self.sdb.datasources): for name in list(__data_source.data.keys()): if re.findall("\(\w+\)", name): raise (ValueError("Variable should not contain " + "plain parentheses. " "If included use '\(' and '\)'." + "Found: %s" % name)) if len(__data_source.data[name]) > 1: data_temp[name] = pd.Series( copy.deepcopy(__data_source.data[name]), index=copy.deepcopy(__data_source.data['x'])) else: data_temp[name] = copy.deepcopy(__data_source.data[name]) if not hasattr(self, 'signal_expressions_formatted'): self._format_signal_expressions(data_temp) # Run twice since some singals depends on others for i in range(2): for signal_name, expr in list(self.signals_expressions.items()): result[signal_name] = eval( self.signals_expressions_formatted[signal_name]) # Update result in data_temp. If it is not dependent # of other variable signal, this result won't change. data_temp[signal_name] = result[signal_name] for i, __data_source in enumerate(self.sdb.datasources): for name in result: if name in __data_source.data: (__data_source.data['x'], __data_source.data[name]) = copy.deepcopy( Formatter._get_x_y(result[name]))