Skip to content
Snippets Groups Projects
Commit 4b21cafa authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

Double Gate Devices part 11 (End of measurements, and ini files)

parent f7ed075f
No related branches found
No related tags found
No related merge requests found
...@@ -78,228 +78,103 @@ line = widgets.HBox([button,import_ini_button,export_ini_button]) ...@@ -78,228 +78,103 @@ line = widgets.HBox([button,import_ini_button,export_ini_button])
display(line,output) display(line,output)
device = hp4155a.HP4155a('GPIB0::17::INSTR') device = hp4155a.HP4155a('GPIB0::17::INSTR')
df_trasnfer = None
df_output = None
df_gatediode = None
def on_start_clicked(b): def on_start_clicked(b):
with output: with output:
global df_transfer,df_output,df_gatediode
clear_output() clear_output()
#disable all widgets #disable all widgets
disable_widgets(all_widgets) disable_widgets(all_widgets)
width = sample["width"].value
norm=normalization_factor(width)
#check everything for invalid values! (strict rule!)
ok = check_values(Vtg_transfer,'primary') and check_values(Vds_transfer,'secondary') and check_values(Vbg_transfer,'primary') and check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary') and check_values(Vbg_output,'secondary') and check_values(Vg_gatediode,'primary')
if ok == False:
enable_widgets(all_widgets)
return
Setup(device) #setup the device Setup(device) #setup the device
if transfer_check.value == True: if transfer_check.value == True:
var2=device.var2_dict() match transfer_gates.value:
var2.update( case 'VTG' if check_values(Vtg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
start=Vds_transfer['start'].value, df_transfer = Transfer_VTG(Vtg_transfer,Vds_transfer,integration_transfer.value,sample,device)
step=Vds_transfer['step'].value, case 'VBG' if check_values(Vbg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
points=points, df_transfer = Transfer_VBG(Vbg_transfer,Vds_transfer,integration_transfer.value,sample,device)
comp=Vds_transfer['comp'].value, case 'BOTH' if check_values(Vbg_transfer,'synchronous') and check_values(Vds_transfer,'secondary') and check_values(Vtg_transfer,'primary'):
pcomp=Vds_transfer['pcomp'].value df_transfer = Transfer_BOTH(Vtg_transfer,Vbg_transfer,Vds_transfer,integration.value,sample,device)
) case _ :
if transfer_gates.value =='VTG': information_box("Transfer Measurement skipped due to invalid parameters")
#calculate number of points for var2(VDS)
points = number_of_points(Vds_transfer)
#configure smus
var1 = device.var1_dict()
var1.update(
mode=Vtg_transfer['hyst'].value,
start=Vtg_transfer['start'].value,
stop=Vtg_transfer['stop'].value,
step=Vtg_transfer['step'].value,
comp =Vtg_transfer['comp'].value,
pcomp=Vtg_transfer['pcomp'].value
)
# create config
config = {}
config.update(mode='VTG',VAR1 = var1, VAR2 = var2,integration = integration_transfer.value,norm = norm)
elif transfer_gates.value == 'VBG':
points = number_of_points(Vds_transfer)
var1 = device.var1_dict()
var1.update(
mode=Vbg_transfer['hyst'].value,
start=Vbg_transfer['start'].value,
stop=Vbg_transfer['stop'].value,
step=Vbg_transfer['step'].value,
comp =Vbg_transfer['comp'].value,
pcomp=Vbg_transfer['pcomp'].value
)
config = {}
config.update(mode='VBG',VAR1 = var1, VAR2 = var2,integration = integration_transfer.value,norm = norm)
else: #both gates
#calculate ratio and offset
ratio,offset= calculate_line(Vtg_transfer,Vbg_transfer)
#update step
Vbg_transfer["step"].value = ratio*Vtg_transfer["step"].value
vard = device.vard_dict()
vard.update(
offset = offset,
ratio = ratio,
comp = Vbg_transfer["comp"].value,
pcomp = Vbg_transfer["pcomp"].value
)
var1 = device.var1_dict()
var1.update(
mode=Vtg_transfer['hyst'].value,
start=Vtg_transfer['start'].value,
stop=Vtg_transfer['stop'].value,
step=Vtg_transfer['step'].value,
comp =Vtg_transfer['comp'].value,
pcomp=Vtg_transfer['pcomp'].value
)
config = {}
config.update(mode='VBG',VAR1 = var1, VAR2 = var2,integration = integration_transfer.value,norm = norm,VARD = vard)
#execute measurement
df = Transfer(config,device)
"""
#write to file
filename = f"{sample['sample'].value}_{sample['field'].value}_{sample['device'].value}_U.txt"
file = create_file(filename)
save_to_file('Transfer Curve',file,sample,integration_transfer,Vgs_transfer,Vds_transfer)
df.to_csv(file,sep=" ",mode='a')
"""
if output_check.value == True: if output_check.value == True:
var1=device.var1_dict() match output_gates.value:
var1.update( case 'VTG' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary'):
mode=Vds_output['hyst'].value, df_output = Output_VTG(Vds_output,Vtg_output,integration_output.value,sample,device)
start=Vds_output['start'].value, case 'VBG' if check_values(Vds_output,'primary') and check_values(Vbg_output,'secondary'):
stop=Vds_output['stop'].value, df_output = Output_VBG(Vds_output,Vbg_output,integration_output.value,sample,device)
step=Vds_output['step'].value, case 'BOTH' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary') and check_values(Vbg_output,'secondary'):
comp =Vds_output['comp'].value, df_output = Output_BOTH(Vds_output,Vtg_output,Vbg_output,integration_output.value,sample,device)
pcomp=Vds_output['pcomp'].value case _ :
) information_box("Output Measurement skipped due to invalid parameters")
if output_gates.value == "BOTH":
#calculate number of points for var2(VTG)
points_vtg = number_of_points(Vtg_output)
points_vbg = number_of_points(Vbg_output)
#set var1(Vds) and var2(VTG)
var2=device.var2_dict()
var2.update(
start=Vtg_output['start'].value,
step=Vtg_output['step'].value,
points=points_vtg,
comp=Vgs_output['comp'].value,
pcomp=Vgs_output['pcomp'].value
)
# save the details of the constant smu
cons = device.cons_smu_dict()
cons.update(
comp = Vbg_output['comp'].value
all_values = np.linspace(Vbg_output['start'],Vbg_output['stop'],num = points_vbg,endpoint = True)
value= None
points = points_vbg
)
config = {}
config.update(mode='BOTH',VAR1 = var1, VAR2 = var2,integration = integration_output.value,norm = norm,CONS = cons)
"""
#write to file
filename = f"{sample['sample'].value}_{sample['field'].value}_{sample['device'].value}_A.txt"
file = create_file(filename)
save_to_file('Output Curve',file,sample,integration_output,Vgs_output,Vds_output)
df.to_csv(file,sep=" ",mode='a')
"""
if gatediode_check.value == True: if gatediode_check.value == True:
if terminal.value =='VBG': match terminal.value:
#configure smus case 'VTG' if check_values(Vg_gatediode,'primary'):
smu = device.smu_dict() df_gatediode = Gatediode_VTG(Vg_gatediode,integration_gatediode.value,sample,device)
smu.update(vname='VBG',iname ='IBG',mode='V',func='VAR1',number =3) case 'VBG' if check_values(Vg_gatediode,'primary'):
else: df_gatediode = Gatediode_VBG(Vg_gatediode,integration_gatediode.value,sample,device)
smu = device.smu_dict() case _ :
smu.update(vname ='VTG',iname = 'ITG',mode = 'COMM',func='CONS',number = 1) information_box("Gatediode Measurement skipped due to invalid parameters")
smu4 = device.smu_dict()
smu4.update(vname ='VS',iname = 'IS',mode = 'COMM',func='CONS')
var1=device.var1_dict()
var1.update(
mode=Vgs_gatediode['hyst'].value,
start=Vgs_gatediode['start'].value,
stop=Vgs_gatediode['stop'].value,
step=Vgs_gatediode['step'].value,
comp =Vgs_gatediode['comp'].value,
pcomp=Vgs_gatediode['pcomp'].value
)
smu.update(VAR1=var1)
#execute measurement
values=Gatediode(smu,smu4,integration_gatediode.value,device)
#clear_output()
plot_gatediode(values["VGS"],values["IGmm"],norm_unit)
#save results
if norm_unit == 'mA/mm':
header=['VGS/V','IG/A','IGmm/mA/mm']
else:
header=['VGS/V','IG/A','IGmm/uA/um']
data = {header[0]:values["VGS"],header[1]:values["IG"],header[2]:values["IGmm"]}
df = pd.DataFrame(data)
filename =f"{sample['sample'].value}_{sample['field'].value}_{sample['device'].value}_D.txt"
file = create_file(filename)
save_to_file('Gatediode',file,sample,integration_gatediode,Vgs_gatediode)
df.to_csv(file,sep=" ",mode='a')
information_box("Measurement finished!") information_box("Measurement finished!")
enable_widgets(all_widgets) enable_widgets(all_widgets)
def on_export_ini_clicked(b): def on_export_ini_clicked(b):
with output: with output:
disable_widgets(all_widgets) disable_widgets(all_widgets)
config = configparser.ConfigParser() config = configparser.ConfigParser()
default_filename = 'ADU.ini' default_filename = 'ADU_double_gate.ini'
file = save_as_ini(default_filename) file = save_as_ini(default_filename)
with open(file,'w') as configfile: with open(file,'w') as configfile:
config.add_section('ALL VALUES ARE IN SI-UNITS!') config.add_section('ALL VALUES ARE IN SI-UNITS!')
config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY') config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY')
# Transfer curve
config.add_section('Transfer') config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value) config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vgs_transfer") config.add_section("Vtg_transfer")
for parameter,widget in Vgs_transfer.items(): for parameter,widget in Vgs_transfer.items():
config.set('Vgs_transfer',parameter,str(widget.value)) config.set('Vtg_transfer',parameter,str(widget.value))
config.add_section("Vbg_transfer")
for parameter,widget in Vbg_transfer.items():
config.set('Vbg_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer') config.add_section('Vds_transfer')
for parameter,widget in Vds_transfer.items(): for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value)) config.set('Vds_transfer',parameter,str(widget.value))
#output
config.add_section('Output') config.add_section('Output')
config.set('Output','Integration',integration_output.value) config.set('Output','Integration',integration_output.value)
config.add_section("Vgs_output") config.add_section("Vtg_output")
for parameter,widget in Vgs_output.items(): for parameter,widget in Vtg_output.items():
config.set('Vgs_output',parameter,str(widget.value)) config.set('Vtg_output',parameter,str(widget.value))
config.add_section("Vbg_output")
for parameter,widget in Vbg_output.items():
config.set('Vbg_output',parameter,str(widget.value))
config.add_section('Vds_output') config.add_section('Vds_output')
for parameter,widget in Vds_output.items(): for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value)) config.set('Vds_output',parameter,str(widget.value))
# Gatediode
config.add_section('Gatediode') config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value) config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vgs_gatediode") config.add_section("Vg_gatediode")
for parameter,widget in Vgs_gatediode.items(): for parameter,widget in Vg_gatediode.items():
config.set('Vgs_gatediode',parameter,str(widget.value)) config.set('Vg_gatediode',parameter,str(widget.value))
config.write(configfile) config.write(configfile)
enable_widgets(all_widgets) enable_widgets(all_widgets)
...@@ -311,29 +186,32 @@ def on_import_ini_clicked(b): ...@@ -311,29 +186,32 @@ def on_import_ini_clicked(b):
#load values to the interface #load values to the interface
config = configparser.ConfigParser() config = configparser.ConfigParser()
file = load_ini() file = load_ini()
#print(file)
#read the values from each section #read the values from each section
try: try:
config.read(file) config.read(file)
#transfer curve #transfer curve
integration_transfer.value = config.get('Transfer', "integration") integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vgs_transfer.items(): for parameter,widget in Vtg_transfer.items():
widget.value = config.get('Vgs_transfer',parameter) widget.value = config.get('Vtg_transfer',parameter)
for parameter,widget in Vds_transfer.items(): for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter) widget.value = config.get('Vds_transfer',parameter)
for parameter,widget in Vbg_transfer.items():
widget.value = config.get('Vbg_transfer',parameter)
#output curve #output curve
integration_output.value = config.get('Output','integration') integration_output.value = config.get('Output','integration')
for parameter,widget in Vgs_output.items(): for parameter,widget in Vtg_output.items():
widget.value = config.get('Vgs_output',parameter) widget.value = config.get('Vtg_output',parameter)
for parameter,widget in Vds_output.items(): for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter) widget.value = config.get('Vds_output',parameter)
for parameter,widget in Vbg_output.items():
widget.value = config.get('Vbg_output',parameter)
# gatediode # gatediode
integration_gatediode.value = config.get('Gatediode','integration') integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vgs_gatediode.items(): for parameter,widget in Vg_gatediode.items():
widget.value = config.get('Vgs_gatediode',parameter) widget.value = config.get('Vg_gatediode',parameter)
information_box("all parameters loaded succesfully") information_box("all parameters loaded succesfully")
except Exception as error: except Exception as error:
...@@ -350,7 +228,6 @@ def on_import_ini_clicked(b): ...@@ -350,7 +228,6 @@ def on_import_ini_clicked(b):
enable_widgets(all_widgets) enable_widgets(all_widgets)
button.on_click(on_start_clicked) button.on_click(on_start_clicked)
#link the new widgets
import_ini_button.on_click(on_import_ini_clicked) import_ini_button.on_click(on_import_ini_clicked)
export_ini_button.on_click(on_export_ini_clicked) export_ini_button.on_click(on_export_ini_clicked)
......
import sys
sys.path.insert(0, './lib')
sys.path.insert(0, '..') #append parent directory
from interface import *
from help import *
from measurements import *
import configparser
# Create the grids
#create the information grid
style = {'description_width': 'initial'}
sample = information_box_new()
###end of sampling information#######################################
# move checkboxes outside of the tabs
transfer_check,integration_transfer,transfer_gates = header('Transfer Curve',"MEDium")
output_check,integration_output,output_gates = header('Output Curve',"SHORt")
gatediode_check,integration_gatediode,_=header('Gatediode',"MEDium")
checkboxes = widgets.HBox([transfer_check,output_check,gatediode_check])
display(checkboxes)
#transfer
Vds_transfer_widgets,Vds_transfer = secondary('VDS',0.05,0.95,1,1e-2)
Vtg_transfer_widgets,Vtg_transfer = primary('VTG',-5,0.01,5,1e-3)
Vbg_transfer_widgets,Vbg_transfer = synchronous('VBG',-15,0.1,15,1e-3)
transfer_box = widgets.VBox([integration_transfer,transfer_gates,Vds_transfer_widgets,Vtg_transfer_widgets,Vbg_transfer_widgets])
#output
Vds_output_widgets,Vds_output = primary('VDS',0,0.01,5,1e-2)
Vtg_output_widgets,Vtg_output = secondary('VTG',-5,2,5,1e-3)
Vbg_output_widgets,Vbg_output = additional_secondary('VBG',-15,5,15,1e-3)
output_box = widgets.VBox([integration_output,output_gates,Vds_output_widgets,Vtg_output_widgets,Vbg_output_widgets])
#GateDiodde
terminal = widgets.Dropdown(
options = ['VTG','VBG'],
description = 'Selected Gate:',
value ='VTG',
style= {'description_width': 'initial'}
)
Vg_gatediode_widgets,Vg_gatediode=primary('VG',-5,0.05,5,1e-3)
gatediode_box = widgets.VBox([integration_gatediode,terminal,Vg_gatediode_widgets])
#the tab widget
children = [transfer_box,output_box,gatediode_box]
titles = ["Transfer","Output","Gatediode"]
tab = widgets.Tab()
tab.children = children
tab.titles = titles
display(tab)
button = widgets.Button(description ='Start Measurement')
output = widgets.Output()
export_ini_button = widgets.Button(description = 'Export as ini')
import_ini_button = widgets.Button(description='Import from ini')
all_widgets =[transfer_gates,output_gates,button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,terminal,export_ini_button,import_ini_button]
add_widgets_to_list(sample,all_widgets)
add_widgets_to_list(Vds_transfer,all_widgets)
add_widgets_to_list(Vtg_transfer,all_widgets)
add_widgets_to_list(Vbg_transfer,all_widgets)
add_widgets_to_list(Vds_output,all_widgets)
add_widgets_to_list(Vtg_output,all_widgets)
add_widgets_to_list(Vbg_output,all_widgets)
add_widgets_to_list(Vg_gatediode,all_widgets)
line = widgets.HBox([button,import_ini_button,export_ini_button])
display(line,output)
device = hp4155a.HP4155a('GPIB0::17::INSTR')
def on_start_clicked(b):
with output:
clear_output()
#disable all widgets
disable_widgets(all_widgets)
Setup(device) #setup the device
if transfer_check.value == True:
match transfer_gates.value:
case 'VTG' if check_values(Vtg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
pass
case 'VBG' if check_values(Vbg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
pass
case 'BOTH' if check_values(Vbg_transfer,'primary') and check_values(Vds_transfer,'secondary') and check_values(Vtg_transfer,'primary'):
pass
case _ :
information_box("Transfer Measurement skipped due to invalid parameters")
if output_check.value == True:
match output_gates.value:
case 'VTG' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary'):
pass
case 'VBG' if check_values(Vds_output,'primary') and check_values(Vbg_output,'secondary'):
pass
case 'BOTH' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary') and check_values(Vbg_output,'secondary'):
pass
case _ :
information_box("Output Measurement skipped due to invalid parameters")
if gatediode_check.value == True:
match terminal.value:
case 'VTG' if check_values(Vg_gatediode,'primary'):
pass
case 'VBG' if check_values(Vg_gatediode,'primary'):
pass
case _ :
information_box("Gatediode Measurement skipped due to invalid parameters")
information_box("Measurement finished!")
enable_widgets(all_widgets)
def on_export_ini_clicked(b):
with output:
disable_widgets(all_widgets)
config = configparser.ConfigParser()
default_filename = 'ADU.ini'
file = save_as_ini(default_filename)
with open(file,'w') as configfile:
config.add_section('ALL VALUES ARE IN SI-UNITS!')
config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY')
config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vgs_transfer")
for parameter,widget in Vgs_transfer.items():
config.set('Vgs_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer')
for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Output')
config.set('Output','Integration',integration_output.value)
config.add_section("Vgs_output")
for parameter,widget in Vgs_output.items():
config.set('Vgs_output',parameter,str(widget.value))
config.add_section('Vds_output')
for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vgs_gatediode")
for parameter,widget in Vgs_gatediode.items():
config.set('Vgs_gatediode',parameter,str(widget.value))
config.write(configfile)
enable_widgets(all_widgets)
def on_import_ini_clicked(b):
with output:
disable_widgets(all_widgets)
#load values to the interface
config = configparser.ConfigParser()
file = load_ini()
#print(file)
#read the values from each section
try:
config.read(file)
#transfer curve
integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vgs_transfer.items():
widget.value = config.get('Vgs_transfer',parameter)
for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter)
#output curve
integration_output.value = config.get('Output','integration')
for parameter,widget in Vgs_output.items():
widget.value = config.get('Vgs_output',parameter)
for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter)
# gatediode
integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vgs_gatediode.items():
widget.value = config.get('Vgs_gatediode',parameter)
information_box("all parameters loaded succesfully")
except Exception as error:
if type(error).__name__ =='NoSectionError':
information_box(f"{error}.Explanation: Section(header) [section] does not exist. Create a new ini file or compare it with functional ini files!")
elif type(error).__name__=='NoOptionError':
information_box(f'{error}.Explanation: The variable name before the equal sign is not recognized. Create a new ini file or compare it with functional ini files!')
elif type(error).__name__ == 'TraitError':
information_box(f'{error}.Explanation: Invalid Parameter Setting. Check if you set an invalid value!')
elif type(error).__name__ =="DuplicateOptionError":
information_box(f"{error}. Explaination: The section contains the setted parameter more than once!")
else:
information_box(f"A {type(error).__name__} has occurred. Create A new ini file")
enable_widgets(all_widgets)
button.on_click(on_start_clicked)
#link the new widgets
import_ini_button.on_click(on_import_ini_clicked)
export_ini_button.on_click(on_export_ini_clicked)
...@@ -20,58 +20,6 @@ def get_dataframe_from_results(dict): ...@@ -20,58 +20,6 @@ def get_dataframe_from_results(dict):
df = pd.DataFrame(results) df = pd.DataFrame(results)
return df return df
def plot_output(values,curves_var2,curves_var3):
x=np.array_split(np.array_split(values["VDS"],curves_var3),curves_var2)
y = np.array_split(values["ID"],curves_var3)
fig,ax1 = plt.subplots()
color='tab:red'
ax1.set_xlabel('$V_{DS} (V)$')
ax1.set_ylabel('$I_{D} (mA/mm)$', color = color)
for i in range(curves):
ax1.plot(x[i],y1[i],color=color)
ax1.tick_params(axis ='y', labelcolor = color)
ax2 = ax1.twinx()
color = 'tab:green'
if norm_unit == 'mA/mm':
ax2.set_ylabel('$I_{G} (mA/mm)$', color = color)
else:
ax2.set_ylabel('$I_{G} (uA/um)$', color = color)
for i in range(curves):
ax2.plot(x[i], y2[i], color = color)
ax2.tick_params(axis ='y', labelcolor = color)
fig.suptitle("Output Curve",fontweight ="bold")
fig.tight_layout()
display(fig)
def plot_gatediode(x,y,norm_unit = "mA/mm"):
fig, ax1 = plt.subplots()
color = 'tab:red'
ax1.set_xlabel('$V_{GS} (V)$')
if norm_unit == "mA/mm":
ax1.set_ylabel('$I_{G} (mA/mm)$', color = color)
else:
ax1.set_ylabel('$I_{G} (uA/um)$', color = color)
ax1.set_yscale('log')
y = np.absolute(y)
ax1.plot(x,y, color = color)
ax1.tick_params(axis ='y', labelcolor = color)
fig.suptitle('Gatediode Curve', fontweight ="bold")
fig.tight_layout()
display(fig)
def number_of_points(dict): def number_of_points(dict):
try: try:
diff = dict['stop'].value - dict['start'].value diff = dict['stop'].value - dict['start'].value
...@@ -122,6 +70,9 @@ def check_values(dictionary,function): ...@@ -122,6 +70,9 @@ def check_values(dictionary,function):
elif dictionary['start'].value>dictionary['stop'].value and dictionary['step'].value>0: elif dictionary['start'].value>dictionary['stop'].value and dictionary['step'].value>0:
dictionary['step'].value = (-1)*dictionary['step'].value dictionary['step'].value = (-1)*dictionary['step'].value
if function == 'synchronous':
pass
if valid == True: if valid == True:
#check compliance #check compliance
comp = dictionary['comp'].value comp = dictionary['comp'].value
......
...@@ -182,7 +182,7 @@ def synchronous(name,start,step,stop,comp): ...@@ -182,7 +182,7 @@ def synchronous(name,start,step,stop,comp):
#third line #third line
synchronous_grid[2,0]=widgets.Label("Compliance(A)",layout=Layout(height='auto', width='auto')) synchronous_grid[2,0]=widgets.Label("Compliance(A)",layout=Layout(height='auto', width='auto'))
synchronous_grid[2,1] =widgets.Label("Power Compliance(W)(0=OFF)(Only 1 Gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap synchronous_grid[2,1] =widgets.Label("Power Compliance(W)(0=OFF)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap
synchronous_grid[2,2] =widgets.Label("Hysterisis(Only 1 gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap synchronous_grid[2,2] =widgets.Label("Hysterisis(Only 1 gate)",layout=Layout(height='auto', width='auto'),style = style)#mind the gap
#fourth line #fourth line
......
This diff is collapsed.
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "99771e380b9e41e1bfb264445c9638b5", "model_id": "99b7244cb7af49918c8676bec85f4059",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "bf6c9f74778f4a7d81d2e50e50f29646", "model_id": "51efe3a60b244ed69ada5467918cfb35",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "e309adbb7d1d4f368b10a2007a9b2787", "model_id": "94140c87fe1d4fbea49a70dceae2f7af",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "529852ccf3c342b7909d07c05e4094df", "model_id": "bb1aa5f855f44dad9c71646bc492fc67",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
{ {
"data": { "data": {
"application/vnd.jupyter.widget-view+json": { "application/vnd.jupyter.widget-view+json": {
"model_id": "b88a1fddf7d84747b34b69c7c54b6004", "model_id": "961d926d500447c4b2cb3b5a78a56013",
"version_major": 2, "version_major": 2,
"version_minor": 0 "version_minor": 0
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment