Exemple #1
0
def run():

    # Firesting, Presens4, Fibox3, FNFiresting, FNFibox	= SensorMess()

    while 1:
        time.sleep(.25)
        if filehandling.TjekPeriod() == "M":
            #Initiate measurement period datacollection
            MeasurementPeriod(mainpath)
            break
Exemple #2
0
def Slave():
    #Aquaresp acting as slave, listens to filehandling.TjekRun() for external setting of FWM status
    # Flushy.EmergencyFlush()
    exp = True
    while exp:
        whatperiod = filehandling.TjekPeriod()
        exp = filehandling.TjekRun()
        if not exp: break

        if whatperiod == "W":
            print("Wait period started")
            # Popen(["python", lib_p + os.sep +"oxygenserver.py"])
            exp = filehandling.TjekRun()
            if not exp: break

        if whatperiod == "M":
            print("Measurement period registered")
            exp = filehandling.TjekRun()
            if not exp: break

    print("Experiment End")
Exemple #3
0
	def UpdateGui(self):
		# currentperiod
		period = filehandling.TjekPeriod()
		if period =="F":
			real = "Flushing"
			self.currentperiod.SetForegroundColour("red")
		if period =="W":
			real = "Wait period"
			self.currentperiod.SetForegroundColour("yellow")
		if period =="M":
			real = "Measurement"
			self.currentperiod.SetForegroundColour("Green")
		try:
			self.currentperiod.SetLabel(real)
		except:
			pass

		# pO2_1,pO2_2,pO2_3,pO2_4,oxtime1 = filehandling.GetLastOxygen()
		# mainpath = os.path.dirname(os.path.realpath(__file__)).split("lib")[0]
		try:
			pO2_1,pO2_2,pO2_3,pO2_4,oxtime1 = aqdev.uniformoxygen()
		except:
			pO2_1,pO2_2,pO2_3,pO2_4,oxtime1 = [0,0,0,0,0]

		self.r211.SetLabel(str(pO2_1))
		self.r221.SetLabel(str(pO2_2))
		self.r231.SetLabel(str(pO2_3))
		self.r241.SetLabel(str(pO2_4))

		try:
			with open(temp_p + os.sep + "lastmo2.txt", 'r') as ffff:
				mo2ss = ffff.read.lines()[0].split(";")
		except: pass

		try:
			self.mo1.SetLabel(str(mo2ss[0]))
		except: pass

		try:
			self.mo1.SetLabel(str(mo2ss[1]))
		except: pass

		try:
			self.mo1.SetLabel(str(mo2ss[2]))
		except: pass

		try:
			self.mo1.SetLabel(str(mo2ss[3]))
		except: pass

		try:
			with open(temp_p + os.sep + "last2.txt", 'r') as ffff:
				r2ss = ffff.read.lines()[0].split(";")

			self.r21.SetLabel(str(r2ss[0]))
			self.r22.SetLabel(str(r2ss[1]))
			self.r23.SetLabel(str(r2ss[2]))
			self.r24.SetLabel(str(r2ss[3]))
		except: pass



		try:
			startperiod, time,timesince = filehandling.GetperiodStart()
			mypercent = 100*timesince / time
			self.PeriodStatus.SetValue(mypercent)
		except:
			self.PeriodStatus.SetValue(50)
		# self.PeriodStatus.SetFirstGradientColour(wx.Colour(0, 0, 0))

		wx.CallLater(int(1000), self.UpdateGui)
Exemple #4
0
def MeasurementPeriod(mainpath):
    # fn = oxygenpath + "firesting.txt"
    # presentfolder
    pf, slopefolder, expfolder = filehandling.presentfolderFunc()

    #Datacollection when it is measuring time
    measurementperiod1 = []
    measurementperiod2 = []
    measurementperiod3 = []
    measurementperiod4 = []
    timesec = []
    timeabs = []
    timeunix = []

    pO2_1, pO2_2, pO2_3, pO2_4, oxtime = ["", "", "", "", ""]
    oxtimeold = datetime.datetime.strptime(time.strftime("%H:%M:%S"),
                                           "%H:%M:%S")
    unixtime = int(time.time())
    unixtime2 = int(time.time())
    timestartmeasurement = datetime.datetime.strptime(
        time.strftime("%H:%M:%S"), "%H:%M:%S")
    timestartmeasurement2 = datetime.datetime.strptime(
        time.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")

    datadict = {
        1: measurementperiod1,
        2: measurementperiod2,
        3: measurementperiod3,
        4: measurementperiod4
    }
    print("Start Data Acquisition - MO2")

    while 1:
        try:
            pO2_1, pO2_2, pO2_3, pO2_4, oxtime1 = aqdev.uniformoxygen()
        except:
            pO2_1, pO2_2, pO2_3, pO2_4, oxtime1 = [
                0, 0, 0, 0,
                datetime.datetime.strptime(time.strftime("%H:%M:%S"),
                                           "%H:%M:%S")
            ]
        # filehandling.ox2file(pO2_1,pO2_2,pO2_3,pO2_4,oxtime1)
        unixtime = int(time.time())
        # Standard sampling rate for Aquaresp is .25 second
        time.sleep(.25)
        po2dict = {1: pO2_1, 2: pO2_2, 3: pO2_3, 4: pO2_4}
        try:
            oxtime = datetime.datetime.strptime(oxtime1, "%H:%M:%S")
        except:
            print("Missed a reading.")

        dtime = oxtime - oxtimeold
        stime = oxtime - timestartmeasurement

        if not dtime.total_seconds() == 0:
            # samplingrate in aquaresp is to high compared to the oxygenmeter. So if there is no time difference
            # between the samples, they are not logged.
            for i in range(1, 5):
                # inuse, volume, animalmass = filehandling.readrespirometerinfo(i)
                # if inuse =="y":
                try:
                    datadict[i].append(float(po2dict[i]))
                except ValueError:
                    datadict[i].append(float(9999))
                except:
                    datadict[i].append(float(9998))

            timesec.append(float(stime.total_seconds()))
            timeabs.append(oxtime1)
            timeunix.append(unixtime)

            filehandling.ox2file(pO2_1, pO2_2, pO2_3, pO2_4, oxtime1)

        # print("her?",filehandling.TjekPeriod()	)
        oxtimeold = oxtime
        #When measurement period ends
        if filehandling.TjekPeriod() != "M": break
        #
        exp = filehandling.TjekRun()
        if not exp: break

    #Get measurement period duration
    duration = int(time.time()) - unixtime2

    #Handle save data, and MO2 Calculation etc
    numfiles = len([
        name for name in os.listdir(slopefolder)
        if os.path.isfile(os.path.join(slopefolder, name))
    ])
    with open(slopefolder + "Cycle_" + str(numfiles + 1) + ".txt", 'w') as f:
        f.write(
            "Time;Seconds from start for linreg;Unix Time;ch1 po2;ch2 po2;ch3 po2;ch4 po2;\n"
        )
        for ii, l in enumerate(timesec):
            f.write("%s;%s;%s;%s;%s;%s;%s;\n" %
                    (timeabs[ii], l, timeunix[ii], measurementperiod1[ii],
                     measurementperiod2[ii], measurementperiod3[ii],
                     measurementperiod4[ii]))

    measurementperiod1 = np.array(measurementperiod1)
    measurementperiod2 = np.array(measurementperiod2)
    measurementperiod3 = np.array(measurementperiod3)
    measurementperiod4 = np.array(measurementperiod4)
    datadict = {
        1: measurementperiod1,
        2: measurementperiod2,
        3: measurementperiod3,
        4: measurementperiod4
    }
    timesec = np.array(timesec)

    sensor, AD, ExpType, ft, wt, mt, temperature, salinity, o2sol, UNIXtime, Dateime, IsSlave = filehandling.GetExperimentInfo(
    )
    filehandling.updateLastmo2file(2, "-", "-")

    for ik in range(1, 5):
        inuse, volume, animalmass = filehandling.readrespirometerinfo(ik)

        if inuse == "y":
            slope, intercept, rr, p_value, std_err, avgpo2, medianpo2, minpo2, maxpo2 = AA.sloper(
                timesec, datadict[ik])
            in_hours, in_minutes, in_seconds, in_days = filehandling.GetTimeStartExperiment(
            )
            MO2, beta, rRespFish, MO2_TOT = AA.mo2maker(
                slope, float(temperature), float(salinity), 760,
                float(animalmass), float(volume))

            print("Respirometer ", str(ik), "MO2: ", str(MO2), " r-squared: ",
                  str(rr**2))
            filehandling.updateLastmo2file(0, MO2, rr**2)

            filehandling.MO2Save(timestartmeasurement2, in_hours, unixtime,
                                 MO2, slope, intercept, rr, rr**2, p_value,
                                 std_err, duration, avgpo2, medianpo2, minpo2,
                                 maxpo2, maxpo2 - minpo2, beta, rRespFish,
                                 in_hours, in_minutes, in_seconds, in_days, ik)
            filehandling.MO2Save_TOT(timestartmeasurement, in_hours, unixtime,
                                     MO2_TOT, slope, intercept, rr, rr**2,
                                     p_value, ik)

            try:
                # AquaPlot.fakeJSdatasource()

                #Create copy data for  data viewer
                # Popen(["python",  mainpath +os.sep +"lib" + os.sep +"copytoGD.py"])
                Popen([
                    "python", mainpath + os.sep + "lib" + os.sep + "Plotz.py"
                ])

            except:
                pass
    filehandling.updateLastmo2file(1, "-", "-")

    Popen(["python", lib_p + os.sep + "Pump.py", "1", "0", "1"])