Random updates for paper revisions. Getting janky!
This commit is contained in:
		
							parent
							
								
									c5c4ae61ee
								
							
						
					
					
						commit
						9e50e64c72
					
				
					 9 changed files with 422 additions and 10 deletions
				
			
		| 
						 | 
					@ -103,6 +103,14 @@ def figAnnotateCorner(hfig, msg, corner=1, ratio=0.01, clear=True):
 | 
				
			||||||
	hfig.text(loc_x, loc_y, msg, transform=ax.transAxes,
 | 
						hfig.text(loc_x, loc_y, msg, transform=ax.transAxes,
 | 
				
			||||||
		va=algn_v, ha=algn_h)
 | 
							va=algn_v, ha=algn_h)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def addHalfTicks(haxis, gridOn=True):
 | 
				
			||||||
 | 
						ticks = haxis.get_yticks()
 | 
				
			||||||
 | 
						minor_ticks = (ticks[1:]+ticks[:-1])/2
 | 
				
			||||||
 | 
						haxis.set_yticks(minor_ticks, minor=True)
 | 
				
			||||||
 | 
						if gridOn:
 | 
				
			||||||
 | 
							haxis.grid(gridOn, which='major')
 | 
				
			||||||
 | 
							haxis.grid(gridOn, which='minor')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def axAnnotateCorner(ha, msg, corner=1, ratio=0.01):
 | 
					def axAnnotateCorner(ha, msg, corner=1, ratio=0.01):
 | 
				
			||||||
	if corner in [1,2]:
 | 
						if corner in [1,2]:
 | 
				
			||||||
		loc_x = ratio
 | 
							loc_x = ratio
 | 
				
			||||||
| 
						 | 
					@ -137,3 +145,8 @@ def annotateArrow(ha, y, x_list, direction='right'):
 | 
				
			||||||
		xy=(x[0], y), xycoords='data',
 | 
							xy=(x[0], y), xycoords='data',
 | 
				
			||||||
		xytext=(x[1], y), textcoords='data',
 | 
							xytext=(x[1], y), textcoords='data',
 | 
				
			||||||
		arrowprops=dict(width=2, headwidth=8, headlength=6, facecolor='black'))
 | 
							arrowprops=dict(width=2, headwidth=8, headlength=6, facecolor='black'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def annotateArrowStr(ha, msg, y, x):
 | 
				
			||||||
 | 
						ha.annotate(msg, 
 | 
				
			||||||
 | 
							xy=(x, y), xycoords='data',
 | 
				
			||||||
 | 
							xytext=(x, y), textcoords='data')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										20
									
								
								parsePy.py
									
										
									
									
									
								
							
							
						
						
									
										20
									
								
								parsePy.py
									
										
									
									
									
								
							| 
						 | 
					@ -336,7 +336,9 @@ for filename in os.listdir(source_directory):
 | 
				
			||||||
			marker_height = gain_rms[marker_point]
 | 
								marker_height = gain_rms[marker_point]
 | 
				
			||||||
			LPRDefaultPlotting.annotateArrow(aT, marker_height+0.5, \
 | 
								LPRDefaultPlotting.annotateArrow(aT, marker_height+0.5, \
 | 
				
			||||||
				[marker_freq+0.05+0.02, marker_freq+0.15+0.02])
 | 
									[marker_freq+0.05+0.02, marker_freq+0.15+0.02])
 | 
				
			||||||
			aT.set_ylim(aR.get_ylim()/np.array(1)+20)
 | 
								aT.set_ylim((aR.get_ylim()/np.array(1)+20)/1)
 | 
				
			||||||
 | 
								aT.set_yticks([x for x in aT.get_yticks() if x <= 7.5])
 | 
				
			||||||
 | 
								aR.set_yticks([x for x in aR.get_yticks() if x >= -17.5])
 | 
				
			||||||
			aT.grid()
 | 
								aT.grid()
 | 
				
			||||||
		######### FIXME ########################################################
 | 
							######### FIXME ########################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -348,9 +350,10 @@ for filename in os.listdir(source_directory):
 | 
				
			||||||
			aT.set_ylabel('RMS Error (deg)')
 | 
								aT.set_ylabel('RMS Error (deg)')
 | 
				
			||||||
			aT.plot(imeas.f, ang_rms)
 | 
								aT.plot(imeas.f, ang_rms)
 | 
				
			||||||
			#marker_freq = 27.5
 | 
								#marker_freq = 27.5
 | 
				
			||||||
			marker_freq = 28.3
 | 
								#marker_freq = 28.3
 | 
				
			||||||
 | 
								marker_freq = 27.8
 | 
				
			||||||
			marker_point = np.argmin(np.abs(imeas.f-marker_freq))
 | 
								marker_point = np.argmin(np.abs(imeas.f-marker_freq))
 | 
				
			||||||
			marker_height = ang_rms[marker_point]
 | 
								marker_height = ang_rms[marker_point]+2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			# The goal is to take the usual step size of 50,
 | 
								# The goal is to take the usual step size of 50,
 | 
				
			||||||
			# and then equate that with a 1-degree step in RMS Error
 | 
								# and then equate that with a 1-degree step in RMS Error
 | 
				
			||||||
| 
						 | 
					@ -371,8 +374,13 @@ for filename in os.listdir(source_directory):
 | 
				
			||||||
				aR.set_ylim(yRscl*yXover + yRmrks)
 | 
									aR.set_ylim(yRscl*yXover + yRmrks)
 | 
				
			||||||
				aT.set_ylim(yTscl*yXover + yTmrks)
 | 
									aT.set_ylim(yTscl*yXover + yTmrks)
 | 
				
			||||||
			#aT.set_ylim(aR.get_ylim()/np.array(20)+9)
 | 
								#aT.set_ylim(aR.get_ylim()/np.array(20)+9)
 | 
				
			||||||
			aT.set_ylim((0,20))
 | 
								aT.set_yticks(np.arange(0,11,5))
 | 
				
			||||||
 | 
								aR.set_yticks(np.arange(0,361,60))
 | 
				
			||||||
 | 
								aT.set_ylim((0,50))
 | 
				
			||||||
 | 
								aR.set_ylim((-90,360))
 | 
				
			||||||
			aT.grid()
 | 
								aT.grid()
 | 
				
			||||||
 | 
								LPRDefaultPlotting.addHalfTicks(aT)
 | 
				
			||||||
 | 
								LPRDefaultPlotting.addHalfTicks(aR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			aT.get_lines()[0].set_linewidth(2.0)
 | 
								aT.get_lines()[0].set_linewidth(2.0)
 | 
				
			||||||
			aT.get_lines()[0].set_linestyle('-.')
 | 
								aT.get_lines()[0].set_linestyle('-.')
 | 
				
			||||||
| 
						 | 
					@ -380,9 +388,9 @@ for filename in os.listdir(source_directory):
 | 
				
			||||||
			LPRDefaultPlotting.annotateArrow(aT, marker_height-0.5, \
 | 
								LPRDefaultPlotting.annotateArrow(aT, marker_height-0.5, \
 | 
				
			||||||
				[marker_freq+0.05, marker_freq+0.15])
 | 
									[marker_freq+0.05, marker_freq+0.15])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		ax[5].set_ylim(np.array([0, 20]))
 | 
							#ax[5].set_ylim(np.array([0, 20]))
 | 
				
			||||||
		#ax[3].set_ylim(np.array([0, 42]))
 | 
							#ax[3].set_ylim(np.array([0, 42]))
 | 
				
			||||||
		ax[3].set_ylim(np.array([0, 23]))
 | 
							#ax[3].set_ylim(np.array([0, 23]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for aT in ax:
 | 
							for aT in ax:
 | 
				
			||||||
			aT.set_xlabel('Frequency (GHz)')
 | 
								aT.set_xlabel('Frequency (GHz)')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										180
									
								
								rev_simplot.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										180
									
								
								rev_simplot.py
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,180 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					import matplotlib
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					args_parser = argparse.ArgumentParser()
 | 
				
			||||||
 | 
					args_parser.add_argument('--save','-s', action='store_true',
 | 
				
			||||||
 | 
						help='save to files')
 | 
				
			||||||
 | 
					args_parser.add_argument('--raster','-r', action='store_true',
 | 
				
			||||||
 | 
						help='save as raster')
 | 
				
			||||||
 | 
					args_parser.add_argument('--debug','-d', action='store_true',
 | 
				
			||||||
 | 
						help='hold for debugging')
 | 
				
			||||||
 | 
					args_parser.add_argument('--headless','-q', action='store_true',
 | 
				
			||||||
 | 
						help='Remain neadless even if we aren\'t saving files.')
 | 
				
			||||||
 | 
					args_parser.add_argument('-n', type=int, default=0,
 | 
				
			||||||
 | 
						help='plot testing number')
 | 
				
			||||||
 | 
					args = args_parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					if args.raster:
 | 
				
			||||||
 | 
						args.save = True
 | 
				
			||||||
 | 
						fig_ext = 'png'
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
						fig_ext = 'pdf'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					HEADLESS = not 'DISPLAY' in os.environ.keys()
 | 
				
			||||||
 | 
					if args.headless: HEADLESS = True	# Override Manually if request
 | 
				
			||||||
 | 
					if HEADLESS: matplotlib.use('Agg')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from matplotlib import rcParams, pyplot as pp
 | 
				
			||||||
 | 
					if not HEADLESS: pp.interactive(True)
 | 
				
			||||||
 | 
					import LPRDefaultPlotting
 | 
				
			||||||
 | 
					from tankComputers import *
 | 
				
			||||||
 | 
					import csv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_list = [
 | 
				
			||||||
 | 
						['NF_vs_Freq',
 | 
				
			||||||
 | 
							'20190727_PS_NoiseFigure_Simulation_NoBuffer_Frequency'],
 | 
				
			||||||
 | 
						['NF_vs_Bias',
 | 
				
			||||||
 | 
							'20190727_PS_NoiseFigure_Simulation_NoBuffer'],
 | 
				
			||||||
 | 
						['stability',
 | 
				
			||||||
 | 
							'20190727_PS_KF_Simulation_NoBuffer_BiasDP_WorstCase_C9'],
 | 
				
			||||||
 | 
						['stability_corners',
 | 
				
			||||||
 | 
							'20190810_PS_KF_Simulation_NoBuffer_BiasDP_WorstCase_C9_Corners']
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_test = file_list[args.n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fig_dir='figures-revised'
 | 
				
			||||||
 | 
					fn='revisedData/clean_%s.csv' % (file_test[1])
 | 
				
			||||||
 | 
					fo=file_test[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fh=open(fn,'r')
 | 
				
			||||||
 | 
					reader=csv.reader(fh)
 | 
				
			||||||
 | 
					h1 = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n in [0,1,2]: # X/Y data
 | 
				
			||||||
 | 
						x_dat=[]
 | 
				
			||||||
 | 
						y_dat=[]
 | 
				
			||||||
 | 
						reader.__next__() # toss the keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for row in reader:
 | 
				
			||||||
 | 
							x_dat.append(float(row[0]))
 | 
				
			||||||
 | 
							y_dat.append(float(row[1]))
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					if args.n in [3]: # X/Y data
 | 
				
			||||||
 | 
						x_dat=[]
 | 
				
			||||||
 | 
						y_dat=[]
 | 
				
			||||||
 | 
						legend_strs = reader.__next__() # toss the keys
 | 
				
			||||||
 | 
						legend_strs = legend_strs[1:]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for row in reader:
 | 
				
			||||||
 | 
							x_dat.append(float(row[0]))
 | 
				
			||||||
 | 
							y_dat.append(np.array([float(x) for x in row[1:]]))
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
					y_lims = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 0:
 | 
				
			||||||
 | 
						x = 1e-9 * np.array(x_dat)
 | 
				
			||||||
 | 
						lab_x = 'Frequency (GHz)'
 | 
				
			||||||
 | 
						lab_title = 'Noise Figure vs. Frequency'
 | 
				
			||||||
 | 
						h1=pp.figure(figsize=(3.4,1.8))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 1:
 | 
				
			||||||
 | 
						x = np.array(x_dat)*1e3
 | 
				
			||||||
 | 
						lab_x = 'Bias (mV)'
 | 
				
			||||||
 | 
						lab_title = 'Noise Figure vs. Q-enhancement bias'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n in [0, 1]:
 | 
				
			||||||
 | 
						y = np.array(y_dat)
 | 
				
			||||||
 | 
						lab_y = 'Noise Figure (dB)'
 | 
				
			||||||
 | 
						y_lims = [9.7, 10.7]
 | 
				
			||||||
 | 
						x_lims = [min(x),max(x)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 2:
 | 
				
			||||||
 | 
						x = np.array(x_dat) * 1e3
 | 
				
			||||||
 | 
						y = np.array(y_dat)
 | 
				
			||||||
 | 
						lab_x = 'Bias (mV)'
 | 
				
			||||||
 | 
						lab_y = '$K_f$ (-)'
 | 
				
			||||||
 | 
						lab_title = 'Stability vs. Bias'
 | 
				
			||||||
 | 
						y_lims = [-2, 50]
 | 
				
			||||||
 | 
						x_lims = [250,500]
 | 
				
			||||||
 | 
						h1=pp.figure(figsize=(3.4,2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 3:
 | 
				
			||||||
 | 
						x = np.array(x_dat) * 1e3
 | 
				
			||||||
 | 
						y = np.array(y_dat)
 | 
				
			||||||
 | 
						lab_x = 'Bias (mV)'
 | 
				
			||||||
 | 
						lab_y = '$K_f$ (-)'
 | 
				
			||||||
 | 
						lab_title = 'Stability vs. Bias'
 | 
				
			||||||
 | 
						y_lims = [-5, 50]
 | 
				
			||||||
 | 
						x_lims = [min(x),500]
 | 
				
			||||||
 | 
						h1=pp.figure(figsize=(3.4,2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					if h1 == None: h1 = pp.figure(figsize=(3.4,2))
 | 
				
			||||||
 | 
					ax = h1.add_subplot(1,1,1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ax.plot(x,y)
 | 
				
			||||||
 | 
					ax.set_title(lab_title)
 | 
				
			||||||
 | 
					ax.set_xlabel(lab_x)
 | 
				
			||||||
 | 
					ax.set_ylabel(lab_y)
 | 
				
			||||||
 | 
					ax.set_xlim(x_lims)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if y_lims != None: ax.set_ylim(y_lims)
 | 
				
			||||||
 | 
					if args.n == 2:
 | 
				
			||||||
 | 
						nl_x = np.ones((2,1))*min(x[y <= 0])
 | 
				
			||||||
 | 
						nl_y = ax.get_ylim()
 | 
				
			||||||
 | 
						nl_1 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						nl_x = np.ones((2,1))*400
 | 
				
			||||||
 | 
						nl_2 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						for nl in [nl_1, nl_2]:
 | 
				
			||||||
 | 
							nl.set_color('C1')
 | 
				
			||||||
 | 
						ax.add_line(nl_1)
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrow(ax, 5, [397, 381], direction='left')
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrow(ax, 10, [481, 495])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
							"Measurement\nBound", 5, 350)
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
							"Unstable\nRegion", 15, 475)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ax.add_line(nl_2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 3:
 | 
				
			||||||
 | 
						line = ax.get_lines()[0]
 | 
				
			||||||
 | 
						line.set_linewidth(line.get_linewidth()*2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						nl_x = ax.get_xlim()
 | 
				
			||||||
 | 
						nl_y = np.ones((2,1))*1
 | 
				
			||||||
 | 
						#nl_x = np.ones((2,1))*min(x[np.any(y <= 1,1)])
 | 
				
			||||||
 | 
						nl_1 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						nl_y = ax.get_ylim()
 | 
				
			||||||
 | 
						nl_x = np.ones((2,1))*400
 | 
				
			||||||
 | 
						nl_2 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						for nl in [nl_1, nl_2]:
 | 
				
			||||||
 | 
							nl.set_color('K')
 | 
				
			||||||
 | 
						ax.add_line(nl_1)
 | 
				
			||||||
 | 
						#legend_strs.append('Unstable')
 | 
				
			||||||
 | 
						leg=ax.legend(legend_strs, labelspacing=0)
 | 
				
			||||||
 | 
						#leg.set_frame_on(False)
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrow(ax, 35.5, [395, 310], direction='left')
 | 
				
			||||||
 | 
						#LPRDefaultPlotting.annotateArrow(ax, 10, [481, 495])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
							"Measurement\nBound", 35, 270)
 | 
				
			||||||
 | 
						#LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
						#	"Unstable\nRegion", 15, 475)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ax.add_line(nl_2)
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					ax.grid(True)
 | 
				
			||||||
 | 
					h1.tight_layout()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.save:
 | 
				
			||||||
 | 
						h1.savefig('%s/%s.%s' % (fig_dir, fo, fig_ext))
 | 
				
			||||||
 | 
					if HEADLESS:
 | 
				
			||||||
 | 
						pp.close()
 | 
				
			||||||
							
								
								
									
										127
									
								
								rev_simplot_stab.py
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										127
									
								
								rev_simplot_stab.py
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,127 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					import matplotlib
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					args_parser = argparse.ArgumentParser()
 | 
				
			||||||
 | 
					args_parser.add_argument('--save','-s', action='store_true',
 | 
				
			||||||
 | 
						help='save to files')
 | 
				
			||||||
 | 
					args_parser.add_argument('--raster','-r', action='store_true',
 | 
				
			||||||
 | 
						help='save as raster')
 | 
				
			||||||
 | 
					args_parser.add_argument('--debug','-d', action='store_true',
 | 
				
			||||||
 | 
						help='hold for debugging')
 | 
				
			||||||
 | 
					args_parser.add_argument('--headless','-q', action='store_true',
 | 
				
			||||||
 | 
						help='Remain neadless even if we aren\'t saving files.')
 | 
				
			||||||
 | 
					args_parser.add_argument('-n', type=int, default=0,
 | 
				
			||||||
 | 
						help='plot testing number')
 | 
				
			||||||
 | 
					args = args_parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					if args.raster:
 | 
				
			||||||
 | 
						args.save = True
 | 
				
			||||||
 | 
						fig_ext = 'png'
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
						fig_ext = 'pdf'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					HEADLESS = not 'DISPLAY' in os.environ.keys()
 | 
				
			||||||
 | 
					if args.headless: HEADLESS = True	# Override Manually if request
 | 
				
			||||||
 | 
					if HEADLESS: matplotlib.use('Agg')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from matplotlib import rcParams, pyplot as pp
 | 
				
			||||||
 | 
					if not HEADLESS: pp.interactive(True)
 | 
				
			||||||
 | 
					import LPRDefaultPlotting
 | 
				
			||||||
 | 
					from tankComputers import *
 | 
				
			||||||
 | 
					import csv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_list = [
 | 
				
			||||||
 | 
						['stability_corners',
 | 
				
			||||||
 | 
						'20190727_PS_KF_Simulation_NoBuffer_BiasDP_WorstCase_C9']
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_test = file_list[args.n]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fig_dir='figures-revised'
 | 
				
			||||||
 | 
					fn='revisedData/clean_%s.csv' % (file_test[1])
 | 
				
			||||||
 | 
					fo=file_test[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fh=open(fn,'r')
 | 
				
			||||||
 | 
					reader=csv.reader(fh)
 | 
				
			||||||
 | 
					h1 = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n in [0,1,2]: # X/Y data
 | 
				
			||||||
 | 
						x_dat=[]
 | 
				
			||||||
 | 
						y_dat=[]
 | 
				
			||||||
 | 
						reader.__next__() # toss the keys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for row in reader:
 | 
				
			||||||
 | 
							x_dat.append(float(row[0]))
 | 
				
			||||||
 | 
							y_dat.append(float(row[1]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					y_lims = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 0:
 | 
				
			||||||
 | 
						x = 1e-9 * np.array(x_dat)
 | 
				
			||||||
 | 
						lab_x = 'Frequency (GHz)'
 | 
				
			||||||
 | 
						lab_title = 'Noise Figure vs. Frequency'
 | 
				
			||||||
 | 
						h1=pp.figure(figsize=(3.4,1.8))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 1:
 | 
				
			||||||
 | 
						x = np.array(x_dat)*1e3
 | 
				
			||||||
 | 
						lab_x = 'Bias (mV)'
 | 
				
			||||||
 | 
						lab_title = 'Noise Figure vs. Q-enhancement bias'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n in [0, 1]:
 | 
				
			||||||
 | 
						y = np.array(y_dat)
 | 
				
			||||||
 | 
						lab_y = 'Noise Figure (dB)'
 | 
				
			||||||
 | 
						y_lims = [9.7, 10.7]
 | 
				
			||||||
 | 
						x_lims = [min(x),max(x)]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.n == 2:
 | 
				
			||||||
 | 
						x = np.array(x_dat) * 1e3
 | 
				
			||||||
 | 
						y = np.array(y_dat)
 | 
				
			||||||
 | 
						lab_x = 'Bias (mV)'
 | 
				
			||||||
 | 
						lab_y = '$K_f$ (-)'
 | 
				
			||||||
 | 
						lab_title = 'Stability vs. Bias'
 | 
				
			||||||
 | 
						y_lims = [-2, 50]
 | 
				
			||||||
 | 
						x_lims = [min(x),500]
 | 
				
			||||||
 | 
						h1=pp.figure(figsize=(3.4,2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if h1 == None: h1 = pp.figure(figsize=(3.4,2))
 | 
				
			||||||
 | 
					ax = h1.add_subplot(1,1,1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ax.plot(x,y)
 | 
				
			||||||
 | 
					ax.set_title(lab_title)
 | 
				
			||||||
 | 
					ax.set_xlabel(lab_x)
 | 
				
			||||||
 | 
					ax.set_ylabel(lab_y)
 | 
				
			||||||
 | 
					ax.set_xlim(x_lims)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if y_lims != None: ax.set_ylim(y_lims)
 | 
				
			||||||
 | 
					if args.n == 2:
 | 
				
			||||||
 | 
						nl_x = np.ones((2,1))*min(x[y <= 0])
 | 
				
			||||||
 | 
						nl_y = ax.get_ylim()
 | 
				
			||||||
 | 
						nl_1 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						nl_x = np.ones((2,1))*400
 | 
				
			||||||
 | 
						nl_2 = matplotlib.lines.Line2D(nl_x, nl_y)
 | 
				
			||||||
 | 
						for nl in [nl_1, nl_2]:
 | 
				
			||||||
 | 
							nl.set_color('C1')
 | 
				
			||||||
 | 
						ax.add_line(nl_1)
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrow(ax, 5, [397, 381], direction='left')
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrow(ax, 10, [481, 495])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
							"Measurement\nBound", 5, 350)
 | 
				
			||||||
 | 
						LPRDefaultPlotting.annotateArrowStr(ax, 
 | 
				
			||||||
 | 
							"Unstable\nRegion", 15, 475)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ax.add_line(nl_2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ax.grid(True)
 | 
				
			||||||
 | 
					h1.tight_layout()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if args.save:
 | 
				
			||||||
 | 
						h1.savefig('%s/%s.%s' % (fig_dir, fo, fig_ext))
 | 
				
			||||||
 | 
					if HEADLESS:
 | 
				
			||||||
 | 
						pp.close()
 | 
				
			||||||
							
								
								
									
										77
									
								
								rev_stabplot.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								rev_stabplot.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,77 @@
 | 
				
			||||||
 | 
					#!/usr/bin/env python3
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import argparse
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					import matplotlib
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					args_parser = argparse.ArgumentParser()
 | 
				
			||||||
 | 
					args_parser.add_argument('--save','-s', action='store_true',
 | 
				
			||||||
 | 
						help='save to files')
 | 
				
			||||||
 | 
					args_parser.add_argument('--raster','-r', action='store_true',
 | 
				
			||||||
 | 
						help='save as raster')
 | 
				
			||||||
 | 
					args_parser.add_argument('--debug','-d', action='store_true',
 | 
				
			||||||
 | 
						help='hold for debugging')
 | 
				
			||||||
 | 
					args_parser.add_argument('--headless','-q', action='store_true',
 | 
				
			||||||
 | 
						help='Remain neadless even if we aren\'t saving files.')
 | 
				
			||||||
 | 
					args = args_parser.parse_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					if args.raster:
 | 
				
			||||||
 | 
						args.save = True
 | 
				
			||||||
 | 
						fig_ext = 'png'
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
						fig_ext = 'pdf'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					HEADLESS = not 'DISPLAY' in os.environ.keys()
 | 
				
			||||||
 | 
					if args.headless: HEADLESS = True	# Override Manually if request
 | 
				
			||||||
 | 
					if HEADLESS: matplotlib.use('Agg')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from matplotlib import rcParams, pyplot as pp
 | 
				
			||||||
 | 
					if not HEADLESS: pp.interactive(True)
 | 
				
			||||||
 | 
					import LPRDefaultPlotting
 | 
				
			||||||
 | 
					import csv
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					file_test = ['stability_contour',
 | 
				
			||||||
 | 
							'20190727_PS_KFMin_MatrixFine_Value']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fig_dir='figures-revised'
 | 
				
			||||||
 | 
					fn='revisedData/%s.csv' % (file_test[1])
 | 
				
			||||||
 | 
					fo=file_test[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fh=open(fn,'r')
 | 
				
			||||||
 | 
					reader=csv.reader(fh)
 | 
				
			||||||
 | 
					h1 = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					d=[]
 | 
				
			||||||
 | 
					for row in reader:
 | 
				
			||||||
 | 
						d.append([float(x) for x in row])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					d=np.array(d)
 | 
				
			||||||
 | 
					bias = d[0,1:]
 | 
				
			||||||
 | 
					code = d[1:,0]
 | 
				
			||||||
 | 
					kf = d[1:,1:]
 | 
				
			||||||
 | 
					kf[kf > 20]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					h1 = pp.figure(figsize=(3.4,3.4))
 | 
				
			||||||
 | 
					ax = h1.add_subplot(1,1,1)
 | 
				
			||||||
 | 
					bias_m,code_m = np.meshgrid(bias,code)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cs = ax.contour(bias_m, code_m, kf)
 | 
				
			||||||
 | 
					cl = ax.clabel(cs, inline=1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if False:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ax.plot(x,y)
 | 
				
			||||||
 | 
						ax.set_title(lab_title)
 | 
				
			||||||
 | 
						ax.set_xlabel(lab_x)
 | 
				
			||||||
 | 
						ax.set_ylabel(lab_y)
 | 
				
			||||||
 | 
						ax.set_xlim(x_lims)
 | 
				
			||||||
 | 
						if y_lims != None: ax.set_ylim(y_lims)
 | 
				
			||||||
 | 
						ax.grid(True)
 | 
				
			||||||
 | 
						h1.tight_layout()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if args.save:
 | 
				
			||||||
 | 
							h1.savefig('%s/%s.%s' % (fig_dir, fo, fig_ext))
 | 
				
			||||||
 | 
						if HEADLESS:
 | 
				
			||||||
 | 
							pp.close()
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAX_JOBS=4
 | 
					MAX_JOBS=8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Starting:"
 | 
					echo "Starting:"
 | 
				
			||||||
# First run brute force misc jobs
 | 
					# First run brute force misc jobs
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAX_JOBS=4
 | 
					MAX_JOBS=8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#for n in $(seq 1 4); do
 | 
					#for n in $(seq 1 4); do
 | 
				
			||||||
for n in 4; do
 | 
					for n in 4; do
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MAX_JOBS=4
 | 
					MAX_JOBS=8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
for n in 2 12; do
 | 
					for n in 2 12; do
 | 
				
			||||||
	while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
 | 
						while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -399,6 +399,12 @@ if 2 in plot_list or 12 in plot_list:
 | 
				
			||||||
	ax2[2].set_ylim(ax2[0].get_ylim()/np.array(1)+4)
 | 
						ax2[2].set_ylim(ax2[0].get_ylim()/np.array(1)+4)
 | 
				
			||||||
	ax2[3].set_ylim((0,20))
 | 
						ax2[3].set_ylim((0,20))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ax2[1].set_ylim((-260,180))
 | 
				
			||||||
 | 
						ax2[3].set_yticks(np.linspace(0,44,12))
 | 
				
			||||||
 | 
						ax2[3].set_yticks([x for x in ax2[3].get_yticks() if x <= 8])
 | 
				
			||||||
 | 
						LPRDefaultPlotting.addHalfTicks(ax2[3])
 | 
				
			||||||
 | 
						LPRDefaultPlotting.addHalfTicks(ax2[2])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	marker_freq = 28.2
 | 
						marker_freq = 28.2
 | 
				
			||||||
	marker_point = np.argmin(np.abs(f.hz-marker_freq))
 | 
						marker_point = np.argmin(np.abs(f.hz-marker_freq))
 | 
				
			||||||
	marker_height = tf_gain_pm[marker_point]
 | 
						marker_height = tf_gain_pm[marker_point]
 | 
				
			||||||
| 
						 | 
					@ -406,8 +412,9 @@ if 2 in plot_list or 12 in plot_list:
 | 
				
			||||||
		[marker_freq+0.05, marker_freq+0.25])
 | 
							[marker_freq+0.05, marker_freq+0.25])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	marker_freq = 28.39
 | 
						marker_freq = 28.39
 | 
				
			||||||
 | 
						marker_freq = 27.52
 | 
				
			||||||
	marker_point = np.argmin(np.abs(f.hz-marker_freq))
 | 
						marker_point = np.argmin(np.abs(f.hz-marker_freq))
 | 
				
			||||||
	marker_height = tf_ang_rms[marker_point]
 | 
						marker_height = tf_ang_rms[marker_point]+2
 | 
				
			||||||
	LPRDefaultPlotting.annotateArrow(ax2[3], marker_height, \
 | 
						LPRDefaultPlotting.annotateArrow(ax2[3], marker_height, \
 | 
				
			||||||
		[marker_freq+0.05, marker_freq+0.25])
 | 
							[marker_freq+0.05, marker_freq+0.25])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue