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)
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))
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!!')
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
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