You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
First: thanks for this elegant module! It works as expected. But I'm left with some questions while porting my scripts.
May I ask why the high-level comfort-functions like .apply_voltage are only accessible from the device-class (Keithley2600) and not from the smu-class (Keithley2600Base) that replicates the TSP-Syntax in python?
Well, for obvious reason there should be no name-collision. But apart from that?
The biggest drawback is that scripted measurement-functions for a job on one specific smu-channel always need two parameters (device- and smu-class) instead of just one (smu-class) only to use these two parameters always in combination for the high-level-functions (example A). the only alternative would be to not use the high-level-functions (example B). Both options complicate things more than they should.
Am I overseeing something here, apart from hacky solutions? Wouldn't something like example C be the most elegant solution?
example:
def calibrationA(keithley, smu):
# ability to choose smu-channel and use high-level functions
keithley.apply_voltage(smu, 5)
return keithley.measure_current(smu)
def calibrationB(smu):
# only low-level TSP-Syntax possible
smu.source.levelv = 5
smu.source.limiti = 0.1
smu.source.autorangev = smu.AUTORANGE_ON
smu.source.func = smu.OUTPUT_DCVOLTS
value = smu.measure.i()
smu.source.output = smu.OUTPUT_OFF
return value
def calibrationC(smu):
# possible solution with less code-overhead
smu.apply_voltage(5)
smu.source.limiti = 0.1
return smu.measure_current()
My second concern is the high-level function .set_integration_time(). Why does someone want to set this in seconds and deal with unportable code that may cause aliasing-fragments, when setting the time to no multiple of the cycle-time? I understand that seconds are a universal SI-Unit, but there is a reason why the original parameter is "nplc", which is set to 1.
This implementation seems more harmful than helpful, doesn't it?
The text was updated successfully, but these errors were encountered:
First: thanks for this elegant module! It works as expected. But I'm left with some questions while porting my scripts.
May I ask why the high-level comfort-functions like .apply_voltage are only accessible from the device-class (Keithley2600) and not from the smu-class (Keithley2600Base) that replicates the TSP-Syntax in python?
Well, for obvious reason there should be no name-collision. But apart from that?
The biggest drawback is that scripted measurement-functions for a job on one specific smu-channel always need two parameters (device- and smu-class) instead of just one (smu-class) only to use these two parameters always in combination for the high-level-functions (example A). the only alternative would be to not use the high-level-functions (example B). Both options complicate things more than they should.
Am I overseeing something here, apart from hacky solutions? Wouldn't something like example C be the most elegant solution?
example:
My second concern is the high-level function .set_integration_time(). Why does someone want to set this in seconds and deal with unportable code that may cause aliasing-fragments, when setting the time to no multiple of the cycle-time? I understand that seconds are a universal SI-Unit, but there is a reason why the original parameter is "nplc", which is set to 1.
This implementation seems more harmful than helpful, doesn't it?
The text was updated successfully, but these errors were encountered: