Example #1
0
    def __init__(self, network: NetworkModel):
        ComputeShaderHandler().create("node_noise", "node/node_noise.comp")

        object_size, render_data_offset, render_data_size = \
            get_buffer_settings(network.num_classes, ADDITIONAL_NODE_BUFFER_DATA)
        self.node_buffer: SwappingBufferObject = SwappingBufferObject(
            ssbo=True,
            object_size=object_size,
            render_data_offset=render_data_offset,
            render_data_size=render_data_size)
        self.ssbo_handler: VertexDataHandler = VertexDataHandler([
            (self.node_buffer, 0)
        ])

        self.nodes: List[Node] = network.get_nodes()

        self.point_count: int = 0
        self.nearest_view_z: int = -1000000
        self.farthest_view_z: int = 1000000
        self.max_sample_points: int = 0

        self.node_min_importance: float = network.node_min_importance
        self.node_max_importance: float = network.node_max_importance

        self.set_data()
Example #2
0
 def get(self, role):
     devices = NetworkModel.fetch_db(role)
     if devices:
         try:
             return {'devices': [device.json() for device in devices]}
         except:
             return devices.json()
     return {'message': 'No data found'}, 404
Example #3
0
 def post(self, role, device): 
     if NetworkModel.fetch_db(role, device):
         rule = ACL.parser.parse_args()
         if RuleModel.get_rules(device, **rule):
             return {'message':'Rule already exit for the device.'},400
         RuleModel(device, **rule).save_to_db()
         return {'message':'Rule successfully added.'}
         
     return {'message':'{} device do not exist.'.format(device)},404
Example #4
0
 def get(self, role, device):
     if role == 'switch':
         return {'message':'This feature is not applicable for switches.'},400
     elif NetworkModel.fetch_db(role, device):
         rules = RuleModel.get_rules(device)
         if rules:
             return {'rules':[rule.json() for rule in rules]},201
         return {'message':'No rule present for this device'},201
     return {'message':'No such device present with name {}.'.format(device)},404
Example #5
0
    def __init__(self, layer_nodes: List[int],
                 processing_config: ProcessingConfig,
                 importance_data: ImportanceDataHandler = None,
                 processed_nn: ProcessedNNHandler = None):
        logging.info("Prepare network processing for network of size: %s" % layer_nodes)
        self.layer_nodes: List[int] = layer_nodes
        self.layer_distance: float = processing_config["layer_distance"]
        self.layer_width: float = processing_config["layer_width"]

        logging.info("Create network model...")
        self.network: NetworkModel = NetworkModel(self.layer_nodes, self.layer_width, self.layer_distance,
                                                  importance_data, processed_nn, processing_config["prune_percentage"])
        self.sample_length: float = self.network.layer_width / processing_config["sampling_rate"]
        self.grid_cell_size: float = self.sample_length / 3.0
        self.sample_radius: float = self.sample_length * 2.0

        RenderShaderHandler().set_classification_number(self.network.num_classes)
        ComputeShaderHandler().set_classification_number(self.network.num_classes)

        self.node_advection_status: AdvectionProgress = AdvectionProgress(self.network.average_node_distance,
                                                                          processing_config["node_bandwidth_reduction"],
                                                                          self.grid_cell_size * 2.0)
        self.edge_advection_status: AdvectionProgress = AdvectionProgress(self.network.average_edge_distance,
                                                                          processing_config["edge_bandwidth_reduction"],
                                                                          self.grid_cell_size * 2.0)
        self.edge_importance_type: int = processing_config["edge_importance_type"]

        logging.info("Create grid...")
        self.grid: Grid = Grid(Vector3([self.grid_cell_size, self.grid_cell_size, self.grid_cell_size]),
                               self.network.bounding_volume, self.layer_distance)

        logging.info("Prepare node processing...")
        self.node_processor: NodeProcessor = NodeProcessor(self.network)
        self.node_renderer: NodeRenderer = NodeRenderer(self.node_processor, self.grid)

        logging.info("Prepare edge processing...")
        self.edge_processor: EdgeProcessor = EdgeProcessor(self.sample_length,
                                                           edge_importance_type=self.edge_importance_type)
        self.edge_processor.set_data(self.network)
        if not self.edge_processor.sampled:
            self.edge_processor.init_sample_edge()
        self.edge_renderer: EdgeRenderer = EdgeRenderer(self.edge_processor, self.grid)

        logging.info("Prepare grid processing...")
        self.grid_processor: GridProcessor = GridProcessor(self.grid, self.node_processor, self.edge_processor, 10000.0)
        self.grid_processor.calculate_position()
        self.grid_renderer: GridRenderer = GridRenderer(self.grid_processor)

        self.action_finished: bool = False
        self.last_action_mode: NetworkProcess = NetworkProcess.RESET

        self.edge_smoothing: bool = processing_config["smoothing"]
        self.edge_smoothing_iterations: int = processing_config["smoothing_iterations"]
        self.bar: ProgressBar or None = None
Example #6
0
 def delete(self, role, device):
     if role == 'switch':
         return {'message':'No rule(s) exist for switch.'},400
     elif NetworkModel.fetch_db(role, device):
         del_rule = ACL.parser.parse_args()
         rules = RuleModel.get_rules(device, **del_rule)
         if rules:
             for rule in rules:
                 rule.delete_from_db()
             return {'message':'Rule is deleted.'},201
         else:
             return {'message':'No rule exist. Please check inputs.'},400
Example #7
0
 def delete(self, role):
     data = Network.parser.parse_args()
     device = NetworkModel.fetch_db(role, data['device_name'])
     if device:
         device.delete_from_db()
         return {
             'message': 'Device {} is removed.'.format(data['device_name'])
         }
     return {
         'message':
         'Device {} is not found in {}.'.format(data['device_name'], role)
     }, 404
Example #8
0
    def put(self, role):
        data = Network.parser.parse_args()
        device = NetworkModel.fetch_db(role, data['device_name'])

        if device:
            device.status = data['status']
            device.save_to_db()
            return device.json()
        else:
            return {
                'message':
                'No device with name {} found in {}.'.format(
                    data['device_name'], role)
            }, 404
Example #9
0
    def set_data(self, network: NetworkModel):
        edges: List[List[List[Edge]]] = network.generate_filtered_edges(self.max_edges_per_buffer)
        self.edge_min_importance = network.edge_min_importance
        self.edge_max_importance = network.edge_max_importance

        self.layer_edge_count = [len(layer) for layer in edges]
        self.layer_container_edge_count = [[len(container) for container in layer] for layer in edges]
        self.edge_count = sum([sum(layer) for layer in self.layer_container_edge_count])

        # calculate smoothing radius
        max_distance: float = network.generate_max_distance()
        self.smooth_radius = (int((max_distance * 2.0) / self.sample_length) * 8.0) / 100.0

        # read or calculate max sample point value for buffer objects
        if len(edges[0][0][0].sample_data) > 8:
            self.sampled = True
            self.max_sample_points = int(len(edges[0][0][0].sample_data) / 4)
        else:
            self.max_sample_points = int((max_distance * 5.0) / self.sample_length) + 2

        if len(self.sample_buffer) > 0:
            self.delete()

        self.fill_buffer(edges, network.num_classes)
Example #10
0
    def post(self, role):
        data = Network.parser.parse_args()
        if NetworkModel.fetch_db(role, data['device_name']):
            return {
                'message':
                'The device {} is already exist in {}.'.format(
                    data['device_name'], role)
            }, 400

        if data['status']:
            device = NetworkModel(data['device_name'], role, data['status'])
        else:
            device = NetworkModel(data['device_name'], role, "not found")
        try:
            device.save_to_db()
        except:
            return {
                'message':
                'Could not add device {} in {}. Kindly recheck inputs.'.format(
                    data['device_name'], role)
            }, 500
        return device.json()