import csv
import time
import string
import requests
import json
import numpy
import pandas as pd
import matplotlib.pyplot as plt
import scrapy
from scrapy.crawler import CrawlerProcess
power = pd.read_csv('docs/B18U01_804A_Power_NC_power.csv')
power.head()
Unnamed: 0 | Test | Die | VDD (V) | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Id (mA) | Unnamed: 8 | Freq (GHz) | ... | Unnamed: 17 | Unnamed: 18 | Unnamed: 19 | Unnamed: 20 | Unnamed: 21 | Unnamed: 22 | Unnamed: 23 | Unnamed: 24 | Unnamed: 25 | Unnamed: 26 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | POW1 | AD10 | 5 | # | # | # | 58.76 | # | 0.5 | ... | # | # | # | # | # | # | # | # | # | # |
1 | 693862 | POW1 | AD10 | 5 | # | # | # | 58.23 | # | 2.0 | ... | # | # | # | # | # | # | # | # | # | # |
2 | 693862 | POW1 | AD10 | 5 | # | # | # | 58.30 | # | 6.0 | ... | # | # | # | # | # | # | # | # | # | # |
3 | 693862 | POW1 | AD10 | 5 | # | # | # | 58.42 | # | 8.0 | ... | # | # | # | # | # | # | # | # | # | # |
4 | 693862 | POW1 | AD10 | 5 | # | # | # | 58.84 | # | 12.0 | ... | # | # | # | # | # | # | # | # | # | # |
5 rows × 27 columns
# Drop unnecessary columns
power = power.drop(columns=['Unnamed: 4', 'Unnamed: 5', 'Unnamed: 6', 'Unnamed: 8',
'Unnamed: 11', 'Unnamed: 13', 'Unnamed: 16', 'Unnamed: 17',
'Unnamed: 18', 'Unnamed: 19', 'Unnamed: 20', 'Unnamed: 21',
'Unnamed: 22', 'Unnamed: 23', 'Unnamed: 24', 'Unnamed: 25',
'Unnamed: 26'])
power.head()
Unnamed: 0 | Test | Die | VDD (V) | Id (mA) | Freq (GHz) | Pin (dBm) | Pin (dBm).1 | Pout (dBm) | Gain (dB) | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | POW1 | AD10 | 5 | 58.76 | 0.5 | -9 | -9.035750 | 7.550 | 16.550 |
1 | 693862 | POW1 | AD10 | 5 | 58.23 | 2.0 | -9 | -8.983687 | 7.952 | 16.952 |
2 | 693862 | POW1 | AD10 | 5 | 58.30 | 6.0 | -9 | -9.026563 | 7.698 | 16.698 |
3 | 693862 | POW1 | AD10 | 5 | 58.42 | 8.0 | -9 | -8.969000 | 8.024 | 17.024 |
4 | 693862 | POW1 | AD10 | 5 | 58.84 | 12.0 | -9 | -8.952312 | 9.724 | 18.724 |
# Rename columns
power.columns = ['ID', 'Test', 'Die', 'Vdd', 'Id', 'Freq', 'Pin', 'Pin_measured', 'Pout', 'Gain']
power.head()
ID | Test | Die | Vdd | Id | Freq | Pin | Pin_measured | Pout | Gain | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | POW1 | AD10 | 5 | 58.76 | 0.5 | -9 | -9.035750 | 7.550 | 16.550 |
1 | 693862 | POW1 | AD10 | 5 | 58.23 | 2.0 | -9 | -8.983687 | 7.952 | 16.952 |
2 | 693862 | POW1 | AD10 | 5 | 58.30 | 6.0 | -9 | -9.026563 | 7.698 | 16.698 |
3 | 693862 | POW1 | AD10 | 5 | 58.42 | 8.0 | -9 | -8.969000 | 8.024 | 17.024 |
4 | 693862 | POW1 | AD10 | 5 | 58.84 | 12.0 | -9 | -8.952312 | 9.724 | 18.724 |
# Check datatypes
print(power.dtypes)
ID int64
Test object
Die object
Vdd int64
Id float64
Freq float64
Pin int64
Pin_measured float64
Pout float64
Gain float64
dtype: object
# Extract only the data for Pin=-9
power = power.loc[power['Pin'] == -9]
power.head()
ID | Test | Die | Vdd | Id | Freq | Pin | Pin_measured | Pout | Gain | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | POW1 | AD10 | 5 | 58.76 | 0.5 | -9 | -9.035750 | 7.550 | 16.550 |
1 | 693862 | POW1 | AD10 | 5 | 58.23 | 2.0 | -9 | -8.983687 | 7.952 | 16.952 |
2 | 693862 | POW1 | AD10 | 5 | 58.30 | 6.0 | -9 | -9.026563 | 7.698 | 16.698 |
3 | 693862 | POW1 | AD10 | 5 | 58.42 | 8.0 | -9 | -8.969000 | 8.024 | 17.024 |
4 | 693862 | POW1 | AD10 | 5 | 58.84 | 12.0 | -9 | -8.952312 | 9.724 | 18.724 |
# Extract all rows for Freq=0.5
power_500MHz = power.loc[power['Freq'] == 0.5].drop(['ID', 'Test', 'Die', 'Vdd', 'Pin_measured'], axis=1)
power_500MHz.head()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
0 | 58.76 | 0.5 | -9 | 7.550 | 16.550 |
80 | 58.51 | 0.5 | -9 | 7.654 | 16.654 |
160 | 58.64 | 0.5 | -9 | 7.606 | 16.606 |
240 | 58.38 | 0.5 | -9 | 7.280 | 16.280 |
281 | 59.05 | 0.5 | -9 | 7.632 | 16.632 |
# Export data to csv
power_500MHz.to_csv('docs/B18U01_804A_Power_NC_power_500MHz.csv')
# Plot gain distribution at 0.5GHz
power_500MHz.Gain.hist(bins=20)
plt.title('Gain Distribution @500MHz')
plt.xlabel('Gain @500MHz')
plt.ylabel('Count')
plt.show()
power_500MHz.describe()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
count | 199.000000 | 199.0 | 199.0 | 199.000000 | 199.000000 |
mean | 58.790352 | 0.5 | -9.0 | 7.442050 | 16.442050 |
std | 0.287915 | 0.0 | 0.0 | 0.091517 | 0.091517 |
min | 58.160000 | 0.5 | -9.0 | 7.249000 | 16.249000 |
25% | 58.610000 | 0.5 | -9.0 | 7.370500 | 16.370500 |
50% | 58.780000 | 0.5 | -9.0 | 7.436000 | 16.436000 |
75% | 58.990000 | 0.5 | -9.0 | 7.502500 | 16.502500 |
max | 59.420000 | 0.5 | -9.0 | 7.673000 | 16.673000 |
# Extract all rows for Freq=2
power_2GHz = power.loc[power['Freq'] == 2].drop(['ID', 'Test', 'Die', 'Vdd', 'Pin_measured'], axis=1)
power_2GHz.head()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
1 | 58.23 | 2.0 | -9 | 7.952 | 16.952 |
81 | 57.89 | 2.0 | -9 | 8.044 | 17.044 |
161 | 58.09 | 2.0 | -9 | 7.994 | 16.994 |
241 | 57.74 | 2.0 | -9 | 7.836 | 16.836 |
282 | 58.45 | 2.0 | -9 | 7.999 | 16.999 |
# Export data to csv
power_2GHz.to_csv('docs/B18U01_804A_Power_NC_power_2GHz.csv')
# Plot gain distribution at 2GHz
power_2GHz.Gain.hist(bins=20)
plt.title('Gain Distribution @2GHz')
plt.xlabel('Gain @2GHz')
plt.ylabel('Count')
plt.show()
power_2GHz.describe()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
count | 199.000000 | 199.0 | 199.0 | 199.000000 | 199.000000 |
mean | 58.081508 | 2.0 | -9.0 | 7.889543 | 16.889543 |
std | 0.311156 | 0.0 | 0.0 | 0.079377 | 0.079377 |
min | 57.450000 | 2.0 | -9.0 | 7.667000 | 16.667000 |
25% | 57.850000 | 2.0 | -9.0 | 7.831000 | 16.831000 |
50% | 58.070000 | 2.0 | -9.0 | 7.888000 | 16.888000 |
75% | 58.285000 | 2.0 | -9.0 | 7.949500 | 16.949500 |
max | 58.870000 | 2.0 | -9.0 | 8.074000 | 17.074000 |
# Extract all rows for Freq=6
power_6GHz = power.loc[power['Freq'] == 6].drop(['ID', 'Test', 'Die', 'Vdd', 'Pin_measured'], axis=1)
power_6GHz.head()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
2 | 58.30 | 6.0 | -9 | 7.698 | 16.698 |
82 | 57.97 | 6.0 | -9 | 7.756 | 16.756 |
162 | 58.17 | 6.0 | -9 | 7.732 | 16.732 |
242 | 57.90 | 6.0 | -9 | 6.752 | 15.752 |
283 | 58.59 | 6.0 | -9 | 7.728 | 16.728 |
# Export data to csv
power_6GHz.to_csv('docs/B18U01_804A_Power_NC_power_6GHz.csv')
# Plot gain distribution at 6GHz
power_6GHz.Gain.hist(bins=20)
plt.title('Gain Distribution @6GHz')
plt.xlabel('Gain @6GHz')
plt.ylabel('Count')
plt.show()
power_6GHz.describe()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
count | 199.000000 | 199.0 | 199.0 | 199.000000 | 199.000000 |
mean | 58.196935 | 6.0 | -9.0 | 7.668819 | 16.668819 |
std | 0.303582 | 0.0 | 0.0 | 0.103030 | 0.103030 |
min | 57.550000 | 6.0 | -9.0 | 6.752000 | 15.752000 |
25% | 57.970000 | 6.0 | -9.0 | 7.618000 | 16.618000 |
50% | 58.190000 | 6.0 | -9.0 | 7.667000 | 16.667000 |
75% | 58.395000 | 6.0 | -9.0 | 7.734500 | 16.734500 |
max | 58.980000 | 6.0 | -9.0 | 7.845000 | 16.845000 |
# Extract all rows for Freq=8
power_8GHz = power.loc[power['Freq'] == 8].drop(['ID', 'Test', 'Die', 'Vdd', 'Pin_measured'], axis=1)
power_8GHz.head()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
3 | 58.42 | 8.0 | -9 | 8.024 | 17.024 |
83 | 58.23 | 8.0 | -9 | 8.183 | 17.183 |
163 | 58.33 | 8.0 | -9 | 8.048 | 17.048 |
284 | 58.77 | 8.0 | -9 | 8.075 | 17.075 |
364 | 57.95 | 8.0 | -9 | 8.056 | 17.056 |
# Export data to csv
power_8GHz.to_csv('docs/B18U01_804A_Power_NC_power_8GHz.csv')
# Plot gain distribution at 8GHz
power_8GHz.Gain.hist(bins=20)
plt.title('Gain Distribution @8GHz')
plt.xlabel('Gain @8GHz')
plt.ylabel('Count')
plt.show()
power_8GHz.describe()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
count | 198.000000 | 198.0 | 198.0 | 198.000000 | 198.000000 |
mean | 58.442980 | 8.0 | -9.0 | 7.998076 | 16.998076 |
std | 0.293867 | 0.0 | 0.0 | 0.093862 | 0.093862 |
min | 57.770000 | 8.0 | -9.0 | 7.690000 | 16.690000 |
25% | 58.262500 | 8.0 | -9.0 | 7.952500 | 16.952500 |
50% | 58.430000 | 8.0 | -9.0 | 7.988000 | 16.988000 |
75% | 58.640000 | 8.0 | -9.0 | 8.056000 | 17.056000 |
max | 59.110000 | 8.0 | -9.0 | 8.200000 | 17.200000 |
# Extract all rows for Freq=12
power_12GHz = power.loc[power['Freq'] == 12].drop(['ID', 'Test', 'Die', 'Vdd', 'Pin_measured'], axis=1)
power_12GHz.head()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
4 | 58.84 | 12.0 | -9 | 9.724 | 18.724 |
84 | 58.58 | 12.0 | -9 | 9.591 | 18.591 |
164 | 58.72 | 12.0 | -9 | 9.601 | 18.601 |
285 | 59.16 | 12.0 | -9 | 9.757 | 18.757 |
365 | 58.37 | 12.0 | -9 | 9.717 | 18.717 |
# Export data to csv
power_12GHz.to_csv('docs/B18U01_804A_Power_NC_power_12GHz.csv')
# Plot gain distribution at 12GHz
power_12GHz.Gain.hist(bins=20)
plt.title('Gain Distribution @12GHz')
plt.xlabel('Gain @12GHz')
plt.ylabel('Count')
plt.show()
power_12GHz.describe()
Id | Freq | Pin | Pout | Gain | |
---|---|---|---|---|---|
count | 198.000000 | 198.0 | 198.0 | 198.000000 | 198.000000 |
mean | 58.881515 | 12.0 | -9.0 | 9.699510 | 18.699510 |
std | 0.298056 | 0.0 | 0.0 | 0.158162 | 0.158162 |
min | 58.170000 | 12.0 | -9.0 | 9.052000 | 18.052000 |
25% | 58.692500 | 12.0 | -9.0 | 9.648250 | 18.648250 |
50% | 58.880000 | 12.0 | -9.0 | 9.716500 | 18.716500 |
75% | 59.080000 | 12.0 | -9.0 | 9.775750 | 18.775750 |
max | 59.610000 | 12.0 | -9.0 | 10.029000 | 19.029000 |
dc = pd.read_csv('docs/B18U01_804A_Power_NC_DC.csv')
dc.head()
Unnamed: 0 | Test | Die | VDD (V) | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | ... | Unnamed: 17 | Unnamed: 18 | Unnamed: 19 | Unnamed: 20 | Unnamed: 21 | Unnamed: 22 | Unnamed: 23 | Unnamed: 24 | Unnamed: 25 | Unnamed: 26 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 693862.0 | TCC2 | AD10 | 5.0 | # | # | # | # | # | # | ... | # | # | # | # | # | # | # | # | # | # |
1 | 693862.0 | TCC2 | AD15 | 5.0 | # | # | # | # | # | # | ... | # | # | # | # | # | # | # | # | # | # |
2 | 693862.0 | TCC2 | AD16 | 5.0 | # | # | # | # | # | # | ... | # | # | # | # | # | # | # | # | # | # |
3 | 693862.0 | TCC2 | AD17 | 5.0 | # | # | # | # | # | # | ... | # | # | # | # | # | # | # | # | # | # |
4 | 693862.0 | TCC2 | AD18 | 5.0 | # | # | # | # | # | # | ... | # | # | # | # | # | # | # | # | # | # |
5 rows × 27 columns
# Drop unnecessary columns
dc = dc.drop(columns=['Unnamed: 4', 'Unnamed: 5', 'Unnamed: 6', 'Unnamed: 7', 'Unnamed: 8', 'Unnamed: 9', 'Unnamed: 12',
'Unnamed: 13', 'Unnamed: 14', 'Unnamed: 15', 'Unnamed: 16', 'Unnamed: 17', 'Unnamed: 18',
'Unnamed: 19', 'Unnamed: 20', 'Unnamed: 21', 'Unnamed: 22', 'Unnamed: 23', 'Unnamed: 24',
'Unnamed: 25', 'Unnamed: 26']).dropna()
dc.columns = ['ID', 'Test', 'Die', 'Vdd', 'Vg1', 'Idd']
dc.head()
ID | Test | Die | Vdd | Vg1 | Idd | |
---|---|---|---|---|---|---|
0 | 693862.0 | TCC2 | AD10 | 5.0 | -0.426875 | 0.05789 |
1 | 693862.0 | TCC2 | AD15 | 5.0 | -0.399375 | 0.05774 |
2 | 693862.0 | TCC2 | AD16 | 5.0 | -0.402813 | 0.05783 |
3 | 693862.0 | TCC2 | AD17 | 5.0 | -0.399375 | 0.05754 |
4 | 693862.0 | TCC2 | AD18 | 5.0 | -0.402813 | 0.05822 |
# Plot Vg1 distribution
dc.Vg1.hist(bins=20)
plt.title('Vg1 Distribution')
plt.xlabel('Vg1')
plt.ylabel('Count')
plt.show()
dc.describe()
ID | Vdd | Vg1 | Idd | |
---|---|---|---|---|
count | 199.0 | 199.0 | 199.000000 | 199.000000 |
mean | 693862.0 | 5.0 | -0.389460 | 0.058003 |
std | 0.0 | 0.0 | 0.026801 | 0.000294 |
min | 693862.0 | 5.0 | -0.461250 | 0.057430 |
25% | 693862.0 | 5.0 | -0.406250 | 0.057820 |
50% | 693862.0 | 5.0 | -0.392500 | 0.058010 |
75% | 693862.0 | 5.0 | -0.366719 | 0.058210 |
max | 693862.0 | 5.0 | -0.344375 | 0.058560 |
compression = pd.read_csv('docs/B18U01_804A_Power_NC_compression.csv')
compression.head()
Unnamed: 0 | Test | Die | VDD (V) | Unnamed: 4 | Freq (GHz) | Comp. level (dB) | Pin_comp(dBm) | Pout_comp (dBm) | Linear Gain | ... | Unnamed: 17 | Unnamed: 18 | Unnamed: 19 | Unnamed: 20 | Unnamed: 21 | Unnamed: 22 | Unnamed: 23 | Unnamed: 24 | Unnamed: 25 | Unnamed: 26 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | PDB2 | AD10 | 5 | # | 0.5 | 1 | 1.33 | 16.88 | 16.55 | ... | # | # | # | # | # | # | PASS | # | # | # |
1 | 693862 | PDB2 | AD10 | 5 | # | 2.0 | 1 | 0.11 | 16.06 | 16.95 | ... | # | # | # | # | # | # | PASS | # | # | # |
2 | 693862 | PDB2 | AD10 | 5 | # | 6.0 | 1 | 0.10 | 15.79 | 16.69 | ... | # | # | # | # | # | # | PASS | # | # | # |
3 | 693862 | PDB2 | AD10 | 5 | # | 8.0 | 1 | -0.35 | 15.67 | 17.02 | ... | # | # | # | # | # | # | PASS | # | # | # |
4 | 693862 | PDB2 | AD10 | 5 | # | 12.0 | 1 | -4.62 | 13.09 | 18.72 | ... | # | # | # | # | # | # | PASS | # | # | # |
5 rows × 27 columns
# Drop unnecessary columns
compression = compression.drop(columns=['Unnamed: 4','Unnamed: 11', 'Unnamed: 12', 'Unnamed: 13',
'Unnamed: 14', 'Unnamed: 15', 'Unnamed: 16', 'Unnamed: 17',
'Unnamed: 18', 'Unnamed: 19', 'Unnamed: 20', 'Unnamed: 21',
'Unnamed: 22', 'Unnamed: 23', 'Unnamed: 24', 'Unnamed: 25',
'Unnamed: 26'])
compression.head()
Unnamed: 0 | Test | Die | VDD (V) | Freq (GHz) | Comp. level (dB) | Pin_comp(dBm) | Pout_comp (dBm) | Linear Gain | Id (mA) | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | PDB2 | AD10 | 5 | 0.5 | 1 | 1.33 | 16.88 | 16.55 | 66.390 |
1 | 693862 | PDB2 | AD10 | 5 | 2.0 | 1 | 0.11 | 16.06 | 16.95 | 64.855 |
2 | 693862 | PDB2 | AD10 | 5 | 6.0 | 1 | 0.10 | 15.79 | 16.69 | 64.274 |
3 | 693862 | PDB2 | AD10 | 5 | 8.0 | 1 | -0.35 | 15.67 | 17.02 | 62.335 |
4 | 693862 | PDB2 | AD10 | 5 | 12.0 | 1 | -4.62 | 13.09 | 18.72 | 60.268 |
print(compression.dtypes)
Unnamed: 0 int64
Test object
Die object
VDD (V) int64
Freq (GHz) float64
Comp. level (dB) int64
Pin_comp(dBm) float64
Pout_comp (dBm) float64
Linear Gain float64
Id (mA) float64
dtype: object
# Rename columns
compression.columns = ['ID', 'Test', 'Die', 'Vdd', 'Freq', 'Compression Level', 'Pin_comp', 'Pout_comp', 'Linear Gain', 'Id']
compression.head()
ID | Test | Die | Vdd | Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | PDB2 | AD10 | 5 | 0.5 | 1 | 1.33 | 16.88 | 16.55 | 66.390 |
1 | 693862 | PDB2 | AD10 | 5 | 2.0 | 1 | 0.11 | 16.06 | 16.95 | 64.855 |
2 | 693862 | PDB2 | AD10 | 5 | 6.0 | 1 | 0.10 | 15.79 | 16.69 | 64.274 |
3 | 693862 | PDB2 | AD10 | 5 | 8.0 | 1 | -0.35 | 15.67 | 17.02 | 62.335 |
4 | 693862 | PDB2 | AD10 | 5 | 12.0 | 1 | -4.62 | 13.09 | 18.72 | 60.268 |
# Extract P-1dB data
compression_level_1dB = compression.loc[compression['Compression Level'] == 1].dropna()
compression_level_1dB.head()
ID | Test | Die | Vdd | Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 693862 | PDB2 | AD10 | 5 | 0.5 | 1 | 1.33 | 16.88 | 16.55 | 66.390 |
1 | 693862 | PDB2 | AD10 | 5 | 2.0 | 1 | 0.11 | 16.06 | 16.95 | 64.855 |
2 | 693862 | PDB2 | AD10 | 5 | 6.0 | 1 | 0.10 | 15.79 | 16.69 | 64.274 |
3 | 693862 | PDB2 | AD10 | 5 | 8.0 | 1 | -0.35 | 15.67 | 17.02 | 62.335 |
4 | 693862 | PDB2 | AD10 | 5 | 12.0 | 1 | -4.62 | 13.09 | 18.72 | 60.268 |
# Extract P-3dB data
compression_level_3dB = compression.loc[compression['Compression Level'] == 3].dropna()
compression_level_3dB.head()
ID | Test | Die | Vdd | Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|---|---|---|---|
5 | 693862 | PDB2 | AD10 | 5 | 0.5 | 3 | 5.16 | 18.71 | 16.55 | 70.883 |
6 | 693862 | PDB2 | AD10 | 5 | 2.0 | 3 | 3.90 | 17.86 | 16.95 | 70.517 |
7 | 693862 | PDB2 | AD10 | 5 | 6.0 | 3 | 4.02 | 17.71 | 16.69 | 69.217 |
8 | 693862 | PDB2 | AD10 | 5 | 8.0 | 3 | 3.80 | 17.82 | 17.02 | 65.642 |
9 | 693862 | PDB2 | AD10 | 5 | 12.0 | 3 | 0.06 | 15.78 | 18.72 | 62.861 |
compression_level_1dB_500MHz = compression_level_1dB.loc[compression_level_1dB['Freq'] == 0.5].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1).dropna()
compression_level_1dB_500MHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
0 | 0.5 | 1 | 1.33 | 16.88 | 16.55 | 66.390 |
10 | 0.5 | 1 | 0.97 | 16.63 | 16.65 | 64.983 |
20 | 0.5 | 1 | 1.11 | 16.72 | 16.60 | 65.554 |
30 | 0.5 | 1 | 1.16 | 16.79 | 16.63 | 66.031 |
40 | 0.5 | 1 | 1.08 | 16.66 | 16.58 | 65.069 |
# Export data to csv
compression_level_1dB_500MHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_1dB_500MHz.csv')
# Plot P1dB distribution at 0.5GHz
compression_level_1dB_500MHz.Pout_comp.hist(bins=20)
plt.title('P1dB Distribution @0.5GHz')
plt.xlabel('P1dB @0.5GHz')
plt.ylabel('Count')
plt.show()
compression_level_1dB_500MHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 0.5 | 1.0 | 0.944040 | 16.386970 | 16.438687 | 65.134843 |
std | 0.0 | 0.0 | 0.314287 | 0.325064 | 0.090897 | 1.044362 |
min | 0.5 | 1.0 | -0.220000 | 15.290000 | 16.240000 | 62.016000 |
25% | 0.5 | 1.0 | 0.732500 | 16.160000 | 16.370000 | 64.329750 |
50% | 0.5 | 1.0 | 1.015000 | 16.420000 | 16.430000 | 65.237000 |
75% | 0.5 | 1.0 | 1.130000 | 16.617500 | 16.500000 | 65.848250 |
max | 0.5 | 1.0 | 1.760000 | 17.080000 | 16.670000 | 67.889000 |
compression_level_1dB_2GHz = compression_level_1dB.loc[compression_level_1dB['Freq'] == 2].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_1dB_2GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
1 | 2.0 | 1 | 0.11 | 16.06 | 16.95 | 64.855 |
11 | 2.0 | 1 | -0.25 | 15.79 | 17.04 | 63.663 |
21 | 2.0 | 1 | -0.09 | 15.89 | 16.99 | 64.271 |
31 | 2.0 | 1 | 0.00 | 15.99 | 16.99 | 64.685 |
41 | 2.0 | 1 | -0.16 | 15.81 | 16.97 | 63.773 |
# Export data to csv
compression_level_1dB_2GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_1dB_2GHz.csv')
# Plot P1dB distribution at 2GHz
compression_level_1dB_2GHz.Pout_comp.hist(bins=20)
plt.title('P1dB Distribution @2GHz')
plt.xlabel('P1dB @2GHz')
plt.ylabel('Count')
plt.show()
compression_level_1dB_2GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.00000 |
mean | 2.0 | 1.0 | -0.186414 | 15.695253 | 16.885404 | 63.91949 |
std | 0.0 | 0.0 | 0.255454 | 0.249539 | 0.079501 | 0.78086 |
min | 2.0 | 1.0 | -1.270000 | 14.710000 | 16.660000 | 61.58200 |
25% | 2.0 | 1.0 | -0.337500 | 15.512500 | 16.830000 | 63.38425 |
50% | 2.0 | 1.0 | -0.145000 | 15.725000 | 16.880000 | 63.96500 |
75% | 2.0 | 1.0 | 0.000000 | 15.870000 | 16.947500 | 64.43750 |
max | 2.0 | 1.0 | 0.440000 | 16.300000 | 17.070000 | 66.03100 |
compression_level_1dB_6GHz = compression_level_1dB.loc[compression_level_1dB['Freq'] == 6].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_1dB_6GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
2 | 6.0 | 1 | 0.10 | 15.79 | 16.69 | 64.274 |
12 | 6.0 | 1 | -0.18 | 15.57 | 16.75 | 63.153 |
22 | 6.0 | 1 | -0.07 | 15.66 | 16.73 | 63.745 |
32 | 6.0 | 1 | -0.12 | 15.60 | 16.72 | 63.931 |
42 | 6.0 | 1 | -0.06 | 15.68 | 16.75 | 63.356 |
# Export data to csv
compression_level_1dB_6GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_1dB_6GHz.csv')
# Plot P1dB distribution at 6GHz
compression_level_1dB_6GHz.Pout_comp.hist(bins=20)
plt.title('P1dB Distribution @6GHz')
plt.xlabel('P1dB @6GHz')
plt.ylabel('Count')
plt.show()
compression_level_1dB_6GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 6.0 | 1.0 | -0.060960 | 15.607778 | 16.669040 | 63.588475 |
std | 0.0 | 0.0 | 0.242344 | 0.242546 | 0.079775 | 0.708473 |
min | 6.0 | 1.0 | -1.180000 | 14.530000 | 16.380000 | 61.390000 |
25% | 6.0 | 1.0 | -0.217500 | 15.440000 | 16.612500 | 63.072250 |
50% | 6.0 | 1.0 | -0.005000 | 15.650000 | 16.665000 | 63.644000 |
75% | 6.0 | 1.0 | 0.110000 | 15.780000 | 16.730000 | 64.051500 |
max | 6.0 | 1.0 | 0.710000 | 16.100000 | 16.840000 | 65.804000 |
compression_level_1dB_8GHz = compression_level_1dB.loc[compression_level_1dB['Freq'] == 8].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_1dB_8GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
3 | 8.0 | 1 | -0.35 | 15.67 | 17.02 | 62.335 |
13 | 8.0 | 1 | -1.08 | 15.10 | 17.18 | 61.188 |
23 | 8.0 | 1 | -0.70 | 15.34 | 17.04 | 61.786 |
33 | 8.0 | 1 | -0.73 | 15.33 | 17.07 | 62.192 |
43 | 8.0 | 1 | -0.75 | 15.30 | 17.05 | 61.328 |
# Export data to csv
compression_level_1dB_8GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_1dB_8GHz.csv')
# Plot P1dB distribution at 8GHz
compression_level_1dB_8GHz.Pout_comp.hist(bins=20)
plt.title('P1dB Distribution @8GHz')
plt.xlabel('P1dB @8GHz')
plt.ylabel('Count')
plt.show()
compression_level_1dB_8GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 8.0 | 1.0 | -0.667222 | 15.320909 | 16.993788 | 61.711783 |
std | 0.0 | 0.0 | 0.308224 | 0.298023 | 0.094010 | 0.580499 |
min | 8.0 | 1.0 | -2.000000 | 14.040000 | 16.690000 | 60.051000 |
25% | 8.0 | 1.0 | -0.867500 | 15.112500 | 16.950000 | 61.278000 |
50% | 8.0 | 1.0 | -0.620000 | 15.340000 | 16.980000 | 61.745000 |
75% | 8.0 | 1.0 | -0.462500 | 15.530000 | 17.050000 | 62.108000 |
max | 8.0 | 1.0 | 0.060000 | 16.020000 | 17.200000 | 63.266000 |
compression_level_1dB_12GHz = compression_level_1dB.loc[compression_level_1dB['Freq'] == 12].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_1dB_12GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
4 | 12.0 | 1 | -4.62 | 13.09 | 18.72 | 60.268 |
14 | 12.0 | 1 | -4.19 | 13.39 | 18.59 | 60.130 |
24 | 12.0 | 1 | -4.54 | 13.05 | 18.60 | 60.112 |
34 | 12.0 | 1 | -4.62 | 13.12 | 18.75 | 60.482 |
44 | 12.0 | 1 | -4.69 | 13.02 | 18.71 | 59.567 |
# Export data to csv
compression_level_1dB_12GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_1dB_12GHz.csv')
# Plot P1dB distribution at 12GHz
compression_level_1dB_12GHz.Pout_comp.hist(bins=20)
plt.title('P1dB Distribution @12GHz')
plt.xlabel('P1dB @12GHz')
plt.ylabel('Count')
plt.show()
compression_level_1dB_12GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 12.0 | 1.0 | -4.733586 | 12.955758 | 18.695404 | 60.020495 |
std | 0.0 | 0.0 | 0.411589 | 0.344755 | 0.157910 | 0.428966 |
min | 12.0 | 1.0 | -6.100000 | 11.610000 | 18.050000 | 59.078000 |
25% | 12.0 | 1.0 | -4.975000 | 12.760000 | 18.640000 | 59.734000 |
50% | 12.0 | 1.0 | -4.720000 | 12.960000 | 18.710000 | 60.020000 |
75% | 12.0 | 1.0 | -4.552500 | 13.177500 | 18.770000 | 60.288750 |
max | 12.0 | 1.0 | -3.320000 | 13.730000 | 19.020000 | 61.358000 |
compression_level_3dB_500MHz = compression_level_3dB.loc[compression_level_3dB['Freq'] == 0.5].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_3dB_500MHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
5 | 0.5 | 3 | 5.16 | 18.71 | 16.55 | 70.883 |
15 | 0.5 | 3 | 4.77 | 18.42 | 16.65 | 68.855 |
25 | 0.5 | 3 | 4.92 | 18.53 | 16.60 | 69.615 |
35 | 0.5 | 3 | 4.96 | 18.59 | 16.63 | 70.068 |
45 | 0.5 | 3 | 4.91 | 18.49 | 16.58 | 69.164 |
# Export data to csv
compression_level_3dB_500MHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_3dB_500MHz.csv')
# Plot P1dB distribution at 6GHz
compression_level_3dB_500MHz.Pout_comp.hist(bins=20)
plt.title('P3dB Distribution @0.5GHz')
plt.xlabel('P3dB @0.5GHz')
plt.ylabel('Count')
plt.show()
compression_level_3dB_500MHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 0.5 | 3.0 | 4.761263 | 18.203990 | 16.438687 | 68.790288 |
std | 0.0 | 0.0 | 0.308463 | 0.319539 | 0.090897 | 1.679216 |
min | 0.5 | 3.0 | 3.680000 | 17.180000 | 16.240000 | 63.522000 |
25% | 0.5 | 3.0 | 4.550000 | 17.970000 | 16.370000 | 67.557250 |
50% | 0.5 | 3.0 | 4.800000 | 18.230000 | 16.430000 | 69.007500 |
75% | 0.5 | 3.0 | 4.930000 | 18.427500 | 16.500000 | 69.852000 |
max | 0.5 | 3.0 | 5.580000 | 18.900000 | 16.670000 | 72.617000 |
compression_level_3dB_2GHz = compression_level_3dB.loc[compression_level_3dB['Freq'] == 2].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_3dB_2GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
6 | 2.0 | 3 | 3.90 | 17.86 | 16.95 | 70.517 |
16 | 2.0 | 3 | 3.49 | 17.54 | 17.04 | 68.544 |
26 | 2.0 | 3 | 3.65 | 17.65 | 16.99 | 69.455 |
36 | 2.0 | 3 | 3.68 | 17.68 | 16.99 | 69.716 |
46 | 2.0 | 3 | 3.60 | 17.58 | 16.97 | 68.987 |
# Export data to csv
compression_level_3dB_2GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_3dB_2GHz.csv')
# Plot P1dB distribution at 2GHz
compression_level_3dB_2GHz.Pout_comp.hist(bins=20)
plt.title('P3dB Distribution @2GHz')
plt.xlabel('P3dB @2GHz')
plt.ylabel('Count')
plt.show()
compression_level_3dB_2GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 2.0 | 3.0 | 3.533535 | 17.423485 | 16.885404 | 68.482773 |
std | 0.0 | 0.0 | 0.289194 | 0.284515 | 0.079501 | 1.558927 |
min | 2.0 | 3.0 | 2.540000 | 16.500000 | 16.660000 | 63.801000 |
25% | 2.0 | 3.0 | 3.330000 | 17.220000 | 16.830000 | 67.309000 |
50% | 2.0 | 3.0 | 3.570000 | 17.450000 | 16.880000 | 68.594500 |
75% | 2.0 | 3.0 | 3.710000 | 17.580000 | 16.947500 | 69.448250 |
max | 2.0 | 3.0 | 4.310000 | 18.110000 | 17.070000 | 72.171000 |
compression_level_3dB_6GHz = compression_level_3dB.loc[compression_level_3dB['Freq'] == 6].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_3dB_6GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
7 | 6.0 | 3 | 4.02 | 17.71 | 16.69 | 69.217 |
17 | 6.0 | 3 | 3.72 | 17.48 | 16.75 | 67.571 |
27 | 6.0 | 3 | 3.97 | 17.70 | 16.73 | 68.685 |
37 | 6.0 | 3 | 3.85 | 17.58 | 16.72 | 68.645 |
47 | 6.0 | 3 | 3.82 | 17.57 | 16.75 | 68.205 |
# Export data to csv
compression_level_3dB_6GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_3dB_6GHz.csv')
# Plot P1dB distribution at 6GHz
compression_level_3dB_6GHz.Pout_comp.hist(bins=20)
plt.title('P3dB Distribution @6GHz')
plt.xlabel('P3dB @6GHz')
plt.ylabel('Count')
plt.show()
compression_level_3dB_6GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 6.0 | 3.0 | 3.795657 | 17.469192 | 16.669040 | 67.747985 |
std | 0.0 | 0.0 | 0.243707 | 0.240018 | 0.079775 | 1.187995 |
min | 6.0 | 3.0 | 2.970000 | 16.680000 | 16.380000 | 64.084000 |
25% | 6.0 | 3.0 | 3.615000 | 17.290000 | 16.612500 | 66.841750 |
50% | 6.0 | 3.0 | 3.835000 | 17.490000 | 16.665000 | 67.885500 |
75% | 6.0 | 3.0 | 3.957500 | 17.637500 | 16.730000 | 68.548750 |
max | 6.0 | 3.0 | 4.490000 | 17.990000 | 16.840000 | 70.564000 |
compression_level_3dB_8GHz = compression_level_3dB.loc[compression_level_3dB['Freq'] == 8].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_3dB_8GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
8 | 8.0 | 3 | 3.80 | 17.82 | 17.02 | 65.642 |
18 | 8.0 | 3 | 3.21 | 17.40 | 17.18 | 63.935 |
28 | 8.0 | 3 | 3.47 | 17.52 | 17.04 | 64.799 |
38 | 8.0 | 3 | 3.57 | 17.65 | 17.07 | 65.293 |
48 | 8.0 | 3 | 3.47 | 17.52 | 17.05 | 64.497 |
# Export data to csv
compression_level_3dB_8GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_3dB_8GHz.csv')
# Plot P1dB distribution at 8GHz
compression_level_3dB_8GHz.Pout_comp.hist(bins=20)
plt.title('P3dB Distribution @8GHz')
plt.xlabel('P3dB @8GHz')
plt.ylabel('Count')
plt.show()
compression_level_3dB_8GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 8.0 | 3.0 | 3.483687 | 17.482374 | 16.993788 | 64.283030 |
std | 0.0 | 0.0 | 0.246301 | 0.230673 | 0.094010 | 0.962568 |
min | 8.0 | 3.0 | 2.560000 | 16.640000 | 16.690000 | 61.184000 |
25% | 8.0 | 3.0 | 3.300000 | 17.320000 | 16.950000 | 63.626750 |
50% | 8.0 | 3.0 | 3.520000 | 17.520000 | 16.980000 | 64.376000 |
75% | 8.0 | 3.0 | 3.620000 | 17.640000 | 17.050000 | 64.925250 |
max | 8.0 | 3.0 | 4.140000 | 18.030000 | 17.200000 | 66.522000 |
compression_level_3dB_12GHz = compression_level_3dB.loc[compression_level_3dB['Freq'] == 12].drop(['ID', 'Test', 'Die', 'Vdd'], axis=1)
compression_level_3dB_12GHz.head()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
9 | 12.0 | 3 | 0.06 | 15.78 | 18.72 | 62.861 |
19 | 12.0 | 3 | 0.37 | 15.96 | 18.59 | 63.196 |
29 | 12.0 | 3 | 0.24 | 15.84 | 18.60 | 62.452 |
39 | 12.0 | 3 | -0.12 | 15.62 | 18.75 | 62.600 |
49 | 12.0 | 3 | -0.17 | 15.54 | 18.71 | 61.687 |
# Export data to csv
compression_level_3dB_12GHz.to_csv('docs/B18U01_804A_Power_NC_compression_level_3dB_12GHz.csv')
# Plot P1dB distribution at 12GHz
compression_level_3dB_12GHz.Pout_comp.hist(bins=20)
plt.title('P3dB Distribution @12GHz')
plt.xlabel('P3dB @12GHz')
plt.ylabel('Count')
plt.show()
compression_level_3dB_12GHz.describe()
Freq | Compression Level | Pin_comp | Pout_comp | Linear Gain | Id | |
---|---|---|---|---|---|---|
count | 198.0 | 198.0 | 198.000000 | 198.000000 | 198.000000 | 198.000000 |
mean | 12.0 | 3.0 | -0.152525 | 15.539747 | 18.695404 | 61.859636 |
std | 0.0 | 0.0 | 0.404779 | 0.321218 | 0.157910 | 0.834855 |
min | 12.0 | 3.0 | -1.430000 | 14.280000 | 18.050000 | 59.739000 |
25% | 12.0 | 3.0 | -0.360000 | 15.372500 | 18.640000 | 61.253250 |
50% | 12.0 | 3.0 | -0.160000 | 15.560000 | 18.710000 | 61.821000 |
75% | 12.0 | 3.0 | 0.007500 | 15.737500 | 18.770000 | 62.315500 |
max | 12.0 | 3.0 | 1.080000 | 16.560000 | 19.020000 | 64.768000 |