def __process_file(self): """ operations on files """ self.raw = RawDataset(self.filename) self.step = self.raw.step self.points = self.raw.points self.scr = None # if script is available, get limits according excitation length if self.raw.scriptable: self.scr = Script(self.filename) duration = self.scr.get_excit_duration() self.start = round(duration / self.step) self.end = self.points # if script is not available, fix arbitrary limits else: self.start = 0 self.end = self.points
def __process_file(self): """ operations on files """ self.raw = RawDataset(self.filename) self.step = self.raw.step self.points = self.raw.points self.scr = None # if script is available, get limits according excitation length if self.raw.scriptable: self.scr = Script(self.filename) duration = self.scr.get_excit_duration() self.start = round(duration / self.step) self.end = round(self.points / 2) # if script is not available, fix arbitrary limits else: self.start = 0 self.end = round(self.points / 2)
def get_detect(self): return self.detectBuffer, self.detection if __name__ == '__main__': from pkg.dataset import RawDataset # filename = "G:\\DATA_PIRENEA_OLD\\DATA_2014\\data140730\\30_07_2014_001.B00" # NO SCRIPT !! filename = "G:\\PIRENEA_manips\\2006\\data_2006_06_07\\2006_06_07_002.A00" filename = "G:\\PIRENEA_manips\\2014\\data_2014_05_12\\2014_05_12_001.B00" filename = "G:\\PIRENEA_manips\\2014\\data_2014_07_30\\2014_07_30_001.A00" # filename = "D:\\PIRENEA_manips\\data140515\\15_05_2014_001.A00" # filename = "G:\\DATA_PIRENEA_OLD\\DATA_2014\\data140515\\15_05_2014_001.A00" d = RawDataset(filename) data, step = d.get_science() print("Number of points: ", len(data)) print("Step time: ", step) s = Script(filename) excitBuffer, excitation = s.get_excit() ejectBuffer, ejection = s.get_eject() detectBuffer, detection = s.get_detect() print("ejection", ejection) print("detection", detection) for eject in ejectBuffer: text = "" for i, element in enumerate(eject): if i > 0: text = text + element + " "
class Pipeline(object): """ classdocs """ def __init__(self, filename=""): """ Constructor """ self.filename = filename self.__process_file() def __process_file(self): """ operations on files """ self.raw = RawDataset(self.filename) self.step = self.raw.step self.points = self.raw.points self.scr = None # if script is available, get limits according excitation length if self.raw.scriptable: self.scr = Script(self.filename) duration = self.scr.get_excit_duration() self.start = round(duration / self.step) self.end = self.points # if script is not available, fix arbitrary limits else: self.start = 0 self.end = self.points def process_signal(self, start=0, end=0, hann=False, half=False, zero=False, zero_twice=False): self.signal = self.raw.truncate(start, end) if hann: self.signal = self.raw.hann(self.signal, half=False) if half: self.signal = self.raw.hann(self.signal, half=True) if zero: dummy = np.zeros(self.points) if (end > self.points): end = self.points dummy[0:(end - start)] = self.signal self.signal = dummy if zero_twice: dummy = np.zeros(self.points * 2) if (end > self.points): end = self.points dummy[0:(end - start)] = self.signal self.signal = dummy def process_spectrum(self, factor=1000.0, ref_mass=0.0, cyclo_freq=0.0, mag_freq=0.0): # t = time.time() fs = FrequencySpectrum(self.signal, self.step) # t1 = time.time() - t self.spectrum = fs.spectrum * factor self.freq = fs.freq # in Hz ms = MassSpectrum(self.freq, ref_mass, cyclo_freq, mag_freq) self.mass = ms.mass # def get_excit_duration(self): # buffer, excitation = self.scr.get_excit() # if excitation: # return buffer[0][3] # else: # return 0.0 def mass_recalibrate(self, ref_mass=0.0, accuracy=0.1): # Auto calib self.ref_mass = ref_mass self.accuracy = accuracy if ref_mass > 0.0: self.ms.basic_recalibrate(self.ref_mass, self.accuracy) def process_peaks(self, mph=0.0, mpd=0, startx=0.0, endx=0.0): if mph > 0: self.mph = mph if mpd > 0: self.mpd = mpd x = self.mass y = self.spectrum p = Peaks() ref = startx + (abs(endx - startx) / 2) delta = 1.0 mph, mpd, mask = p.prepare_detect(ref, delta, x, y, startx, endx) # Detect peak on rising edge edge = 'rising' # Detect peak greater than threshold threshold = 0.0 # Don't use default plot ind = p.detect_peaks(y[mask], self.mph, self.mpd, threshold, edge) # print("mass =", x[mask][ind]) # print("inten=", y[mask][ind]) self.mph = mph self.mpd = mpd self.mask = mask self.ind = ind
# step = 0.5 524288 filename = "G:\\PIRENEA_manips\\2013\\data_2013_03_22\\2013_03_22_003.A00" # step = 0.1 262144 filename = "G:\\PIRENEA_manips\\2004\\data_2004_01_06\\2004_01_06_001.A01" # step = 0.2 524288 filename = "G:\\PIRENEA_manips\\2014\\data_2014_07_30\\2014_07_30_001.A00" # step = 0.5 524288 filename = "G:\\PIRENEA_manips\\2014\\data_2014_06_26\\2014_06_26_012.A00" # step = 0.2 524288 filename = "G:\\PIRENEA_manips\\2014\\data_2014_05_12\\2014_05_12_005.E00" # step = 0.2 524288 filename = "G:\\PIRENEA_manips\\2006\\data_2006_07_26\\2006_07_26_001.A00" # step = 0.5 524288 filename = "G:\\PIRENEA_manips\\2014\\data_2014_06_26\\2014_06_26_013.A00" data = RawDataset(filename) data.hann() # half window points = len(data.signal) start = data.start end = round(points / 2) data.truncate(start, end) # data.truncate(data.start*2, round(len(data.signal)/2)) # excit = 1.2 ms / 0.5 micros ==> signal starts after point 2400 signal = data.signal print("len signal =", len(signal)) # Real FFT on complete signal step = data.step print("step=", step)
class Pipeline(object): """ classdocs """ def __init__(self, filename=""): """ Constructor """ self.filename = filename self.__process_file() def __process_file(self): """ operations on files """ self.raw = RawDataset(self.filename) self.step = self.raw.step self.points = self.raw.points self.scr = None # if script is available, get limits according excitation length if self.raw.scriptable: self.scr = Script(self.filename) duration = self.scr.get_excit_duration() self.start = round(duration / self.step) self.end = round(self.points / 2) # if script is not available, fix arbitrary limits else: self.start = 0 self.end = round(self.points / 2) def process_signal(self, start=0, end=0, hann=False, half=False, zero=False, zero_twice=False): self.signal = self.raw.truncate(start, end) if hann: self.signal = self.raw.hann(self.signal, half=False) if half: self.signal = self.raw.hann(self.signal, half=True) if zero: dummy = np.zeros(self.points) dummy[0:(end - start)] = self.signal self.signal = dummy if zero_twice: dummy = np.zeros(self.points * 2) dummy[0:(end - start)] = self.signal self.signal = dummy def process_spectrum(self, factor=1000.0, ref_mass=0.0, cyclo_freq=0.0, mag_freq=0.0): # t = time.time() fs = FrequencySpectrum(self.signal, self.step) # t1 = time.time() - t self.spectrum = fs.spectrum * factor self.freq = fs.freq # in Hz ms = MassSpectrum(self.freq, ref_mass, cyclo_freq, mag_freq) self.mass = ms.mass # def get_excit_duration(self): # buffer, excitation = self.scr.get_excit() # if excitation: # return buffer[0][3] # else: # return 0.0 def mass_recalibrate(self, ref_mass=0.0, accuracy=0.1): # Auto calib self.ref_mass = ref_mass self.accuracy = accuracy if ref_mass > 0.0: self.ms.basic_recalibrate(self.ref_mass, self.accuracy) def process_peaks(self, mph=0.0, mpd=0, startx=0.0, endx=0.0): if mph > 0: self.mph = mph if mpd > 0: self.mpd = mpd x = self.mass y = self.spectrum p = Peaks() ref = startx + (abs(endx - startx) / 2) delta = 1.0 mph, mpd, mask = p.prepare_detect(ref, delta, x, y, startx, endx) # Detect peak on rising edge edge = 'rising' # Detect peak greater than threshold threshold = 0.0 # Don't use default plot ind = p.detect_peaks(y[mask], self.mph, self.mpd, threshold, edge) # print("mass =", x[mask][ind]) # print("inten=", y[mask][ind]) self.mph = mph self.mpd = mpd self.mask = mask self.ind = ind
if __name__ == '__main__': # from pkg1.dataset import AlyxanRawDataset from pkg.dataset import RawDataset import matplotlib.pyplot as plt """ Prepare Subplots """ fig, (ax1, ax2, ax3) = plt.subplots(3, 1) # Read PIRENEA signal filename = "G:\\PIRENEA_manips\\2014\\data_2014_07_30\\2014_07_30_001.A00" # filename = "D:\\PIRENEA_manips\\data140515\\15_05_2014_001.A00" # filename = "G:\\DATA_PIRENEA_OLD\\DATA_2014\\data140515\\15_05_2014_001.A00" filename = "G:\\PIRENEA_manips\\2014\\data_2014_06_26\\2014_06_26_010.A00" raw = RawDataset(filename) points = len(raw.signal) start = raw.start end = raw.end step = raw.step raw.hann() raw.truncate(start, end) y1 = raw.signal[start:end] limit = end - start y2 = raw.truncated # y3 = raw.signal[start:] # y3[end - start:] = 0.0
if __name__ == '__main__': from pkg.dataset import RawDataset # filename = "G:\\DATA_PIRENEA_OLD\\DATA_2014\\data140730\\30_07_2014_001.B00" # NO SCRIPT !! filename = "G:\\PIRENEA_manips\\2006\\data_2006_06_07\\2006_06_07_002.A00" filename = "G:\\PIRENEA_manips\\2014\\data_2014_05_12\\2014_05_12_001.B00" filename = "D:\\PIRENEA\\PIRENEA_manips\\2014\\data_2014_07_30\\2014_07_30_001.A00" filename = "D:\\PIRENEA\\DATA\\2018\\data_2018_07_20\\P1_2018_07_20_025.A00" # filename = "D:\\PIRENEA_manips\\data140515\\15_05_2014_001.A00" # filename = "G:\\DATA_PIRENEA_OLD\\DATA_2014\\data140515\\15_05_2014_001.A00" filename = "D:\\PIRENEA\\DATA\\2018\\data_2018_07_20\\P1_2018_07_20_025.A00" d = RawDataset(filename) s = Script(filename) excitBuffer, excitation = s.get_excit() ejectBuffer, ejection = s.get_eject() detectBuffer, detection = s.get_detect() print("ejection", ejection) print("detection", detection) for eject in ejectBuffer: text = "" for i, element in enumerate(eject): if i > 0: text = text + element + " " print("text = ", text) print("format", "{:.1f}".format(float(eject[3]))) else: