First steps with mesoscoPy
This is a short introduction, so that new users can start measuring quickly
using mesoscoPy. Before you start with this code, make sure you have
properly installed and set up the Python environment, as explained on [this
page](../start/installation.rst).
Module import and database initialisation
The first thing to do is to import mesoscoPy and load a database. If the
database does not exist yet, the init_db will first create it and then load.
Otherwise, it will simply load it.
import mesoscopy
mesoscopy.init_db('./database.db')
Station initialisation
In the following example, the measurement setup includes two Zurich Instruments’
MFLI lockin amplifiers (serial numbers mf-dev4400 and mf-dev4401), an
Oxford Mercury ITC temperature controller (on IP 192.168.0.2) and a Keithley
2614B source-measurement unit (on IP 102.168.0.13). In order to initialise the
connection to all these instruments, the basic command will be:
station = mesoscopy.init_station(
'4400', '4401',
MercITC_addr='TCPIP::192.168.0.2::7020::SOCKET',
K2600_addr='TCPIP::192.168.0.13::inst0::INSTR'
)
This will create 4 instruments: station.mf4400, station.mf4401,
station.MercuryITC and station.keithley2600. One can list all
instruments using:
station.components
Instrument initialisation
mesoscopy.init_smu(
station,
mode = ['voltage', 'voltage'],
limits_v = [20, 50],
limits_i = [10e-8, 50e-8],
max_rate = [.28, .28]
)
mesoscopy.init_mfli(
station,
freq = 127,
ampl = .5,
filterorder = 3
sensitivity = 3e-3
)
Start measuring
exp = mesoscopy.create_exp(
experiment_name = 'gate dependence',
sample_name = 'sample001'
)
xvals = mesoscopy.generate_lin_array(10, -10, step=.1)
mesoscopy.sweep1d(
station.keithley2600.smua.volt,
xvals,
.9,
station.mf4400.demods[0].sample,
station.mf4401.demods[0].sample,
station.keithley2600.smub.curr,
station.MercuryITC.he3_temp,
exp=exp,
measurement_name='sweep Vg1 10V:-10V, I = 50nA, V4400:contacts 1-2, V4401: contacts 3-4, T 300mK'
)
xvals = mesoscopy.generate_lin_array(10, -10, step=.1)
yvals = mesoscopy.generate_lin_array(30, -30, step=.1)
mesoscopy.sweep2d(
station.keithley2600.smua.volt,
xvals, .9,
station.keithley2600.smub.volt,
yvals, .9,
station.mf4400.demods[0].sample,
station.mf4401.demods[0].sample,
station.keithley2600.smub.curr,
station.MercuryITC.he3_temp,
exp=exp,
measurement_name='sweep Vg1 10V:-10V, Vg2 30V:-30V, I = 50nA, V4400:contacts 1-2, V4401: contacts 3-4, T 300mK'
)
Plot data
import matplotlib.pyplot as plt
x1, y1 = mesoscopy.analysis.load.import_sweep(1)
fig, ax = plt.subplots()
ax.plot(
x1['keithley_smua_volt'],
np.real(y1['mf4400_demods0_complex_sample'])/50e-9
)
ax.set_xlabel('$V_{g1}$ (V)')
ax.set_ylabel('$R_{1-2}$ (Ω)')