|
8 | 8 | import sqlite3 |
9 | 9 | import datetime |
10 | 10 | import numpy as np |
11 | | -dbname = '/Users/sfujita/Desktop/DESHIMA/toptica/kid_test.db' |
| 11 | +#dbname = '/Users/sfujita/Desktop/DESHIMA/toptica/kid_test.db' |
| 12 | +dbname = '../kid_test.db' |
12 | 13 | conn = sqlite3.connect(dbname, |
13 | 14 | detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES) |
14 | 15 |
|
@@ -106,27 +107,68 @@ def kid_corresp(kids, args): |
106 | 107 | ax.set_ylabel('F_filter [GHz]') |
107 | 108 | fig.savefig(os.path.join(plotdir, 'raw.pdf')) |
108 | 109 | fig.savefig(os.path.join(plotdir, 'raw.png'), dpi = 300) |
| 110 | + plt.close() |
| 111 | + plt.clf() |
| 112 | + plt.cla() |
| 113 | + |
109 | 114 | # fig.savefig(os.path.join(plotdir, 'raw.design.pdf')) |
110 | 115 | # fig.savefig(os.path.join(plotdir, 'raw.design.png'), dpi = 300) |
111 | 116 |
|
112 | 117 | ########################## adjust |
| 118 | + |
| 119 | + |
| 120 | + #### Arend's adjustment |
| 121 | + # Split into left and right of LO |
| 122 | + measured_idx_sort = np.argsort(f_KID_measured) |
| 123 | + design_idx_sort = np.argsort(f_KID_design) |
| 124 | + |
| 125 | + F_filter_measured = F_filter_measured[measured_idx_sort] |
| 126 | + F_filter_design = F_filter_design[design_idx_sort] |
| 127 | + f_KID_measured = np.sort(f_KID_measured) |
| 128 | + f_KID_design = np.sort(f_KID_design) |
| 129 | + |
| 130 | + max_idx_measured = np.argmax(np.diff(f_KID_measured)) |
| 131 | + max_idx_design = np.argmax(np.diff(f_KID_design)) |
| 132 | + |
| 133 | + f_KID_measured_lo = f_KID_measured[:max_idx_measured+1] |
| 134 | + f_KID_measured_hi = f_KID_measured[max_idx_measured+1:] |
| 135 | + f_KID_design_lo = f_KID_design[:max_idx_design+1] |
| 136 | + f_KID_design_hi = f_KID_design[max_idx_design+1:] |
| 137 | + |
113 | 138 | def adjust(a, b): |
114 | 139 | ''' supposing a and b are numpy array''' |
115 | 140 | return a, (a.std()/b.std())*(b - b.mean()) + a.mean() |
116 | 141 |
|
117 | | - print( f_KID_design, f_KID_measured ) |
| 142 | + fKda_lo, fKma_lo = adjust(f_KID_design_lo, f_KID_measured_lo) |
| 143 | + fKda_hi, fKma_hi = adjust(f_KID_design_hi, f_KID_measured_hi) |
| 144 | + |
| 145 | + # Also adjust whole arrays, for the Y-axis rectification |
118 | 146 | fKda, fKma = adjust(f_KID_design, f_KID_measured) |
119 | 147 |
|
120 | 148 | Ffda, Ffma = adjust(F_filter_design, F_filter_measured) |
| 149 | + |
| 150 | + def rectify(a, b, offset): |
| 151 | + """ offset parameter to move to left and right of LO gap """ |
| 152 | + return a - a.mean() - offset, (b - b.mean())*a.std()/b.std() |
121 | 153 |
|
122 | | - def rectify(a, b): |
123 | | - return a - a.mean(), (b - b.mean())*a.std()/b.std() |
| 154 | + X_design_lo, Y_design_lo = rectify(fKda_lo, Ffda, offset=0.5) |
| 155 | + X_design_hi, Y_design_hi = rectify(fKda_hi, Ffda, offset=-0.5) |
| 156 | + _, Y_design = rectify(fKda, Ffda, offset=0) |
| 157 | + X_design = np.append(X_design_lo, X_design_hi) |
| 158 | + #Y_design = np.append(Y_design_lo, Y_design_hi) |
124 | 159 |
|
125 | | - X_design, Y_design = rectify(fKda, Ffda) |
126 | 160 | C_design = X_design + 1j*Y_design |
127 | | - X_measured, Y_measured = rectify(fKma, Ffma) |
| 161 | + |
| 162 | + X_measured_lo, Y_measured_lo = rectify(fKma_lo, Ffma, offset=0.5) |
| 163 | + X_measured_hi, Y_measured_hi = rectify(fKma_hi, Ffma, offset=-0.5) |
| 164 | + _, Y_measured = rectify(fKma, Ffma, offset=0) |
| 165 | + X_measured = np.append(X_measured_lo, X_measured_hi) |
| 166 | + #Y_measured = np.append(Y_measured_lo, Y_measured_hi) |
| 167 | + |
128 | 168 | C_measured = X_measured + 1j*Y_measured |
129 | 169 |
|
| 170 | + #### End of Arend's adjustment |
| 171 | + |
130 | 172 | ############# adj plot |
131 | 173 | fig, ax = plt.subplots(figsize = (8,8)) |
132 | 174 | ax.scatter(X_measured, Y_measured, label = 'Measured') |
@@ -204,12 +246,14 @@ def collision_handler(): |
204 | 246 | import json |
205 | 247 | ## add wideband KID |
206 | 248 | ref_list = [] |
207 | | - line_count = 0 |
208 | 249 | with open(os.path.join(outdir, "reference.dat")) as f: |
209 | 250 | for line in f: |
210 | | - if line_count != 0: |
| 251 | + if line[0] == '#': |
| 252 | + continue |
| 253 | + elif len(line[:-1]) == 0: |
| 254 | + continue |
| 255 | + else: |
211 | 256 | ref_list.append(int(line.split("\n")[0])) |
212 | | - line_count += 1 |
213 | 257 | print("reference.dat = ", ref_list) |
214 | 258 | tmpdict = {} |
215 | 259 | if len(ref_list)>=4: |
|
0 commit comments