Beispiel #1
0
 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
Beispiel #2
0
 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)
Beispiel #3
0
    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 + " "
Beispiel #4
0
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
Beispiel #5
0
# 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)
Beispiel #6
0
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
Beispiel #7
0

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
Beispiel #8
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: