def process_item(self, item): """ Run correlation calculation on a pair of properties using the specified function. Args: item: (dict) input provided by get_items() (see get_items() for structure) Returns: (tuple<str, str, float, str, int>) output of calculation with necessary information about calculation included. Format in tuple: independent property (x-axis) name, dependent property (y-axis) name, correlation value, correlation function name, number of data points used for correlation length of shortest path between properties on propnet graph where x-axis property is starting property and y-axis property is ending property. Note: if no (forward) connection exists, the path length will be None. This does not preclude y->x having a forward path. """ prop_x, prop_y = item['x_name'], item['y_name'] data_x, data_y = item['x_data'], item['y_data'] func_name, func = item['func'] n_points = len(data_x) g = Graph() try: path_length_xy = g.get_degree_of_separation(prop_x, prop_y) path_length_yx = g.get_degree_of_separation(prop_y, prop_x) except ValueError: # This shouldn't happen...but just in case path_length_xy = None path_length_yx = None try: path_length = min(path_length_xy, path_length_yx) except TypeError: path_length = path_length_xy or path_length_yx if n_points < 2: result = 0.0 else: try: result = func(data_x, data_y) except Exception as ex: # If correlation fails, catch the error, save it, and move on result = ex return prop_x, prop_y, result, func_name, n_points, path_length
def process_item(self, item): """ Run correlation calculation on a pair of properties using the specified function. Args: item: (dict) input provided by get_items() (see get_items() for structure) Returns: (tuple<str, str, float, str, int>) output of calculation with necessary information about calculation included. Format in tuple: independent property (x-axis) name, dependent property (y-axis) name, correlation value, correlation function name, number of data points used for correlation length of shortest path between properties on propnet graph where x-axis property is starting property and y-axis property is ending property. Note: if no (forward) connection exists, the path length will be None. This does not preclude y->x having a forward path. """ prop_x, prop_y = item['x_name'], item['y_name'] data_x, data_y = item['x_data'], item['y_data'] func_name, func = item['func'] n_points = len(data_x) g = Graph() try: path_length = g.get_degree_of_separation(prop_x, prop_y) except ValueError: path_length = None if n_points < 2: correlation = 0.0 else: correlation = func(data_x, data_y) return prop_x, prop_y, correlation, func_name, n_points, path_length