Esempio n. 1
0
    def moving_average(self, number, target=None):
        dats = []

        while True:
            dats.append((yield))
            try:
                # root name change detection
                if dats[-2].rootname != dats[-1].rootname:
                    dats = dats[-1:]
            except IndexError:
                pass

            if len(dats) > number:
                dats = dats[-number:]
            if target:
                #goodDats = dat.rejection(dats)
                #if goodDats != None:
                #    result = dat.average(goodDats)
                #    result.filename = dats[0].filename
                #    target.send(result)

                result = dat.average(dats)
                result.filename = dats[0].filename
                result.setuserdata({'rawhighq': result.highq})
                target.send(result)
Esempio n. 2
0
    def average(self, target=None):

        dats = []

        while True:
            dats.append((yield))
            try:
                # root name change detection
                if self.lastname != dats[-1].rootname:
                    dats = dats[-1:]
            except IndexError:
                pass

            self.lastname = dats[-1].rootname

            if target:
                goodDats = dat.rejection(dats)
                if goodDats is not None:
                    target.send(dat.average(goodDats))
Esempio n. 3
0
    def average_water(self, target=None):

        dats = []
        lastname = ''

        while True:
            dats.append((yield))
            try:
                # root name change detection
                if lastname != dats[-1].rootname:
                    dats = dats[-1:]
            except IndexError:
                pass

            lastname = dats[-1].rootname

            if target:
                goodDats = dat.rejection(dats)
                if goodDats is not None:
                    datavg = dat.average(goodDats)
                    datavg.filename = os.path.join(datavg.dirname, 'water_' + datavg.basename)
                    target.send(datavg)
                else:
                    print('None!!')
Esempio n. 4
0
    def subtract(self, readpath, sample, blank, fraction=0, writepath= '../manual', analysispath='../analysis', analyse=True):

        if fraction > 0:
            fraction = round(fraction, 1)

        try:
            sampleDat = DatFile(os.path.join(readpath, sample))
            blankDat = DatFile(os.path.join(readpath, blank))
        except IOError:
            print "File Doesn't Exist"
            return -1
        
        sampleNum = int(sampleDat.fileindex)
        blankNum = int(blankDat.fileindex)
        sampleNumLen = len(sampleDat.fileindex)
        blankNumLen = len(blankDat.fileindex)
        

        sampleRoot = os.path.splitext(sampleDat.rootname)[0]
        blankRoot = os.path.splitext(blankDat.rootname)[0]
                
        if not os.path.exists(writepath):
            writepath = os.path.abspath(os.path.join(readpath,writepath))
            if not os.path.exists(writepath):
                try:
                    os.mkdir(writepath)
                except OSError:    
                    if not os.path.isdir(writepath):
                        print 'dat write path ' + writepath + ' invalid, file not written'
                        raise

        if analyse:
            if not os.path.exists(analysispath):
                analysispath = os.path.abspath(os.path.join(readpath,analysispath))
                if not os.path.exists(analysispath):
                    try:
                        os.mkdir(analysispath)
                    except OSError:
                        if not os.path.isdir(analysispath):
                            print 'analysis write path invalid, file not written'
                            raise

        
        num = 0
        while True:
            
            try:
                sampleTemp = DatFile(datfile=os.path.join(readpath, ''.join([sampleRoot, '_', str(sampleNum).zfill(sampleNumLen), '.dat'])))
                blankTemp = DatFile(datfile=os.path.join(readpath, ''.join([blankRoot, '_', str(blankNum).zfill(blankNumLen), '.dat'])))
                fraction_string = ''
                if fraction > 0:
                    blank2 = '{}_{:04d}.dat'.format(blankTemp.rootname_rmext, int(blankTemp.fileindex)+1)
                    blankTemp2 = DatFile(os.path.join(readpath, blank2))
                    blankTemp = dat.average([blankTemp, blankTemp2], [fraction, 1-fraction])
                    fraction_string = '_{:.0f}'.format(100*fraction)

                subtractedDat = dat.subtract(sampleTemp, blankTemp)

                filename = os.path.join(writepath, ''.join([os.path.splitext(subtractedDat.rootname)[0], '_', str(sampleNum).zfill(sampleNumLen), '_', str(blankNum).zfill(blankNumLen), fraction_string, '.dat']))
                subtractedDat.save(filename)

                if analyse:
                    pipeline = PipelineLite.PipelineLite(filename, analysispath)
                    pipeline.runPipeline()

                sampleNum += 1
                blankNum += 1
                num += 1

            except IOError as e:
                print 'IO'
                break
            
            except OSError as e:
                print 'OS'
                break
            
            except Exception:
                raise
        
        return num
Esempio n. 5
0
    def subtract(self,
                 readpath,
                 sample,
                 blank,
                 fraction=0,
                 writepath='../manual',
                 analysispath='../analysis',
                 analyse=True):

        if fraction > 0:
            fraction = round(fraction, 1)

        try:
            sampleDat = DatFile(os.path.join(readpath, sample))
            blankDat = DatFile(os.path.join(readpath, blank))
        except IOError:
            print "File Doesn't Exist"
            return -1

        sampleNum = int(sampleDat.fileindex)
        blankNum = int(blankDat.fileindex)
        sampleNumLen = len(sampleDat.fileindex)
        blankNumLen = len(blankDat.fileindex)

        sampleRoot = os.path.splitext(sampleDat.rootname)[0]
        blankRoot = os.path.splitext(blankDat.rootname)[0]

        if not os.path.exists(writepath):
            writepath = os.path.abspath(os.path.join(readpath, writepath))
            if not os.path.exists(writepath):
                try:
                    os.mkdir(writepath)
                except OSError:
                    if not os.path.isdir(writepath):
                        print 'dat write path ' + writepath + ' invalid, file not written'
                        raise

        if analyse:
            if not os.path.exists(analysispath):
                analysispath = os.path.abspath(
                    os.path.join(readpath, analysispath))
                if not os.path.exists(analysispath):
                    try:
                        os.mkdir(analysispath)
                    except OSError:
                        if not os.path.isdir(analysispath):
                            print 'analysis write path invalid, file not written'
                            raise

        num = 0
        while True:

            try:
                sampleTemp = DatFile(datfile=os.path.join(
                    readpath, ''.join([
                        sampleRoot, '_',
                        str(sampleNum).zfill(sampleNumLen), '.dat'
                    ])))
                blankTemp = DatFile(datfile=os.path.join(
                    readpath, ''.join([
                        blankRoot, '_',
                        str(blankNum).zfill(blankNumLen), '.dat'
                    ])))
                fraction_string = ''
                if fraction > 0:
                    blank2 = '{}_{:04d}.dat'.format(
                        blankTemp.rootname_rmext,
                        int(blankTemp.fileindex) + 1)
                    blankTemp2 = DatFile(os.path.join(readpath, blank2))
                    blankTemp = dat.average([blankTemp, blankTemp2],
                                            [fraction, 1 - fraction])
                    fraction_string = '_{:.0f}'.format(100 * fraction)

                subtractedDat = dat.subtract(sampleTemp, blankTemp)

                filename = os.path.join(
                    writepath, ''.join([
                        os.path.splitext(subtractedDat.rootname)[0], '_',
                        str(sampleNum).zfill(sampleNumLen), '_',
                        str(blankNum).zfill(blankNumLen), fraction_string,
                        '.dat'
                    ]))
                subtractedDat.save(filename)

                if analyse:
                    pipeline = PipelineLite.PipelineLite(
                        filename, analysispath)
                    pipeline.runPipeline()

                sampleNum += 1
                blankNum += 1
                num += 1

            except IOError as e:
                print 'IO'
                break

            except OSError as e:
                print 'OS'
                break

            except Exception:
                raise

        return num