Esempio n. 1
0
    def compute_parameters(input_data, colors=None, rays=None):
        """
        Having as inputs a Connectivity matrix(required) and two arrays that 
        represent the rays and colors of the nodes from the matrix(optional) 
        this method will build the required parameter dictionary that will be 
        sent to the HTML/JS 3D representation of the connectivity matrix.
        """
        if colors is not None:
            color_list = colors.array_data.tolist()
            color_list = ABCDisplayer.get_one_dimensional_list(color_list, input_data.number_of_regions,
                                                               "Invalid input size for Sphere Colors")
            color_list = numpy.nan_to_num(numpy.array(color_list, dtype=numpy.float64)).tolist()
        else:
            color_list = [1.0] * input_data.number_of_regions

        if rays is not None:
            rays_list = rays.array_data.tolist()
            rays_list = ABCDisplayer.get_one_dimensional_list(rays_list, input_data.number_of_regions,
                                                              "Invalid input size for Sphere Sizes")
            rays_list = numpy.nan_to_num(numpy.array(rays_list, dtype=numpy.float64)).tolist()
        else:
            rays_list = [1.0] * input_data.number_of_regions

        params = dict(raysArray=json.dumps(rays_list), rayMin=min(rays_list), rayMax=max(rays_list),
                      colorsArray=json.dumps(color_list), colorMin=min(color_list), colorMax=max(color_list))
        return params, {}
Esempio n. 2
0
 def _prepare_colors(self, colors, expected_size, step=None):
     """
     From the input array, all values smaller than step will get a different color
     """
     if colors is None:
         return [self.DEFAULT_COLOR] * expected_size, None
     colors = numpy.nan_to_num(numpy.array(colors.array_data, dtype=numpy.float64)).tolist()
     colors = ABCDisplayer.get_one_dimensional_list(colors, expected_size, "Invalid size for colors array!")
     result = []
     if step is None:
         step = (max(colors) + min(colors)) / 2
     for val in colors:
         if val < step:
             result.append(self.OTHER_COLOR)
         else:
             result.append(self.DEFAULT_COLOR)
     return result, step
Esempio n. 3
0
 def _normalize_rays(self, rays, expected_size):
     """
     Make sure all rays are in the interval [self.MIN_RAY, self.MAX_RAY]
     """
     if rays is None:
         value = (self.MAX_RAY + self.MIN_RAY) / 2
         return [value] * expected_size, 0.0, 0.0
     rays = rays.array_data.tolist()
     rays = ABCDisplayer.get_one_dimensional_list(rays, expected_size, "Invalid size for rays array.")
     min_x = min(rays)
     max_x = max(rays)
     if min_x >= self.MIN_RAY and max_x <= self.MAX_RAY:
         # No need to normalize
         return rays, min_x, max_x
     result = []
     diff = max_x - min_x
     if min_x == max_x:
         diff = self.MAX_RAY - self.MIN_RAY
     for ray in rays:
         result.append(self.MIN_RAY + self.MAX_RAY * (ray - min_x) / diff)
     result = numpy.nan_to_num(numpy.array(result, dtype=numpy.float64)).tolist()
     return result, min(rays), max(rays)