Skip to content

Commit f1a8300

Browse files
committed
use param parsing
1 parent 9d356c8 commit f1a8300

File tree

2 files changed

+61
-13
lines changed

2 files changed

+61
-13
lines changed

phase_diagram.ipynb

+51-13
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"%%writefile learners_file.py\n",
1010
"\n",
1111
"import adaptive\n",
12+
"from functools import partial\n",
1213
"\n",
1314
"import phase_diagram\n",
1415
"lead_pars = dict(\n",
@@ -27,8 +28,8 @@
2728
" c_tunnel=3 / 4,\n",
2829
" V_r=-50,\n",
2930
" intrinsic_sc=False,\n",
30-
" mu_=lambda x0, sigma, mu_lead, mu_wire: mu_lead,\n",
31-
" V_=lambda z, V_0, V_r, V_l, x0, sigma, r1: 0,\n",
31+
" mu_=\"lambda x0, sigma, mu_lead, mu_wire: mu_lead\",\n",
32+
" V_=\"lambda z, V_0, V_r, V_l, x0, sigma, r1: 0\",\n",
3233
" V_0=None,\n",
3334
" V_l=None,\n",
3435
" mu_lead=10,\n",
@@ -52,21 +53,29 @@
5253
" import phase_diagram\n",
5354
"\n",
5455
" params[\"B_x\"], params[\"mu_lead\"] = xy\n",
56+
" params = phase_diagram.parse_params(params)\n",
5557
" lead = phase_diagram.make_lead(**lead_pars).finalized()\n",
5658
" pf = phase_diagram.calculate_pfaffian(lead, params)\n",
5759
" gap = phase_diagram.gap_from_modes(lead, params)\n",
5860
" return pf * gap\n",
5961
"\n",
60-
"fname = 'phase_diagram_gap.pickle'\n",
61-
"# fname = 'phase_diagram.pickle'\n",
6262
"\n",
63+
"fnames = ['phase_diagram_gap.pickle', 'phase_diagram_gap_no_orbital.pickle']\n",
6364
"loss = adaptive.learner.learnerND.curvature_loss_function()\n",
64-
"learner = adaptive.LearnerND(smallest_gap, bounds=[(0, 2), (0, 35)], loss_per_simplex=loss)\n",
6565
"\n",
66-
"# learner.load(fname)\n",
67-
"\n",
68-
"learners = [learner]\n",
69-
"fnames = [fname]"
66+
"learners = []\n",
67+
"for orbital in [True, False]:\n",
68+
" f = partial(smallest_gap, params=dict(params, orbital=orbital))\n",
69+
" learners.append(adaptive.Learner2D(f, bounds=[(0, 2), (0, 35)],\n",
70+
"# loss_per_simplex=loss,\n",
71+
" ))\n",
72+
"learner = adaptive.BalancingLearner(learners, strategy='npoints')\n",
73+
"# fname = 'phase_diagram_gap.pickle'\n",
74+
"# learner = adaptive.LearnerND(smallest_gap, bounds=[(0, 2), (0, 35)], loss_per_simplex=loss)\n",
75+
"# learners = [learner]\n",
76+
"# fnames = [fname]\n",
77+
"\n",
78+
"learner.load(fnames)"
7079
]
7180
},
7281
{
@@ -76,19 +85,48 @@
7685
"outputs": [],
7786
"source": [
7887
"import adaptive\n",
88+
"\n",
7989
"adaptive.notebook_extension()\n",
80-
"runner = adaptive.Runner(learner, goal=lambda l: l.npoints > 60000)\n",
90+
"runner = adaptive.Runner(learner, goal=lambda l: l.learners[1].npoints > 60000)\n",
8191
"runner.live_info()"
8292
]
8393
},
94+
{
95+
"cell_type": "code",
96+
"execution_count": null,
97+
"metadata": {},
98+
"outputs": [],
99+
"source": [
100+
"adap"
101+
]
102+
},
84103
{
85104
"cell_type": "code",
86105
"execution_count": null,
87106
"metadata": {},
88107
"outputs": [],
89108
"source": [
90109
"%%output size=100\n",
91-
"learner.plot(tri_alpha=0.4, n=None)"
110+
"%%opts Image [colorbar=True clim=(-0.1, 0)] \n",
111+
"learners[1].plot(tri_alpha=0.4).Image.I[:, 10:]"
112+
]
113+
},
114+
{
115+
"cell_type": "code",
116+
"execution_count": null,
117+
"metadata": {},
118+
"outputs": [],
119+
"source": [
120+
"runner.live_info()"
121+
]
122+
},
123+
{
124+
"cell_type": "code",
125+
"execution_count": null,
126+
"metadata": {},
127+
"outputs": [],
128+
"source": [
129+
"learners[1].npoints"
92130
]
93131
},
94132
{
@@ -97,7 +135,7 @@
97135
"metadata": {},
98136
"outputs": [],
99137
"source": [
100-
"learner.save(fname)"
138+
"learners[1].save(fnames[1])"
101139
]
102140
},
103141
{
@@ -112,7 +150,7 @@
112150
" return learner.npoints > 200\n",
113151
"\n",
114152
"scheduler = adaptive_scheduler.scheduler.DefaultScheduler(\n",
115-
" cores=100,\n",
153+
" cores=40,\n",
116154
" executor_type=\"ipyparallel\",\n",
117155
") # PBS or SLURM\n",
118156
"\n",

phase_diagram.py

+10
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,16 @@ def memoizer(*args, **kwargs):
100100
return memoizer
101101

102102

103+
def parse_params(params):
104+
for k, v in params.items():
105+
if isinstance(v, str):
106+
try:
107+
params[k] = eval(v)
108+
except NameError:
109+
pass
110+
return params
111+
112+
103113
@memoize
104114
def discretized_hamiltonian(a, which_lead=None):
105115
ham = (

0 commit comments

Comments
 (0)