picadae calibration programs
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

calibrate_plot.py 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import os,sys,json
  2. import common
  3. import matplotlib.pyplot as plt
  4. import plot_seq_1
  5. def plot_calibrate( cfg, pitch, dataD ):
  6. dataL = [ (d['pulse_us'], d['hm']['db'], d['targetDb'], d['matchFl'],d['skipMeasFl'],d['annIdx']) for d in dataD['measD'][pitch] ]
  7. udmL = [(t[0],t[1],t[3]) for t in dataL]
  8. udmL = sorted( udmL, key=lambda x: x[0] )
  9. usL,dbL,matchL = zip(*udmL)
  10. fig,ax = plt.subplots()
  11. musL = [us for us,db,m in udmL if m]
  12. mdbL = [db for us,db,m in udmL if m]
  13. ax.plot(musL,mdbL,marker='o',color='red',linestyle='None')
  14. ax.plot(usL,dbL,marker='.')
  15. initDataDir = os.path.expanduser(dataD['cfg']['inDir'])
  16. usL,dbL,_,_,_ = plot_seq_1.get_merged_pulse_db_measurements( initDataDir, int(pitch), cfg['analysisD'] )
  17. ax.plot(usL,dbL,marker='.')
  18. plt.show()
  19. if __name__ == "__main__":
  20. inDir = sys.argv[1]
  21. cfgFn = sys.argv[2]
  22. pitch = sys.argv[3]
  23. cfg = common.parse_yaml_cfg(cfgFn)
  24. cfg = cfg.calibrateArgs
  25. dataFn = os.path.join(inDir,"meas.json")
  26. with open(dataFn,"r") as f:
  27. dataD = json.load(f)
  28. print("pitchL:",dataD['cfg']['pitchL'],"targetDbL:",dataD['cfg']['targetDbL'])
  29. plot_calibrate( cfg, pitch, dataD )