示例#1
0
 def future(self, i):  #到底需不需要考虑拓扑顺序呢???
     if type(self.node_list[i]) != Varnode or self.node_list[i].I == None:
         return  #第一次future是提前做的,因此现在I还可能是空呢
     for item in self.node_list[i].next_dashed_list:
         if self.node_list[item].lval != None:  #lval != -inf
             #e.g. 原来是[j_3, a),现在有[, 99]
             #把lval换成-inf,变成[-inf, a),然后把这个字符串代入Interval进行初始化
             tmp = copy.deepcopy(self.node_list[item])
             tmp.lval = str(self.node_list[i].I.lower)
             s = str(tmp).replace('-inf', '').replace('inf', '')
             if tmp._type == 'int':
                 e = IntInterval.from_string(s)
             else:
                 e = FloatInterval.from_string(s)
         else:  #rval != inf
             #e.g. 原来是(a,j_3),现在有[, 99]
             #把rval=j_3换成99,变成(a, 99),然后把这个字符串代入Interval进行初始化
             tmp = copy.deepcopy(self.node_list[item])
             tmp.rval = str(self.node_list[i].I.upper)
             s = str(tmp).replace('-inf',
                                  '').replace('inf',
                                              '')  #用字符串来初始化不能有inf,而要留空
             if tmp._type == 'int':
                 e = IntInterval.from_string(s)
             else:
                 e = FloatInterval.from_string(s)
         self.node_list[item].I = e
示例#2
0
 def load_last_dependency_segment(self):
     viewport = self._view.dependencies_segment_choose_scrolled_win.get_child()
     main_box = viewport.get_child()
     boxes = main_box.get_children()
     last_box = boxes[-1]
     last_combobox = last_box.get_children()[1]
     segment_activated = last_combobox.get_active()
     model = last_combobox.get_model()
     _iter = model.get_iter_from_string('{}'.format(segment_activated))
     segment_str = model.get_value(_iter, 0)
     last_segment = FloatInterval.from_string(segment_str)
     return last_segment
示例#3
0
 def load_chosen_dependency_segment(self, dependency_id):
     viewport = self._view.dependencies_segment_choose_scrolled_win.get_child()
     main_box = viewport.get_child()
     boxes = main_box.get_children()
     for box in boxes:
         children = box.get_children()
         label = children[0]
         depend = int(label.get_text())
         if dependency_id == depend:
             combobox = children[1]
             segment_activated = combobox.get_active()
             model = combobox.get_model()
             _iter = model.get_iter_from_string('{}'.format(segment_activated))
             segment_str = model.get_value(_iter, 0)
             segment = FloatInterval.from_string(segment_str)
             return segment
示例#4
0
    def load_focus_depend(self):
        dependencies_segment_choose_scrolled_win = self._view.dependencies_segment_choose_scrolled_win
        viewport = dependencies_segment_choose_scrolled_win.get_child()
        main_box = viewport.get_child()

        focus_box = main_box.get_focus_child()
        focus_box_children = focus_box.get_children()
        focus_label = focus_box_children[0]
        focus_depend_id = int(focus_label.get_text())
        focus_combobox = focus_box_children[1]
        segment_activated = focus_combobox.get_active()
        model = focus_combobox.get_model()
        _iter = model.get_iter_from_string('{}'.format(segment_activated))
        segment_str = model.get_value(_iter, 0)
        focus_segment = FloatInterval.from_string(segment_str)
        return focus_depend_id, focus_segment
示例#5
0
 def load_parameter_node_path(self):
     viewport = self._view.dependencies_segment_choose_scrolled_win.get_child()
     main_box = viewport.get_child()
     boxes = main_box.get_children()
     calibrate_parameter = self.load_chosen_calibrate_parameter()
     parameter_path = [[calibrate_parameter, None]]
     for box in boxes:
         children = box.get_children()
         label = children[0]
         depend_id = int(label.get_text())
         combobox = children[1]
         segment_activated = combobox.get_active()
         model = combobox.get_model()
         _iter = model.get_iter_from_string('{}'.format(segment_activated))
         segment_str = model.get_value(_iter, 0)
         focus_segment = FloatInterval.from_string(segment_str)
         parameter_path.append([depend_id, focus_segment])
     return parameter_path
示例#6
0
def spectrogram_by_eeg_bandwidth(sig, sample_rate=125, timeIntervalSec=30):
    slow = FloatInterval.from_string('[0.5, 2.0)')
    delta = FloatInterval.from_string('[2, 4.0)')
    theta = FloatInterval.from_string('[4.0, 8.0)')
    alpha = FloatInterval.from_string('[8.0, 16.0)')
    beta = FloatInterval.from_string('[16.0, 32.0)')
    gamma = FloatInterval.from_string('[32.0, 100.0)')
    ##above100Hz = FloatInterval.from_string('[100.0,)')
    # no signal above100Hz
    nperseg = int(sample_rate * timeIntervalSec)
    noverlap = None #will take default value
    freqs, times, spec = signal.spectrogram(sig,
                                    fs=sample_rate,
                                    window='hann',
                                    nperseg=sample_rate*timeIntervalSec,
                                    noverlap=noverlap,
                                    detrend=False)
    #Edelta, Etheta, Ealpha, Ebeta, Egamma, Eabove100Hz = np.zeros(6)
    result = pd.DataFrame(np.zeros(spec.shape[1]*6).reshape((6, spec.shape[1])), index=['Slow', 'Delta', 'Theta', 'Alpha', 'Beta', 'Gamma'])
    #
    for i in range(0, spec.shape[0]):
        for j in range(0, spec.shape[1]):
            if freqs[i] in slow:
                result.loc["Slow", j]= result.loc["Slow", j] + spec[i, j]
            if freqs[i] in delta:
                result.loc["Delta", j]= result.loc["Delta", j] + spec[i, j]
            elif freqs[i] in theta:
                result.loc["Theta", j]= result.loc["Theta", j] + spec[i, j]
            elif freqs[i] in alpha:
                result.loc["Alpha", j]= result.loc["Alpha", j] + spec[i, j]
            elif freqs[i] in beta:
                result.loc["Beta", j]= result.loc["Beta", j] + spec[i, j]
            elif freqs[i] in gamma:
                result.loc["Gamma", j]= result.loc["Gamma", j] + spec[i, j]
#            else: we are filtering out frequencies lower than 0.5 Hz
#               print("error at cell " + str((i, j)))
    return result
def spectrogram_by_eeg_bandwidth(sig, sample_rate=125, timeIntervalSec=2):
    delta = FloatInterval.from_string('[0, 4.0)')
    theta = FloatInterval.from_string('[4.0, 8.0)')
    alpha = FloatInterval.from_string('[8.0, 16.0)')
    beta = FloatInterval.from_string('[16.0, 32.0)')
    gamma = FloatInterval.from_string('[32.0, 100.0)')
    above100Hz = FloatInterval.from_string('[100.0,)')
    #
    nperseg = int(sample_rate * timeIntervalSec)
    noverlap = 0
    freqs, times, spec = signal.spectrogram(sig,
                                    fs=sample_rate,
                                    window='hann',
                                    nperseg=sample_rate*timeIntervalSec,
                                    noverlap=noverlap,
                                    detrend=False)
    #Edelta, Etheta, Ealpha, Ebeta, Egamma, Eabove100Hz = np.zeros(6)
    result = pd.DataFrame(np.zeros(spec.shape[1]*6).reshape((6, spec.shape[1])), index=['Delta', 'Theta', 'Alpha', 'Beta', 'Gamma', 'Above100Hz'])
    #
    for i in range(0, spec.shape[0]):
        for j in range(0, spec.shape[1]):
            if freqs[i] in delta:
                result.loc["Delta", j]= result.loc["Delta", j] + spec[i, j]
            elif freqs[i] in theta:
                result.loc["Theta", j]= result.loc["Theta", j] + spec[i, j]
            elif freqs[i] in alpha:
                result.loc["Alpha", j]= result.loc["Alpha", j] + spec[i, j]
            elif freqs[i] in beta:
                result.loc["Beta", j]= result.loc["Beta", j] + spec[i, j]
            elif freqs[i] in gamma:
                result.loc["Gamma", j]= result.loc["Gamma", j] + spec[i, j]
            elif freqs[i] in above100Hz:
                print(str((i, j)) + "added tp above100Hz")
                result.loc["Above100Hz", j]= result.loc["Above100Hz", j] + spec[i, j]
            else:
                print("error at cell " + str((i, j)))
    return result