Browse Source

Fixes for recovering all the META data from dmp files

tags/1.6.1
Trevor Irons 5 years ago
parent
commit
87fa0ef60d
1 changed files with 50 additions and 9 deletions
  1. 50
    9
      akvo/gui/akvoGUI.py

+ 50
- 9
akvo/gui/akvoGUI.py View File

745
         fdir = os.path.dirname(fpath)
745
         fdir = os.path.dirname(fpath)
746
         # Pickle the preprocessed data dictionary 
746
         # Pickle the preprocessed data dictionary 
747
         SaveStr = QtWidgets.QFileDialog.getSaveFileName(self, "Save as", fdir, r"Pickle (*.dmp)")
747
         SaveStr = QtWidgets.QFileDialog.getSaveFileName(self, "Save as", fdir, r"Pickle (*.dmp)")
748
-        print(SaveStr)
749
  
748
  
750
         spath,filen=os.path.split(str(SaveStr[0]))
749
         spath,filen=os.path.split(str(SaveStr[0]))
751
         f = open('.akvo.last.path', 'w')
750
         f = open('.akvo.last.path', 'w')
776
             TXRX.append(txrx)
775
             TXRX.append(txrx)
777
         INFO["TXRX"] = TXRX       
776
         INFO["TXRX"] = TXRX       
778
 
777
 
779
-        self.RAWDataProc.DATADICT["INFO"] = INFO 
778
+        # 
779
+        print("META SAVE")
780
+        print("INFO log", INFO["log"])
780
 
781
 
781
-        print ("TXRX", TXRX)
782
+        self.RAWDataProc.DATADICT["INFO"] = INFO 
782
 
783
 
783
         pickle.dump(self.RAWDataProc.DATADICT, save)
784
         pickle.dump(self.RAWDataProc.DATADICT, save)
784
         save.close()
785
         save.close()
857
 
858
 
858
         
859
         
859
         self.logText = self.RAWDataProc.DATADICT["INFO"]["log"] # YAML 
860
         self.logText = self.RAWDataProc.DATADICT["INFO"]["log"] # YAML 
861
+        parse = yaml.load( self.logText, Loader=yaml.Loader )
860
 
862
 
861
         self.YamlNode = AkvoYamlNode( )  #self.logText )
863
         self.YamlNode = AkvoYamlNode( )  #self.logText )
862
        
864
        
865
         if  AKVO_VERSION[0] >= 1 and AKVO_VERSION[1] >= 2 and AKVO_VERSION[2] >= 3:
867
         if  AKVO_VERSION[0] >= 1 and AKVO_VERSION[1] >= 2 and AKVO_VERSION[2] >= 3:
866
             self.RAWDataProc.interpulseDelay = self.RAWDataProc.DATADICT["INFO"]["interpulseDelay"]
868
             self.RAWDataProc.interpulseDelay = self.RAWDataProc.DATADICT["INFO"]["interpulseDelay"]
867
 
869
 
868
-        self.YamlNode.Import =   OrderedDict((yaml.load( self.logText, Loader=yaml.Loader )).Import)
869
-        self.YamlNode.Processing = list((yaml.load( self.logText, Loader=yaml.Loader )).Processing)
870
-        self.YamlNode.Stacking = OrderedDict((yaml.load( self.logText, Loader=yaml.Loader )).Stacking)
871
-        self.YamlNode.META =     OrderedDict((yaml.load( self.logText, Loader=yaml.Loader )).META)
870
+        self.YamlNode.Import =   OrderedDict(parse.Import)
871
+        self.YamlNode.Processing = list(parse.Processing)
872
+        self.YamlNode.Stacking = OrderedDict(parse.Stacking)
873
+        self.YamlNode.META =     OrderedDict(parse.META)
874
+        
875
+        self.logGUI()
872
         self.Log()
876
         self.Log()
873
- 
877
+
874
             #self.ui.logTextBrowser.append( yaml.dump(self.YamlNode)) #, default_flow_style=False)  )
878
             #self.ui.logTextBrowser.append( yaml.dump(self.YamlNode)) #, default_flow_style=False)  )
875
         #except KeyError:
879
         #except KeyError:
876
         #    pass
880
         #    pass
1298
         # Log processing 
1302
         # Log processing 
1299
         Adapt = OrderedDict()
1303
         Adapt = OrderedDict()
1300
         Adapt["STEP"] = "TD noise cancellation"
1304
         Adapt["STEP"] = "TD noise cancellation"
1301
-        #print(Adapt)
1305
+        print(Adapt) # this locks STEP in as first...
1302
         Adapt["n_Taps"] = str(self.ui.MTapsSpinBox.value())
1306
         Adapt["n_Taps"] = str(self.ui.MTapsSpinBox.value())
1303
         Adapt["lambda"] = str(self.ui.adaptLambdaSpinBox.value())
1307
         Adapt["lambda"] = str(self.ui.adaptLambdaSpinBox.value())
1304
         Adapt["truncate"] = str(self.ui.adaptTruncateSpinBox.value())
1308
         Adapt["truncate"] = str(self.ui.adaptTruncateSpinBox.value())
1337
                 self.ui.CentralVSpinBox.value(), \
1341
                 self.ui.CentralVSpinBox.value(), \
1338
                 self.ui.mplwidget))
1342
                 self.ui.mplwidget))
1339
 
1343
 
1344
+    def logGUI(self):
1345
+        # You have a race condiditon where the GUI is modifying the Yaml node while you are updating it
1346
+        # hence, we need to cache these. More elegant solutions exist       
1347
+        if "B_0" in self.YamlNode.META:
1348
+            B0 = self.YamlNode.META["B_0"]["intensity"]
1349
+            Bdec = self.YamlNode.META["B_0"]["dec"]
1350
+            Binc = self.YamlNode.META["B_0"]["inc"]
1351
+        if "DateTime" in self.YamlNode.META:
1352
+            [Date,Time] = self.YamlNode.META["DateTime"].split("T")
1353
+            year,month,day = Date.split("-")
1354
+        if "Temp" in self.YamlNode.META:
1355
+            temp = float(self.YamlNode.META["Temp"])
1356
+        if "Coordinates" in self.YamlNode.META:
1357
+            UTM = self.YamlNode.META["Coordinates"]["UTM"] 
1358
+            LatBand = self.YamlNode.META["Coordinates"]["LatBand"] 
1359
+            Ellipsoid = self.YamlNode.META["Coordinates"]["ellipsoid"] 
1360
+
1361
+        # and set
1362
+        if "Location" in self.YamlNode.META:
1363
+            self.ui.locEdit.setText( self.YamlNode.META["Location"] )
1364
+        if "Field Notes" in self.YamlNode.META:
1365
+            self.ui.txtComments.setText( self.YamlNode.META["Field Notes"] )
1366
+        if "B_0" in self.YamlNode.META:
1367
+            self.ui.incSpinBox.setValue( Binc )  
1368
+            self.ui.decSpinBox.setValue( Bdec )  
1369
+            self.ui.intensitySpinBox.setValue( B0 ) 
1370
+        if "DateTime" in self.YamlNode.META:
1371
+            self.ui.dateEdit.setDate( datetime.date(int(year), int(month), int(day)) )            
1372
+            self.ui.timeEdit.setTime( datetime.time.fromisoformat( Time ) )            
1373
+        if "Temp" in self.YamlNode.META:
1374
+            self.ui.tempSpinBox.setValue(temp)
1375
+        if "Coordinates" in self.YamlNode.META:
1376
+            self.ui.UTMzone.setCurrentText(UTM)
1377
+            self.ui.latBand.setCurrentText(LatBand) 
1378
+            self.ui.ellipsoid.setCurrentText(Ellipsoid)
1379
+
1380
+
1340
     def logSite(self):
1381
     def logSite(self):
1341
         self.YamlNode.META["Location"] = self.ui.locEdit.text()
1382
         self.YamlNode.META["Location"] = self.ui.locEdit.text()
1342
         self.YamlNode.META["Coordinates"] = OrderedDict() 
1383
         self.YamlNode.META["Coordinates"] = OrderedDict() 

Loading…
Cancel
Save