Skip to content

Instantly share code, notes, and snippets.

@guenp
Created February 17, 2015 01:11
Show Gist options
  • Save guenp/891cb392697008c0b1fe to your computer and use it in GitHub Desktop.
Save guenp/891cb392697008c0b1fe to your computer and use it in GitHub Desktop.
Nano 3 QHE experiment in ipython notebook
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:36814fb451478542a586d6ccd79c77e03ed18ac9b55bdaee361a0e10e3980f5b"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Quantum Hall effect experiment"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Supervisor: Guen P <guen@nbi.dk>"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import qdev; reload(qdev)\n",
"from plotly.graph_objs import *\n",
"from plotly.widgets import GraphWidget\n",
"from plotly.grid_objs import Column, Grid\n",
"import plotly.plotly as py\n",
"from time import sleep\n",
"from qdev_conf import set_logging_config\n",
"set_logging_config('INFO')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 580
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Load experiment"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nano3_json = {\n",
" \"experiment_variables\": {\n",
" \"Vxx\": \"lockin2.R\",\n",
" \"Vxy\": \"lockin1.R\",\n",
" \"bias_voltage\": \"lockin1.amplitude\",\n",
" \"field\": \"magnet.field\",\n",
"# \"Isd\": \"lockin3.amplitude\",\n",
" \"manual_variables\": {\n",
" \"bias_resistor\": 100e3\n",
" }\n",
" },\n",
" \"metadata\": {\n",
" \"group\": \"test\"\n",
" }\n",
"}\n",
"nano3 = qdev.load_experiment(nano3_json)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 581
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet = nano3.instruments.magnet\n",
"Vxx = nano3.Vxx\n",
"Vxy = nano3.Vxy\n",
"current = nano3.bias_voltage.get()/nano3.bias_resistor.get()\n",
"timenow = nano3.seconds"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 582
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Create data grid and upload to server"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Vxx_vs_B = Scatter(x=[magnet.field.get()], y=[Vxx.get()], name='$V_{xx} (V)$')\n",
"Vxy_vs_B = Scatter(x=[magnet.field.get()], y=[Vxy.get()], name='$V_{xy} (V)$')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 625
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"column_0 = Column([0], 'time (s)')\n",
"column_1 = Column(Vxx_vs_B['x'], 'B (T)')\n",
"column_2 = Column(Vxx_vs_B['y'], 'Vxx (V)')\n",
"column_3 = Column(Vxy_vs_B['y'], 'Vxy (V)')\n",
"\n",
"grid = Grid([column_0, column_1, column_2, column_3])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 626
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"exp_name = 'Nano 3 QHE test 7'\n",
"meta_json = nano3.snapshot_string()\n",
"grid_url = py.grid_ops.upload(grid, exp_name, meta=meta_json)\n",
"grid_url"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"2015-02-17 01:52:41,920 [INFO] root: Taking snapshot...\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 628,
"text": [
"u'http://plotly.fys.ku.dk/~guen/148/'"
]
}
],
"prompt_number": 628
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Create graph"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"g = GraphWidget()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 629
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Setting the graph axes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"layout = Layout(\n",
" title='Quantum Hall effect',\n",
" yaxis=YAxis(\n",
" title='$V_{xx}, V_{xy} (V)$'\n",
" ),\n",
" xaxis=XAxis(\n",
" title='$B (T)$'),\n",
" showlegend=True\n",
")"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 630
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"g"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 631
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"g.delete_traces([0])\n",
"g.add_traces([Vxx_vs_B, Vxy_vs_B])\n",
"g.relayout(layout)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 633
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Set the field setpoint to 2T and start field sweep while measuring Vxx and Vxy."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet.field_sweep_rate.set(0.2)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 638
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet.field_setpoint.set(0)\n",
"timenow.reset()\n",
"magnet.go_to_setpoint()\n",
"lastrefresh = 0\n",
"while magnet.field.get()>0:\n",
" row = [timenow.get(), magnet.field.get(), Vxx.get(), Vxy.get()]\n",
" Vxx_vs_B['x'].append(row[1])\n",
" Vxx_vs_B['y'].append(row[2])\n",
" Vxy_vs_B['x'].append(row[1])\n",
" Vxy_vs_B['y'].append(row[3])\n",
" py.grid_ops.append_rows([row], grid_url=grid_url)\n",
" \n",
" #only refresh graph every 2 seconds\n",
" if (np.mod(int(timenow.get()),2) == 0) & ((timenow.get()-lastrefresh) > 1):\n",
" data = {'x': [Vxx_vs_B['x'], Vxy_vs_B['x']], 'y': [Vxx_vs_B['y'], Vxy_vs_B['y']]}\n",
" g.restyle(data)\n",
" lastrefresh = timenow.get()\n",
" \n",
" sleep(0.1)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 640
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Export graph"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data = Data([Vxx_vs_B, Vxy_vs_B])\n",
"fig = Figure(data=data, layout=layout)\n",
"py.plot(fig, filename=exp_name + '_graph')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 641,
"text": [
"u'http://plotly.fys.ku.dk/~guen/149'"
]
}
],
"prompt_number": 641
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Other functions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet.field_setpoint.set(2)\n",
"magnet.go_to_setpoint()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 637
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet.hold() # stop the magnet"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 643
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"magnet.go_to_zero() # go to zero field"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 577
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment