Пример #1
0
 def select_by_rois_proximity(self, timeseries, proximity, proximity_th=None):
     initial_selection = range(timeseries.number_of_labels)
     selection = []
     for prox in proximity:
             selection += (
                 np.array(initial_selection)[select_greater_values_array_inds(prox, proximity_th)]).tolist()
     return timeseries.get_subspace_by_index(np.unique(selection).tolist())
 def update_active_regions_seeg(self,
                                target_data,
                                probabilistic_model,
                                sensors,
                                reset=False):
     if reset:
         probabilistic_model.update_active_regions([])
     if target_data:
         active_regions = probabilistic_model.active_regions
         gain_matrix = np.array(sensors.gain_matrix)
         seeg_inds = sensors.get_sensors_inds_by_sensors_labels(
             target_data.space_labels)
         if len(seeg_inds) != 0:
             gain_matrix = gain_matrix[seeg_inds]
             for proj in gain_matrix:
                 active_regions += select_greater_values_array_inds(
                     proj).tolist()
                 probabilistic_model.update_active_regions(active_regions)
         else:
             warning(
                 "Skipping active regions setting by seeg power because no data were assigned to sensors!"
             )
     else:
         warning(
             "Skipping active regions setting by seeg power because no target data were provided!"
         )
     return probabilistic_model
Пример #3
0
 def compute_nearest_regions_to_sensors(self, head, sensors=None, target_contacts=None, s_type=Sensors.TYPE_SEEG,
                                        sensors_id=0, n_regions=None, gain_matrix_th=None):
     if not (isinstance(sensors, Sensors)):
         sensors = head.get_sensors_id(s_type=s_type, sensor_ids=sensors_id)
     n_contacts = sensors.labels.shape[0]
     if isinstance(target_contacts, (list, tuple, np.ndarray)):
         target_contacts = ensure_list(target_contacts)
         for itc, tc in enumerate(target_contacts):
             if isinstance(tc, int):
                 continue
             elif isinstance(tc, basestring):
                 target_contacts[itc] = sensors.contact_label_to_index([tc])
             else:
                 raise_value_error("target_contacts[" + str(itc) + "] = " + str(tc) +
                                   "is neither an integer nor a string!")
     else:
         target_contacts = range(n_contacts)
     auto_flag = False
     if n_regions is "all":
         n_regions = head.connectivity.number_of_regions
     elif not (isinstance(n_regions, int)):
         auto_flag = True
     nearest_regions = []
     for tc in target_contacts:
         projs = sensors.gain_matrix[tc]
         inds = np.argsort(projs)[::-1]
         if auto_flag:
             n_regions = select_greater_values_array_inds(projs[inds], threshold=gain_matrix_th)
         inds = inds[:n_regions]
         nearest_regions.append((inds, head.connectivity.region_labels[inds], projs[inds]))
     return nearest_regions
    def select_signals_seeg(self, signals, rois, auto_selection, **kwargs):
        sensors = Sensors(self.sensors_labels, self.sensors_locations, gain_matrix=self.gain_matrix)
        inds = range(signals.shape[1])

        head_service = HeadService()
        if auto_selection.find("rois") >= 0:
            if sensors.gain_matrix is not None:
                current_selection = head_service.select_sensors_rois(sensors, kwargs.get("rois", rois),
                                                                     self.signals_inds,
                                                                     kwargs.get("gain_matrix_th", None))
                inds = np.where([s in current_selection for s in self.signals_inds])[0]
                self.signals_inds = np.array(self.signals_inds)[inds].tolist()
                signals = signals[:, inds]
        if auto_selection.find("correlation-power") >= 0:
            power = kwargs.get("power", np.sum((signals - np.mean(signals, axis=0)) ** 2, axis=0) / signals.shape[0])
            correlation = kwargs.get("correlation", np.corrcoef(signals.T))
            current_selection = head_service.select_sensors_corr(sensors, correlation, self.signals_inds, power=power,
                                                                 n_electrodes=kwargs.get("n_electrodes"),
                                                                 sensors_per_electrode=kwargs.get(
                                                                     "sensors_per_electrode", 1),
                                                                 group_electrodes=kwargs.get("group_electrodes", True))
            inds = np.where([s in current_selection for s in self.signals_inds])[0]
            self.signals_inds = np.array(self.signals_inds)[inds].tolist()
        elif auto_selection.find("power"):
            power = kwargs.get("power", np.sum(signals ** 2, axis=0) / signals.shape[0])
            inds = select_greater_values_array_inds(power, kwargs.get("power_th", None))
            self.signals_inds = (np.array(self.signals_inds)[inds]).tolist()
        self.n_signals = len(self.signals_inds)
        return signals[:, inds]
 def update_active_regions_x0_values(self, statistical_model, active_regions_th=0.1, reset=False):
     if reset:
         statistical_model.update_active_regions([])
     statistical_model.update_active_regions(statistical_model.active_regions +
                                             select_greater_values_array_inds(self.x0_values,
                                                                              active_regions_th).tolist())
     return statistical_model
Пример #6
0
 def select_sensors_rois(self, sensors, rois=None, initial_selection=[], gain_matrix_th=0.5):
     if len(initial_selection) == 0:
         initial_selection = range(sensors.number_of_sensors)
     selection = []
     if sensors.gain_matrix is None:
         raise_value_error("Projection matrix is not set!")
     else:
         for proj in sensors.gain_matrix[initial_selection].T[rois]:
             selection += (
                 np.array(initial_selection)[select_greater_values_array_inds(proj, gain_matrix_th)]).tolist()
     return np.unique(selection).tolist()
 def update_active_regions_lsa(self, statistical_model, active_regions_th=None, reset=False):
     if reset:
         statistical_model.update_active_regions([])
     if len(self.lsa_propagation_strengths) > 0:
         ps_strengths = self.lsa_propagation_strengths / np.max(self.lsa_propagation_strengths)
         statistical_model.update_active_regions(statistical_model.active_regions +
                                                 select_greater_values_array_inds(ps_strengths,
                                                                                  active_regions_th).tolist())
     else:
         self.logger.warning("No LSA results found (empty propagations_strengths vector)!" +
                             "\nSkipping of setting active_regios according to LSA!")
     return statistical_model
 def select_signals_lfp(self, signals, rois, auto_selection, **kwargs):
     if auto_selection.find("rois") >= 0:
         if kwargs.get("rois", rois):
             inds = np.where([s in rois for s in self.signals_inds])[0]
             signals = signals[:, inds]
             self.signals_inds = np.array(self.signals_inds)[inds].tolist()
     if auto_selection.find("power") >= 0:
         power = kwargs.get("power", np.sum((signals - np.mean(signals, axis=0)) ** 2, axis=0) / signals.shape[0])
         inds = select_greater_values_array_inds(power, kwargs.get("power_th", None))
         signals = signals[:, inds]
         self.signals_inds = (np.array(self.signals_inds)[inds]).tolist()
     self.n_signals = len(self.signals_inds)
     return signals
 def update_active_regions_x0_values(self,
                                     probabilistic_model,
                                     x0_values,
                                     reset=False):
     if reset:
         probabilistic_model.update_active_regions([])
     if len(x0_values) > 0:
         probabilistic_model.update_active_regions(
             probabilistic_model.active_regions +
             select_greater_values_array_inds(x0_values,
                                              self.active_x0_th).tolist())
     else:
         warning(
             "Skipping active regions setting by x0 values because no such values were provided!"
         )
     return probabilistic_model
 def update_active_regions_lsa(self,
                               probabilistic_model,
                               lsa_propagation_strengths,
                               reset=False):
     if reset:
         probabilistic_model.update_active_regions([])
     if len(lsa_propagation_strengths) > 0:
         ps_strengths = lsa_propagation_strengths / np.max(
             lsa_propagation_strengths)
         probabilistic_model.update_active_regions(
             probabilistic_model.active_regions +
             select_greater_values_array_inds(ps_strengths,
                                              self.active_lsa_th).tolist())
     else:
         self.logger.warning(
             "No LSA results found (empty propagations_strengths vector)!" +
             "\nSkipping of setting active regions according to LSA!")
     return probabilistic_model
 def update_active_regions_seeg(self, statistical_model, active_regions_th=None, seeg_inds=[], reset=False):
     if reset:
         statistical_model.update_active_regions([])
     if self.gain_matrix is not None:
         active_regions = statistical_model.active_regions
         if len(seeg_inds) == 0:
             seeg_inds = self.signals_inds
         if len(seeg_inds) != 0:
             gain_matrix = self.gain_matrix[seeg_inds]
         else:
             gain_matrix = self.gain_matrix
         for proj in gain_matrix:
             active_regions += select_greater_values_array_inds(proj, active_regions_th).tolist()
         statistical_model.update_active_regions(active_regions)
     else:
         self.logger.warning(
             "Projection is not found!" + "\nSkipping of setting active_regios according to SEEG power!")
     return statistical_model
Пример #12
0
 def select_by_metric(self, timeseries, metric, metric_th=None):
     return timeseries.get_subspace_by_index(select_greater_values_array_inds(metric, metric_th))
Пример #13
0
 def select_sensors_power(self, sensors, power, selection=[], power_th=0.5):
     if len(selection) == 0:
         selection = range(sensors.number_of_sensors)
     return (np.array(selection)[select_greater_values_array_inds(power, power_th)]).tolist()