INL-Measurements/INL-GraphfrombaseLine.py

69 lines
3.9 KiB
Python

## Have gitpython pull in the repository
import os
import git
import shutil
import pandas as pd
from matplotlib import pyplot as plt
import numpy as np
username = "####"
password = "####"
remote = f"https://{username}:{password}@git.0xc6.com/xans/INL-Measurements.git"
if not os.path.exists(os.getcwd()+"/INL-Measurements"):
git.Repo.clone_from(remote, os.getcwd()+"/INL-Measurements/")
print(os.getcwd()+"/INL-Measurements/")
else:
shutil.rmtree(os.getcwd()+"/INL-Measurements/", ignore_errors=True)
git.Repo.clone_from(remote, os.getcwd()+"/INL-Measurements/")
print(os.getcwd()+"/INL-Measurements/")
# List of all meters that will average out the calibrators INL
meterList = ['solartron-7081', 'hp-3458a', 'keysight-3458a', 'agilent-3458a',
'datron-1281', 'wavetek-1281','datron-1271', 'wavetek-1271',
'advantest-r6581t', 'advantest-r6581','fluke-8508', 'keithley-2002', 'hp-3458A-2823A14043']
# If directory name contains meters go down and load in dataframe
root, dirs, files = os.walk(os.getcwd()+"/INL-Measurements/").__next__()
dirs = [i for i in os.listdir(os.getcwd()+"/INL-Measurements/") if not i.__contains__(('.'))]
for dir in dirs:
rootdevice, dirsdevice, filesdevice = os.walk(os.getcwd()+"/INL-Measurements/"+dir).__next__()
for dirb in dirsdevice:
rootdata, dirsdata, filesdata = os.walk(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/").__next__()
filedirs = [i for i in filesdata if i.__contains__(('.csv'))]
for correctFile in filedirs:
if not os.path.exists(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/firstOrderRemoved"):
os.makedirs(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/firstOrderRemoved")
df = pd.read_csv(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/"+correctFile)
df_closesta = df.iloc[(df['Measured Volts']-10).abs().argsort()[:1]].index[0]
df_closestb = df.iloc[(df['Measured Volts']+10).abs().argsort()[:1]].index[0]
df_closestc = df.iloc[(df['Set Volts']-10).abs().argsort()[:1]].index[0]
df_closestd = df.iloc[(df['Set Volts']+10).abs().argsort()[:1]].index[0]
a = df.at[df_closestc,'Measured Volts'] - df.at[df_closesta,'Set Volts']
b = df.at[df_closestb,'Measured Volts'] - df.at[df_closestb,'Set Volts']
firstorderslope = (a - b)/(10*2)
for index, row in df.iterrows():
tempval = df.at[index,'Measured Volts']
df.at[index,'Measured Volts'] = df.at[index,'Measured Volts'] - firstorderslope*tempval
df.to_csv(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/firstOrderRemoved/"+correctFile, sep=';')
df = pd.read_csv(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/firstOrderRemoved/"+correctFile, sep=';')
plt.plot(df["Set Volts"], (df["Set Volts"]-df["Measured Volts"]))
plt.xlabel('Source Voltage')
plt.ylabel('Delta Set/Meas')
plt.title ('INLV sweep '+ correctFile[:-4])
plt.savefig(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/firstOrderRemoved/"+correctFile[:-4]+".jpg", bbox_inches='tight')
plt.clf()
del df
print("--------------------------")
# If directory name contains meters go down and load in dataframe
root, dirs, files = os.walk(os.getcwd()+"/INL-Measurements/").__next__()
dirs = [i for i in os.listdir(os.getcwd()+"/INL-Measurements/") if not i.__contains__(('.'))]
dirs[:] = [url for url in dirs if any(sub.upper() in url.upper() for sub in meterList)]
for dir in dirs:
rootdevice, dirsdevice, filesdevice = os.walk(os.getcwd()+"/INL-Measurements/"+dir).__next__()
os.makedirs(os.getcwd()+"/INL-Measurements/CalibratorINLAverages/"+dir)
print(dirsdevice)
for dirb in dirsdevice:
rootdata, dirsdata, filesdata = os.walk(os.getcwd()+"/INL-Measurements/"+dir+'/'+dirb+"/data/").__next__()
print(filesdata)