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

Redefinement part 6 inis and the end!

parent d1cac43a
No related branches found
No related tags found
No related merge requests found
Showing
with 473 additions and 545 deletions
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
#setup user interface
ui = interface()
device = hp4155a.HP4155a('GPIB0::17::INSTR')
def on_start_clicked(b):
with ui.output:
clear_output()
#disable all widgets
change_state(all_widgets)
#additional code to check smu configuration fast without modifing a lot of code
try:
check_configuration(ui.sample)
except Exception as e:
error_box(e)
change_state(ui.all_widgets)
return
#setup the devicr
device.reset()
#setup sweep measurement mode
device.measurement_mode('SWE')
#disable all irrelevant units
device.disable_not_smu()
if ui.transfer_check.value == True:
if ui.transfer_gates.value == 'VTG':
points = number_of_points(Vds_transfer)
var2=device.var2_dict() #Vds_output is always used in tranfer curve with the same config
var2.update(
start=Vds_transfer['start'].value,
step=Vds_transfer['step'].value,
points=points,
comp=Vds_transfer['comp'].value,
pcomp=Vds_transfer['pcomp'].value,
stop = Vds_transfer['stop'].value #not important for setting VAR2 only parameters in file
)
# also drain smu is the same
smu_d = device.smu_dict()
smu_d.update()
match transfer_gates.value:
case 'VTG' if check_values(Vtg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
smu_t = device.smu_dict()
smu_t.update(vname = 'VTG',iname='ITG',mode = 'V',func='VAR1')
smu_b = device.smu_dict()
smu_b.update(vname = 'VBG',iname='IBG',mode = 'COMM',func = 'CONS')
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
)
#define the final dict
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_transfer.value,
}
#measure (later)
Transfer_VTG(device,meas_dict)
case 'VBG' if check_values(Vbg_transfer,'primary') and check_values(Vds_transfer,'secondary'):
smu_t = device.smu_dict()
smu_t.update(vname = 'VTG',iname='ITG',mode = 'COMM',func='CONS')
smu_b = device.smu_dict()
smu_b.update(vname = 'VBG',iname='IBG',mode = 'V',func = 'VAR1')
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
)
#define the final dict
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_transfer.value,
}
#measure (later)
Transfer_VBG(device,meas_dict)
case 'BOTH' if check_values(Vbg_transfer,'synchronous') and check_values(Vds_transfer,'secondary') and check_values(Vtg_transfer,'primary'):
smu_t = device.smu_dict()
smu_t.update(vname = 'VTG',iname='ITG',mode = 'V',func='VAR1')
smu_b = device.smu_dict()
smu_b.update(vname = 'VBG',iname='IBG',mode = 'V',func = 'VARD')
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
)
#calculate parameters for VARD
ratio,offset = calculate_line(Vtg_transfer,Vbg_transfer)
# update VBG step
Vbg_transfer["step"].value = Decimal(str(ratio)) * Decimal(str(Vtg_transfer["step"].value))
vard = device.vard_dict()
vard.update(
offset = offset,
ratio = ratio,
comp = Vbg_transfer["comp"].value,
pcomp = Vbg_transfer["pcomp"].value,
start = Vbg_transfer["start"].value,
step = Vbg_transfer['step'].value,
stop = Vbg_transfer['stop'].value,
)
#define the final dict
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_transfer.value,
"VARD":vard
}
#measure (later)
Transfer_BOTH(device,meas_dict)
case _ :
information_box("Transfer Measurement skipped due to invalid parameters")
if output_check.value == True:
smu_d = device.smu_dict()
smu_d.update(vname='VDS',iname='ID',mode = 'V',func = 'VAR1')
var1 = device.var1_dict()
var1.update(
mode=Vds_output['hyst'].value,
start=Vds_output['start'].value,
stop=Vds_output['stop'].value,
step=Vds_output['step'].value,
comp =Vds_output['comp'].value,
pcomp=Vds_output['pcomp'].value
)
plot = plot_output.copy()
for key,value in plot.items():
plot[key] = value.value
match output_gates.value:
case 'VTG' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary'):
smu_t=device.smu_dict()
smu_t.update(vname ='VTG',iname = 'ITG',mode = 'V',func='VAR2')
smu_b= device.smu_dict()
smu_b.update(vname='VBG',iname='IBG',mode = 'COMM',func='CONS')
points = number_of_points(Vtg_output)
var2=device.var2_dict()
var2.update(
start=Vtg_output['start'].value,
step=Vtg_output['step'].value,
points=points,
comp=Vtg_output['comp'].value,
pcomp=Vtg_output['pcomp'].value,
stop = Vtg_output['stop'].value
)
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_output.value,
}
#measure later
Output_VTG(device,meas_dict)
case 'VBG' if check_values(Vds_output,'primary') and check_values(Vbg_output,'secondary'):
smu_t=device.smu_dict()
smu_t.update(vname ='VTG',iname = 'ITG',mode = 'COMM',func='CONS')
smu_b= device.smu_dict()
smu_b.update(vname='VBG',iname='IBG',mode = 'V',func = 'VAR2')
points = number_of_points(Vbg_output)
var2=device.var2_dict()
var2.update(
start=Vbg_output['start'].value,
step=Vbg_output['step'].value,
points=points,
comp=Vbg_output['comp'].value,
pcomp=Vbg_output['pcomp'].value,
stop = Vbg_output['stop'].value
)
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_output.value,
}
#measure later
Output_VBG(device,meas_dict)
case 'BOTH' if check_values(Vds_output,'primary') and check_values(Vtg_output,'secondary') and check_values(Vbg_output,'secondary'):
smu_t=device.smu_dict()
smu_t.update(vname ='VTG',iname = 'ITG',mode = 'V',func='VAR2')
smu_b= device.smu_dict()
smu_b.update(vname='VBG',iname='IBG',mode = 'V',func = 'CONS')
points = number_of_points(Vtg_output)
var2=device.var2_dict()
var2.update(
start=Vtg_output['start'].value,
step=Vtg_output['step'].value,
points=points,
comp=Vtg_output['comp'].value,
pcomp=Vtg_output['pcomp'].value,
stop = Vtg_output['stop'].value
)
points_VBG = number_of_points(Vbg_output)
values_VBG = np.linspace(Vbg_output["start"].value,Vbg_output["stop"].value,num = points_VBG,endpoint= True)
#there is not such unit we create it with a loop
var3 = {
"start":Vbg_output['start'].value,
"step":Vbg_output['step'].value,
"points":points_VBG,
"comp":Vbg_output['comp'].value,
"stop" : Vbg_output['stop'].value,
"values" : values_VBG
}
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_D": smu_d,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"VAR2":var2,
"VAR3":var3,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_output.value,
}
#measure later
Output_BOTH(device,meas_dict)
case _ :
information_box("Output Measurement skipped due to invalid parameters")
if gatediode_check.value == True:
#drain is disabled
device.smu_disable(map['D'])
# VAR1 is set with the same interface
var1 = device.var1_dict()
var1.update(
mode=Vg_gatediode['hyst'].value,
start=Vg_gatediode['start'].value,
stop=Vg_gatediode['stop'].value,
step=Vg_gatediode['step'].value,
comp =Vg_gatediode['comp'].value,
pcomp=Vg_gatediode['pcomp'].value
)
plot = plot_gatediode.copy()
for key,value in plot.items():
plot[key] = value.value
match terminal.value:
case 'VTG' if check_values(Vg_gatediode,'primary'):
smu_t=device.smu_dict()
smu_t.update(vname ='VTG',iname = 'ITG',mode = 'V',func='VAR1')
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_T":smu_t,
"SMU_S":smu_s,
"VAR1":var1,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_gatediode.value,
}
#measure later
Gatediode_VTG(device,meas_dict)
case 'VBG' if check_values(Vg_gatediode,'primary'):
smu_b=device.smu_dict()
smu_b.update(vname ='VBG',iname = 'IBG',mode = 'V',func='VAR1')
meas_dict = {
"SAMPLE":sample_copy,
"MAP" : map,
"SMU_B":smu_b,
"SMU_S":smu_s,
"VAR1":var1,
"PLOT": plot, # plot in the tool
"INTEGRATION": integration_gatediode.value,
}
#measure later
Gatediode_VBG(device,meas_dict)
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_double_gate.ini'
try:
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')
# Transfer curve
config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vtg_transfer")
for parameter,widget in Vtg_transfer.items():
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')
for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Plot_transfer')
for parameter,widget in plot_transfer.items():
config.set('Plot_transfer',parameter,str(widget.value))
#output
config.add_section('Output')
config.set('Output','Integration',integration_output.value)
config.add_section("Vtg_output")
for parameter,widget in Vtg_output.items():
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')
for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Plot_output')
for parameter,widget in plot_output.items():
config.set('Plot_output',parameter,str(widget.value))
# Gatediode
config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vg_gatediode")
for parameter,widget in Vg_gatediode.items():
config.set('Vg_gatediode',parameter,str(widget.value))
config.add_section('Plot_gatediode')
for parameter,widget in plot_gatediode.items():
config.set('Plot_gatediode',parameter,str(widget.value))
# add the smu configuration
config.add_section('SMU_configuration')
for parameter,widget in smu_map.items():
config.set('SMU_configuration',parameter,str(widget.value))
# Add the sweeping gates
config.add_section('Sweeping_gates')
config.set('Sweeping_gates','Transfer',str(transfer_gates.value))
config.set('Sweeping_gates','Output',str(output_gates.value))
config.set('Sweeping_gates','Gatediode',str(terminal.value))
config.write(configfile)
except Exception as e:
information_box(e)
enable_widgets(all_widgets)
def on_import_ini_clicked(b):
with output:
disable_widgets(all_widgets)
#load values to the interface
config = configparser.ConfigParser()
try:
file = load_ini()
except Exception as e:
information_box(e)
enable_widgets(all_widgets)
return
try:
#read the values from each section
config.read(file)
#transfer curve
integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vtg_transfer.items():
widget.value = config.get('Vtg_transfer',parameter)
for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter)
for parameter,widget in Vbg_transfer.items():
widget.value = config.get('Vbg_transfer',parameter)
for parameter,widget in plot_transfer.items():
widget.value = config.get('Plot_transfer',parameter)
#output curve
integration_output.value = config.get('Output','integration')
for parameter,widget in Vtg_output.items():
widget.value = config.get('Vtg_output',parameter)
for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter)
for parameter,widget in Vbg_output.items():
widget.value = config.get('Vbg_output',parameter)
for parameter,widget in plot_output.items():
widget.value = config.get('Plot_output',parameter)
# gatediode
integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vg_gatediode.items():
widget.value = config.get('Vg_gatediode',parameter)
for parameter,widget in plot_gatediode.items():
widget.value = config.get('Plot_gatediode',parameter)
# SMU map
for parameter,widget in smu_map.items():
widget.value = int(config.get('SMU_configuration',parameter))
# sweeping gates
transfer_gates.value = config.get('Sweeping_gates','Transfer')
output_gates.value = config.get('Sweeping_gates','Output')
terminal.value = config.get('Sweeping_gates','Gatediode')
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)
import_ini_button.on_click(on_import_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 *
import transfer
import output
import configparser
#setup user interface
ui = interface()
device = hp4155a.HP4155a('GPIB0::17::INSTR')
def on_start_clicked(b):
with ui.output:
clear_output()
#disable all widgets
change_state(ui.all_widgets)
#additional code to check smu configuration fast without modifing a lot of code
try:
check_configuration(ui.sample)
except Exception as e:
error_box(e)
change_state(ui.all_widgets)
return
#setup the devicr
device.reset()
#setup sweep measurement mode
device.measurement_mode('SWE')
#disable all irrelevant units
device.disable_not_smu()
if ui.transfer_check.value == True:
if ui.transfer_gates.value == 'VTG':
transfer.VTG(ui,device)
elif ui.transfer_gates.value == 'VBG':
transfer.VBG(ui,device)
elif ui.transfer_gates.value == 'BOTH SIMULTANEOUSLY':
transfer.SIM(ui,device)
else: # Sequential measurement
transfer.SEQ(ui,device)
if output_check.value == True:
if ui.output_gates.value == "VTG":
output.VTG(ui,device)
elif ui.output_gates.value == "VBG":
output.VBG(ui,device)
else: # Both
output.SEQ(ui,device)
if gatediode_check.value == True:
if ui.gatediode_gates.value == 'VTG':
gatediode.VTG(ui,device)
else: #VBG
gatediode.VBG(ui,device)
information_box("Measurement finished!")
change_state(ui.all_widgets)
def on_export_ini_clicked(b):
with output:
change_state(ui.all_widgets)
config = configparser.ConfigParser()
default_filename = 'ADU_double_gate.ini'
try:
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')
# Transfer curve
config.add_section('Transfer')
config.set('Transfer','Integration',ui.integration_transfer.value)
config.add_section("Vtg_transfer")
for parameter, widget in vars(ui.Vtg_transfer).items():
if parameter != "grid":
config.set("Vtg_transfer",parameter,str(widget.value))
config.add_section("Vbg_transfer")
for parameter,widget in vars(ui.Vbg_transfer).items():
if parameter != "grid":
config.set('Vbg_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer')
for parameter,widget in vars(ui.Vds_transfer).items():
if parameter != "grid":
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Plot_transfer')
for parameter,widget in vars(ui.plot_transfer).items():
if parameter != "grid":
config.set('Plot_transfer',parameter,str(widget.value))
#output
config.add_section('Output')
config.set('Output','Integration',ui.integration_output.value)
config.add_section("Vtg_output")
for parameter,widget in vars(ui.Vtg_output).items():
if parameter != "grid":
config.set('Vtg_output',parameter,str(widget.value))
config.add_section("Vbg_output")
for parameter,widget in vars(ui.Vbg_output).items():
if parameter != "grid":
config.set('Vbg_output',parameter,str(widget.value))
config.add_section('Vds_output')
for parameter,widget in vars(ui.Vds_output).items():
if parameter != "grid":
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Plot_output')
for parameter,widget in vars(ui.plot_output).items():
if parameter != "grid":
config.set('Plot_output',parameter,str(widget.value))
# Gatediode
config.add_section('Gatediode')
config.set('Gatediode','Integration',ui.integration_gatediode.value)
config.add_section("Vg_gatediode")
for parameter,widget in vars(ui.Vg_gatediode).items():
if parameter != "grid":
config.set('Vg_gatediode',parameter,str(widget.value))
config.add_section('Plot_gatediode')
for parameter,widget in vars(ui.plot_gatediode).items():
if parameter != "grid":
config.set('Plot_gatediode',parameter,str(widget.value))
# add the smu configuration
config.add_section('SMU_configuration')
config.set("SMU_configuration","D",str(ui.sample.drain.value))
config.set("SMU_configuration","TG",str(ui.sample.top_gate.value))
config.set("SMU_configuration","BG",str(ui.sample.back_gate.value))
config.set("SMU_configuration","S",str(ui.sample.source.value))
# Add the sweeping gates
config.add_section('Sweeping_gates')
config.set('Sweeping_gates','Transfer',str(ui.transfer_gates.value))
config.set('Sweeping_gates','Output',str(ui.output_gates.value))
config.set('Sweeping_gates','Gatediode',str(ui.gatediode_gates.value))
config.write(configfile)
except Exception as e:
information_box(e)
change_state(ui.all_widgets)
def on_import_ini_clicked(b):
with output:
change_state(ui.all_widgets)
#load values to the interface
config = configparser.ConfigParser()
try:
file = load_ini()
except Exception as e:
information_box(e)
enable_widgets(all_widgets)
return
try:
#read the values from each section
config.read(file)
#transfer curve
ui.integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in vars(ui.Vtg_transfer).items():
if parameter != "grid":
widget.value = config.get('Vtg_transfer',parameter)
for parameter,widget in vars(ui.Vds_transfer).items():
if parameter != "grid":
widget.value = config.get('Vds_transfer',parameter)
for parameter,widget in vars(ui.Vbg_transfer).items():
if parameter != "grid":
widget.value = config.get('Vbg_transfer',parameter)
for parameter,widget in vars(ui.plot_transfer).items():
if parameter != "grid":
widget.value = config.get('Plot_transfer',parameter)
#output curve
ui.integration_output.value = config.get('Output','integration')
for parameter,widget in vars(ui.Vtg_output).items():
if parameter != "grid":
widget.value = config.get('Vtg_output',parameter)
for parameter,widget in vars(ui.Vds_output).items():
if parameter != "grid":
widget.value = config.get('Vds_output',parameter)
for parameter,widget in vars(ui.Vbg_output).items():
if parameter != "grid":
widget.value = config.get('Vbg_output',parameter)
for parameter,widget in vars(ui.plot_output).items():
if parameter != "grid":
widget.value = config.get('Plot_output',parameter)
# gatediode
ui.integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in vars(ui.Vg_gatediode).items():
if parameter != "grid":
widget.value = config.get('Vg_gatediode',parameter)
for parameter,widget in vars(ui.plot_gatediode).items():
if parameter != "grid":
widget.value = config.get('Plot_gatediode',parameter)
# SMU map
ui.sample.drain.value = int(config.get("SMU_configuration","d"))
ui.sample.top_gate.value = int(config.get("SMU_configuration","tg"))
ui.sample.back_gate.value = int(config.get("SMU_configuration","bg"))
ui.sample.source.value = int(config.get("SMU_configuration","s"))
# sweeping gates
ui.transfer_gates.value = config.get('Sweeping_gates','Transfer')
ui.output_gates.value = config.get('Sweeping_gates','Output')
ui.gatediode_gates.value = config.get('Sweeping_gates','Gatediode')
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")
change_state(ui.all_widgets)
button.on_click(on_start_clicked)
import_ini_button.on_click(on_import_ini_clicked)
export_ini_button.on_click(on_export_ini_clicked)
%% Cell type:code id:81f37cac-ea14-4540-8bc9-78bee248dfbb tags: %% Cell type:code id:81f37cac-ea14-4540-8bc9-78bee248dfbb tags:
``` python ``` python
import sys import sys
sys.path.insert(0, './lib') sys.path.insert(0, './lib')
sys.path.insert(0, '..') #append parent directory sys.path.insert(0, '..') #append parent directory
from interface import * from interface import *
from help import * from help import *
import configparser
import traceback
interface = interface() ui = interface()
``` ```
%% Output %% Output
%% Cell type:code id:65639b77-8c22-4132-a2cf-754276d08b72 tags: %% Cell type:code id:43e7d2ca-3bc0-486c-94b2-e1eebb124a3b tags:
``` python
change_state(ui.all_widgets)
#load values to the interface
config = configparser.ConfigParser()
try:
file = load_ini()
except Exception as e:
information_box(e)
change_state(ui.all_widgets)
#read the values from each section
config.read(file)
#transfer curve
ui.integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in vars(ui.Vtg_transfer).items():
if parameter != "grid":
widget.value = config.get('Vtg_transfer',parameter)
for parameter,widget in vars(ui.Vds_transfer).items():
if parameter != "grid":
widget.value = config.get('Vds_transfer',parameter)
for parameter,widget in vars(ui.Vbg_transfer).items():
if parameter != "grid":
widget.value = config.get('Vbg_transfer',parameter)
for parameter,widget in vars(ui.plot_transfer).items():
if parameter != "grid":
widget.value = config.get('Plot_transfer',parameter)
#output curve
ui.integration_output.value = config.get('Output','integration')
for parameter,widget in vars(ui.Vtg_output).items():
if parameter != "grid":
widget.value = config.get('Vtg_output',parameter)
for parameter,widget in vars(ui.Vds_output).items():
if parameter != "grid":
widget.value = config.get('Vds_output',parameter)
for parameter,widget in vars(ui.Vbg_output).items():
if parameter != "grid":
widget.value = config.get('Vbg_output',parameter)
for parameter,widget in vars(ui.plot_output).items():
if parameter != "grid":
widget.value = config.get('Plot_output',parameter)
# gatediode
ui.integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in vars(ui.Vg_gatediode).items():
if parameter != "grid":
widget.value = config.get('Vg_gatediode',parameter)
for parameter,widget in vars(ui.plot_gatediode).items():
if parameter != "grid":
widget.value = config.get('Plot_gatediode',parameter)
# SMU map
ui.sample.drain.value = int(config.get("SMU_configuration","d"))
ui.sample.top_gate.value = int(config.get("SMU_configuration","tg"))
ui.sample.back_gate.value = int(config.get("SMU_configuration","bg"))
ui.sample.source.value = int(config.get("SMU_configuration","s"))
# sweeping gates
ui.transfer_gates.value = config.get('Sweeping_gates','Transfer')
ui.output_gates.value = config.get('Sweeping_gates','Output')
ui.gatediode_gates.value = config.get('Sweeping_gates','Gatediode')
information_box("all parameters loaded succesfully")
```
%% Output
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[2], line 64
62 ui.transfer_gates.value = config.get('Sweeping_gates','Transfer')
63 ui.output_gates.value = config.get('Sweeping_gates','Output')
---> 64 ui.terminal.value = config.get('Sweeping_gates','Gatediode')
66 information_box("all parameters loaded succesfully")
AttributeError: 'interface' object has no attribute 'terminal'
%% Cell type:code id:0b886a31-7979-4406-b696-1e01e6feb132 tags:
``` python ``` python
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment