{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Performing Molecular Dynamics\n", "\n", "> ### In this tutorial we will cover:\n", "> - how we can use BuildAMol when we want to do MD simulations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Investigating the dynamics of molecular structures is done in many different fields of research, from microbiology to pharmacology, to material sciences. If we already have a structure to go on then we can use tools like VMD, CHARMM, or AMBER to perform molecular dynamics (MD) simulations. If we do not have a structure available we need to build it first - which is where BuildAMol comes in! \n", "\n", "We can build a molecule of interest and then export it as a Mol file (or other format) for use with the respective MD software of choice. In this tutorial we showcase the entire workflow of building a molecule (in BuildAMol), parametrizing the molecule (CHARMM-GUI), and running an MD simulation (OpenMM)... " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import plotly\n", "plotly.offline.init_notebook_mode()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start by making some molecule that we can study..." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import buildamol as bam\n", "\n", "bam.load_small_molecules()\n", "\n", "benzene = bam.get_compound(\"benzene\")\n", "amine = bam.get_compound(\"dimethylamine\")\n", "\n", "amine.autolabel()\n", "benzene.autolabel()" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/noahhk/anaconda3/envs/glyco2/lib/python3.11/site-packages/plotly/express/_core.py:1985: FutureWarning:\n", "\n", "When grouping with a length-1 list-like, you will need to pass a length-1 tuple to get_group in a future version of pandas. Pass `(name,)` instead of `name` to silence this warning.\n", "\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "customdata": [ [ "C1", 1, 1, "BNZ", "A" ], [ "C2", 2, 1, "BNZ", "A" ], [ "C3", 3, 1, "BNZ", "A" ], [ "C4", 4, 1, "BNZ", "A" ], [ "C5", 5, 1, "BNZ", "A" ], [ "C6", 6, 1, "BNZ", "A" ], [ "C1", 11, 2, "DMN", "A" ], [ "C2", 12, 2, "DMN", "A" ], [ "C1", 19, 3, "DMN", "A" ], [ "C2", 20, 3, "DMN", "A" ], [ "C1", 27, 4, "DMN", "A" ], [ "C2", 28, 4, "DMN", "A" ], [ "C1", 34, 5, "BNZ", "A" ], [ "C2", 35, 5, "BNZ", "A" ], [ "C3", 36, 5, "BNZ", "A" ], [ "C4", 37, 5, "BNZ", "A" ], [ "C5", 38, 5, "BNZ", "A" ], [ "C6", 39, 5, "BNZ", "A" ], [ "C1", 44, 6, "DMN", "A" ], [ "C2", 45, 6, "DMN", "A" ], [ "C1", 52, 7, "DMN", "A" ], [ "C2", 53, 7, "DMN", "A" ], [ "C1", 61, 8, "DMN", "A" ], [ "C2", 62, 8, "DMN", "A" ], [ "C1", 69, 9, "BNZ", "A" ], [ "C2", 70, 9, "BNZ", "A" ], [ "C3", 71, 9, "BNZ", "A" ], [ "C4", 72, 9, "BNZ", "A" ], [ "C5", 73, 9, "BNZ", "A" ], [ "C6", 74, 9, "BNZ", "A" ], [ "C1", 79, 10, "DMN", "A" ], [ "C2", 80, 10, "DMN", "A" ], [ "C1", 87, 11, "DMN", "A" ], [ "C2", 88, 11, "DMN", "A" ], [ "C1", 96, 12, "DMN", "A" ], [ "C2", 97, 12, "DMN", "A" ], [ "C1", 104, 13, "BNZ", "A" ], [ "C2", 105, 13, "BNZ", "A" ], [ "C3", 106, 13, "BNZ", "A" ], [ "C4", 107, 13, "BNZ", "A" ], [ "C5", 108, 13, "BNZ", "A" ], [ "C6", 109, 13, "BNZ", "A" ], [ "C1", 114, 14, "DMN", "A" ], [ "C2", 115, 14, "DMN", "A" ], [ "C1", 122, 15, "DMN", "A" ], [ "C2", 123, 15, "DMN", "A" ], [ "C1", 131, 16, "DMN", "A" ], [ "C2", 132, 16, "DMN", "A" ] ], "hovertemplate": "atom_element=C
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}", "legendgroup": "C", "marker": { "color": "darkslategray", "opacity": 1, "symbol": "circle" }, "mode": "markers", "name": "C", "scene": "scene", "showlegend": true, "type": "scatter3d", "x": [ -0.37145819550365705, -0.7064933243657008, -0.33390470574493974, 0.3728239931934682, 0.707, 0.33612962549026293, -0.6673395635160572, -0.8756945617681504, -0.5955854119563995, -2.0000768890314324, 1.2625882187492539, 2.5250811711824435, 1.8308354799147253, 2.5999580616028126, 3.919566298316396, 4.468476348615469, 3.6990692341596088, 2.380030062981569, 0.7945009364941602, -0.7386214883037288, 4.524261297640914, 4.758769256054398, 4.129565925784873, 5.117876880007574, -5.333890847753111, -5.690238305316873, -6.498377917632197, -6.949111673072721, -6.593574751483914, -5.7838140672186835, -4.703156199577158, -2.8162629408108577, -6.777750767179278, -8.298624264169316, -6.946196052704968, -6.4686374729639295, 1.482275740600243, 0.8868997083532968, 1.1649816902636838, 2.0374901582814986, 2.632102234276846, 2.355548164869659, 1.2608599010926884, 1.8501979172668062, 0.6988939949332096, -1.069908926601661, 3.317831486790675, 5.571011680379385 ], "y": [ -0.5804410636317368, -1.1882951928988694, -0.6075249528668999, 0.5796344627157519, 1.188, 0.6062069439337998, -1.034233072230532, -3.0343446010618154, -1.0844458112741382, -2.6361022671906533, 2.119338659639346, 3.6463318810638046, -6.177214828720126, -5.51253350924656, -5.877541035947099, -6.9060787419812675, -7.571415906779764, -7.205096689429363, -5.893280393216404, -4.115207293847324, -5.355725357894983, -4.741906937602925, -8.378186194548244, -9.00352765990825, -4.382637934862213, -3.218561017298602, -3.27593025133112, -4.496331625267422, -5.660330376615347, -5.603117475014204, -4.337002904444869, -3.34917377812434, -2.3628351856774943, -0.5670540728012714, -6.618689312327362, -8.500441549037538, 7.654929660535798, 7.963290834192966, 9.168052121004187, 10.062692689268316, 9.754757188107526, 8.549144556303549, 6.711437811346196, 4.4420229602791075, 9.410476590343468, 8.948539544066955, 10.456095328272369, 11.053496961371819 ], "z": [ 1.2017518998577712, 0.00654780851550607, -1.1919335845680419, -1.1941848265099795, 0.001, 1.1995199227481195, 2.1417144847339715, 3.369264103665749, -2.1304896777892743, -3.2123870544550055, -0.000004680323235546364, 1.2748048139857304, 3.0219213611308873, 2.0854934686157582, 1.8908717662040733, 2.632239383480851, 3.567968056421146, 3.7639881979824987, 3.1715695566450246, 3.3683630623353036, 1.1567939820143733, -1.1057198774682364, 4.150947711647639, 6.196167873259787, -4.989711663356854, -5.644073504759178, -6.764829115047774, -7.2298856365598025, -6.574943345783255, -5.455348634243101, -4.108182378782977, -3.1009269756130013, -7.279635922816353, -7.392993766789809, -6.940015044769141, -8.274811779314131, 1.6805817662952363, 2.8891713437807685, 3.5086022544865205, 2.919394967656796, 1.7103204429870562, 1.0918594266497195, 1.192933544212846, 0.962340967471758, 4.457712613842596, 5.943877608063304, 1.2477502509823424, 0.9056591754050274 ] }, { "customdata": [ [ "H2", 7, 1, "BNZ", "A" ], [ "H4", 8, 1, "BNZ", "A" ], [ "H6", 9, 1, "BNZ", "A" ], [ "HN2", 13, 2, "DMN", "A" ], [ "H12", 14, 2, "DMN", "A" ], [ "H13", 15, 2, "DMN", "A" ], [ "H22", 16, 2, "DMN", "A" ], [ "H23", 17, 2, "DMN", "A" ], [ "HN2", 21, 3, "DMN", "A" ], [ "H12", 22, 3, "DMN", "A" ], [ "H13", 23, 3, "DMN", "A" ], [ "H22", 24, 3, "DMN", "A" ], [ "H23", 25, 3, "DMN", "A" ], [ "HN2", 29, 4, "DMN", "A" ], [ "H12", 30, 4, "DMN", "A" ], [ "H13", 31, 4, "DMN", "A" ], [ "H21", 32, 4, "DMN", "A" ], [ "H23", 33, 4, "DMN", "A" ], [ "H2", 40, 5, "BNZ", "A" ], [ "H4", 41, 5, "BNZ", "A" ], [ "H6", 42, 5, "BNZ", "A" ], [ "HN2", 46, 6, "DMN", "A" ], [ "H12", 47, 6, "DMN", "A" ], [ "H13", 48, 6, "DMN", "A" ], [ "H22", 49, 6, "DMN", "A" ], [ "H23", 50, 6, "DMN", "A" ], [ "HN2", 54, 7, "DMN", "A" ], [ "H12", 55, 7, "DMN", "A" ], [ "H13", 56, 7, "DMN", "A" ], [ "H21", 57, 7, "DMN", "A" ], [ "H22", 58, 7, "DMN", "A" ], [ "H23", 59, 7, "DMN", "A" ], [ "HN2", 63, 8, "DMN", "A" ], [ "H12", 64, 8, "DMN", "A" ], [ "H13", 65, 8, "DMN", "A" ], [ "H21", 66, 8, "DMN", "A" ], [ "H22", 67, 8, "DMN", "A" ], [ "H23", 68, 8, "DMN", "A" ], [ "H2", 75, 9, "BNZ", "A" ], [ "H4", 76, 9, "BNZ", "A" ], [ "H6", 77, 9, "BNZ", "A" ], [ "HN2", 81, 10, "DMN", "A" ], [ "H12", 82, 10, "DMN", "A" ], [ "H13", 83, 10, "DMN", "A" ], [ "H22", 84, 10, "DMN", "A" ], [ "H23", 85, 10, "DMN", "A" ], [ "HN2", 89, 11, "DMN", "A" ], [ "H12", 90, 11, "DMN", "A" ], [ "H13", 91, 11, "DMN", "A" ], [ "H21", 92, 11, "DMN", "A" ], [ "H22", 93, 11, "DMN", "A" ], [ "H23", 94, 11, "DMN", "A" ], [ "HN2", 98, 12, "DMN", "A" ], [ "H12", 99, 12, "DMN", "A" ], [ "H13", 100, 12, "DMN", "A" ], [ "H21", 101, 12, "DMN", "A" ], [ "H22", 102, 12, "DMN", "A" ], [ "H23", 103, 12, "DMN", "A" ], [ "H2", 110, 13, "BNZ", "A" ], [ "H4", 111, 13, "BNZ", "A" ], [ "H6", 112, 13, "BNZ", "A" ], [ "HN2", 116, 14, "DMN", "A" ], [ "H12", 117, 14, "DMN", "A" ], [ "H13", 118, 14, "DMN", "A" ], [ "H22", 119, 14, "DMN", "A" ], [ "H23", 120, 14, "DMN", "A" ], [ "HN2", 124, 15, "DMN", "A" ], [ "H12", 125, 15, "DMN", "A" ], [ "H13", 126, 15, "DMN", "A" ], [ "H21", 127, 15, "DMN", "A" ], [ "H22", 128, 15, "DMN", "A" ], [ "H23", 129, 15, "DMN", "A" ], [ "HN2", 133, 16, "DMN", "A" ], [ "H12", 134, 16, "DMN", "A" ], [ "H13", 135, 16, "DMN", "A" ], [ "H21", 136, 16, "DMN", "A" ], [ "H22", 137, 16, "DMN", "A" ], [ "H23", 138, 16, "DMN", "A" ] ], "hovertemplate": "atom_element=H
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}", "legendgroup": "H", "marker": { "color": "lightgray", "opacity": 1, "symbol": "circle" }, "mode": "markers", "name": "H", "scene": "scene", "showlegend": true, "type": "scatter3d", "x": [ -1.2586342023101889, 0.6648672968724167, 0.5975338460835128, -1.104983083950473, -1.7211174342644646, -0.06776592699460587, -0.2734678480193804, -1.9268193552892396, -1.335554128979401, 0.27042374192582486, -0.9048048955860637, -2.291412355550634, -1.1161837180387453, 2.467439101860413, 2.0903101565905597, 0.6040165319958973, 2.936816551979383, 3.336727222532665, 2.171751380131548, 5.499541655573492, 1.7782437726257947, 0.9121114786544009, 0.18489357545153595, 0.4475221815631496, -1.0660783108306928, -1.3287069169423051, 3.0269771869323545, 4.605333749121097, 5.517844238586699, 4.331611118189525, 5.749366102453325, 4.836855612987724, 5.303031029481906, 4.9949110578366485, 3.3877802876320993, 5.444645860038138, 4.363506637174543, 5.970637407379096, -5.338449161454541, -7.579590480416263, -5.504843067418044, -4.0663682124644325, -5.301724785615688, -4.270905446027356, -2.4080388416596086, -3.4388581812479404, -7.710475186485975, -5.959216148411785, -6.9852541292409525, -9.18645202955958, -8.486761664894114, -7.460723684064945, -5.86764465552057, -7.871083847765173, -7.130734641704596, -5.747488491426486, -6.6592570285986294, -7.399606234659206, 0.20512889543029988, 2.255670715311154, 2.8203771500843575, 2.011438674453831, 0.2433889554537112, 1.3544786906364026, 1.9363124026996434, 0.8252226675169512, -0.1643727108309765, 1.406258478089904, 0.4080281112673667, -1.9606836616687158, -1.3382518528625589, -0.3400214860400217, 4.8183304050067495, 3.126346097919767, 3.171847121667025, 6.613096497325801, 5.396336565761823, 5.350835542014567 ], "y": [ -2.1158066009159846, 1.0330271678942429, 1.0805467156135342, -2.8400315982706115, -0.8276246606175719, -0.6184075578102031, -2.5930507734560297, -2.8022678762633975, -2.7654749171876176, -1.620394438764702, -0.32667931027593666, -1.8585778316943635, -3.152292960183128, 1.6583880986699406, 2.047039282958033, 2.9341957565639127, 3.8837690485331056, 3.554588617861807, -4.708865731558603, -7.19077091905884, -7.723992014784784, -4.126652076490493, -6.310323720396358, -6.278544021292586, -4.523111920642128, -4.5548916197459, -4.953957336008761, -4.30493429246587, -5.799679906192351, -4.794420340035031, -5.193677509927779, -3.6989318962013007, -7.221277101367955, -8.782983826810083, -9.163527868553711, -8.673418393772351, -9.780906581808111, -9.400362540064485, -2.264744781934242, -4.541537714246048, -6.512328176445543, -2.4559684616962434, -4.033608479722184, -5.318460089707343, -4.343209432737244, -3.058357822752086, -1.5089909140124043, -1.6459354329251967, -2.58488891260963, -0.10450054227743522, -0.8119742824949903, 0.12697919718944561, -6.620216632796609, -6.4758924034717715, -7.282368064901281, -8.9832766311653, -9.140159110142317, -8.333683448712808, 7.264794219184041, 11.003441504083819, 8.307346456445554, 5.536851136750205, 6.406777832844058, 6.829737523127607, 4.589220144697194, 4.166260454413647, 7.622334001886708, 9.227101567610724, 10.459657359683838, 8.350179308743005, 10.003602364081473, 8.771046572008359, 10.18928793019422, 11.45774306487362, 10.448040005952645, 10.807846188881504, 11.037834657306348, 12.04753771622732 ], "z": [ 0.00756707334779183, -2.1302001915907116, 2.134022257929179, 1.3860499875043826, 2.3282812646593447, 2.9497971512635246, 4.161715832772572, 3.5401999461683924, -1.3242288993192677, -2.5187282823653465, -2.8485218782571535, -3.916642972537498, -3.58684937664569, 1.536005713459388, -0.7054061218781323, -0.2961266906475367, 2.255188191906917, 0.553170653912468, 1.5059288552640888, 2.4811311537301384, 4.4955795470730475, 2.228881299099111, 2.370073624891581, 4.128948624991573, 4.323236271101754, 2.5643612710017623, -0.11607354778176582, 1.4346561680443242, 1.1237137990099608, -2.1066355921119957, -1.1099904612432434, -0.7990480922088805, 5.294630360166046, 3.626296704453809, 4.286555683760522, 7.181715389161992, 6.305733143824126, 5.645474164517413, -5.281282948906402, -8.10591753267428, -4.943356367042739, -4.390457926187095, -3.2493404428861408, -3.92030454732782, -2.925874976965611, -2.254910872523932, -5.722573265960923, -7.216407587531825, -8.325117389456793, -6.963040175803442, -8.437031797386446, -7.328321995461478, -8.631225720860021, -7.498704233289882, -6.096882183025544, -8.933498677539825, -7.414682354736768, -8.816504405001105, 3.350071590545067, 3.4035105653785136, 0.1473528393728829, 2.6353088937114473, 1.4376316690107247, 0.11467675641283082, -0.11297958208452563, 1.2099753305133685, 4.741940828603545, 5.266385037637442, 4.461420843290658, 6.132396573022501, 5.92866183503827, 6.733626029385048, 2.5518920411122146, 1.6324282430881425, 0.16885235177140778, 1.1075723554222527, -0.16888272539023674, 1.2946931659264997 ] }, { "customdata": [ [ "N2", 10, 2, "DMN", "A" ], [ "N2", 18, 3, "DMN", "A" ], [ "N2", 26, 4, "DMN", "A" ], [ "N2", 43, 6, "DMN", "A" ], [ "N2", 51, 7, "DMN", "A" ], [ "N2", 60, 8, "DMN", "A" ], [ "N2", 78, 10, "DMN", "A" ], [ "N2", 86, 11, "DMN", "A" ], [ "N2", 95, 12, "DMN", "A" ], [ "N2", 113, 14, "DMN", "A" ], [ "N2", 121, 15, "DMN", "A" ], [ "N2", 130, 16, "DMN", "A" ] ], "hovertemplate": "atom_element=N
x=%{x}
y=%{y}
z=%{z}
atom_id=%{customdata[0]}
atom_serial=%{customdata[1]}
residue_serial=%{customdata[2]}
residue_name=%{customdata[3]}
chain_id=%{customdata[4]}", "legendgroup": "N", "marker": { "color": "blue", "opacity": 1, "symbol": "circle" }, "mode": "markers", "name": "N", "scene": "scene", "showlegend": true, "type": "scatter3d", "x": [ -0.4583729174852992, -1.697043658812387, 1.7883622362354967, 0.680115402928438, 3.894763497277002, 4.547646997065812, -3.627954529323535, -7.976303826852221, -5.93136388534265, 2.2031055926400764, -0.4904115668150544, 4.699303193329889 ], "y": [ -2.485502326444628, -2.029408841681444, 2.3787609753789773, -4.429951559108154, -5.46474301293898, -7.867563837387715, -3.361327833022611, -1.7928372492769213, -7.213022715185295, 5.686041743045324, 8.571744349658584, 10.06911290721235 ], "z": [ 2.073454008471979, -1.9106178933412112, 1.3456441388835676, 3.161891076481757, -0.16470390683210923, 5.462047260196266, -4.3238407273090464, -6.652673471271049, -7.818304563284541, 1.656878540816422, 4.648996458508986, 1.5580557936691388 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.37145819550365705, -0.7064933243657008 ], "y": [ -0.5804410636317368, -1.1882951928988694 ], "z": [ 1.2017518998577712, 0.00654780851550607 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.37145819550365705, 0.33612962549026293 ], "y": [ -0.5804410636317368, 0.6062069439337998 ], "z": [ 1.2017518998577712, 1.1995199227481195 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.37145819550365705, -0.6673395635160572 ], "y": [ -0.5804410636317368, -1.034233072230532 ], "z": [ 1.2017518998577712, 2.1417144847339715 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.7064933243657008, -0.33390470574493974 ], "y": [ -1.1882951928988694, -0.6075249528668999 ], "z": [ 0.00654780851550607, -1.1919335845680419 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.7064933243657008, -1.2586342023101889 ], "y": [ -1.1882951928988694, -2.1158066009159846 ], "z": [ 0.00654780851550607, 0.00756707334779183 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.33390470574493974, 0.3728239931934682 ], "y": [ -0.6075249528668999, 0.5796344627157519 ], "z": [ -1.1919335845680419, -1.1941848265099795 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.33390470574493974, -0.5955854119563995 ], "y": [ -0.6075249528668999, -1.0844458112741382 ], "z": [ -1.1919335845680419, -2.1304896777892743 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.3728239931934682, 0.707 ], "y": [ 0.5796344627157519, 1.188 ], "z": [ -1.1941848265099795, 0.001 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.3728239931934682, 0.6648672968724167 ], "y": [ 0.5796344627157519, 1.0330271678942429 ], "z": [ -1.1941848265099795, -2.1302001915907116 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.707, 0.33612962549026293 ], "y": [ 1.188, 0.6062069439337998 ], "z": [ 0.001, 1.1995199227481195 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.707, 1.2625882187492539 ], "y": [ 1.188, 2.119338659639346 ], "z": [ 0.001, -0.000004680323235546364 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.33612962549026293, 0.5975338460835128 ], "y": [ 0.6062069439337998, 1.0805467156135342 ], "z": [ 1.1995199227481195, 2.134022257929179 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4583729174852992, -0.6673395635160572 ], "y": [ -2.485502326444628, -1.034233072230532 ], "z": [ 2.073454008471979, 2.1417144847339715 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4583729174852992, -0.8756945617681504 ], "y": [ -2.485502326444628, -3.0343446010618154 ], "z": [ 2.073454008471979, 3.369264103665749 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4583729174852992, -1.104983083950473 ], "y": [ -2.485502326444628, -2.8400315982706115 ], "z": [ 2.073454008471979, 1.3860499875043826 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.6673395635160572, -1.7211174342644646 ], "y": [ -1.034233072230532, -0.8276246606175719 ], "z": [ 2.1417144847339715, 2.3282812646593447 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.6673395635160572, -0.06776592699460587 ], "y": [ -1.034233072230532, -0.6184075578102031 ], "z": [ 2.1417144847339715, 2.9497971512635246 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.8756945617681504, -0.2734678480193804 ], "y": [ -3.0343446010618154, -2.5930507734560297 ], "z": [ 3.369264103665749, 4.161715832772572 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.8756945617681504, -1.9268193552892396 ], "y": [ -3.0343446010618154, -2.8022678762633975 ], "z": [ 3.369264103665749, 3.5401999461683924 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.8756945617681504, -0.7386214883037288 ], "y": [ -3.0343446010618154, -4.115207293847324 ], "z": [ 3.369264103665749, 3.3683630623353036 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.697043658812387, -0.5955854119563995 ], "y": [ -2.029408841681444, -1.0844458112741382 ], "z": [ -1.9106178933412112, -2.1304896777892743 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.697043658812387, -2.0000768890314324 ], "y": [ -2.029408841681444, -2.6361022671906533 ], "z": [ -1.9106178933412112, -3.2123870544550055 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.697043658812387, -1.335554128979401 ], "y": [ -2.029408841681444, -2.7654749171876176 ], "z": [ -1.9106178933412112, -1.3242288993192677 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.5955854119563995, 0.27042374192582486 ], "y": [ -1.0844458112741382, -1.620394438764702 ], "z": [ -2.1304896777892743, -2.5187282823653465 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.5955854119563995, -0.9048048955860637 ], "y": [ -1.0844458112741382, -0.32667931027593666 ], "z": [ -2.1304896777892743, -2.8485218782571535 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -2.0000768890314324, -2.291412355550634 ], "y": [ -2.6361022671906533, -1.8585778316943635 ], "z": [ -3.2123870544550055, -3.916642972537498 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -2.0000768890314324, -1.1161837180387453 ], "y": [ -2.6361022671906533, -3.152292960183128 ], "z": [ -3.2123870544550055, -3.58684937664569 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -2.0000768890314324, -2.8162629408108577 ], "y": [ -2.6361022671906533, -3.34917377812434 ], "z": [ -3.2123870544550055, -3.1009269756130013 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.7883622362354967, 1.2625882187492539 ], "y": [ 2.3787609753789773, 2.119338659639346 ], "z": [ 1.3456441388835676, -0.000004680323235546364 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.7883622362354967, 2.5250811711824435 ], "y": [ 2.3787609753789773, 3.6463318810638046 ], "z": [ 1.3456441388835676, 1.2748048139857304 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.7883622362354967, 2.467439101860413 ], "y": [ 2.3787609753789773, 1.6583880986699406 ], "z": [ 1.3456441388835676, 1.536005713459388 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.2625882187492539, 2.0903101565905597 ], "y": [ 2.119338659639346, 2.047039282958033 ], "z": [ -0.000004680323235546364, -0.7054061218781323 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.2625882187492539, 0.6040165319958973 ], "y": [ 2.119338659639346, 2.9341957565639127 ], "z": [ -0.000004680323235546364, -0.2961266906475367 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.5250811711824435, 2.936816551979383 ], "y": [ 3.6463318810638046, 3.8837690485331056 ], "z": [ 1.2748048139857304, 2.255188191906917 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.5250811711824435, 3.336727222532665 ], "y": [ 3.6463318810638046, 3.554588617861807 ], "z": [ 1.2748048139857304, 0.553170653912468 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.5250811711824435, 1.8501979172668062 ], "y": [ 3.6463318810638046, 4.4420229602791075 ], "z": [ 1.2748048139857304, 0.962340967471758 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.8308354799147253, 2.5999580616028126 ], "y": [ -6.177214828720126, -5.51253350924656 ], "z": [ 3.0219213611308873, 2.0854934686157582 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.8308354799147253, 2.380030062981569 ], "y": [ -6.177214828720126, -7.205096689429363 ], "z": [ 3.0219213611308873, 3.7639881979824987 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.8308354799147253, 0.7945009364941602 ], "y": [ -6.177214828720126, -5.893280393216404 ], "z": [ 3.0219213611308873, 3.1715695566450246 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.5999580616028126, 3.919566298316396 ], "y": [ -5.51253350924656, -5.877541035947099 ], "z": [ 2.0854934686157582, 1.8908717662040733 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.5999580616028126, 2.171751380131548 ], "y": [ -5.51253350924656, -4.708865731558603 ], "z": [ 2.0854934686157582, 1.5059288552640888 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.919566298316396, 4.468476348615469 ], "y": [ -5.877541035947099, -6.9060787419812675 ], "z": [ 1.8908717662040733, 2.632239383480851 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.919566298316396, 4.524261297640914 ], "y": [ -5.877541035947099, -5.355725357894983 ], "z": [ 1.8908717662040733, 1.1567939820143733 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.468476348615469, 3.6990692341596088 ], "y": [ -6.9060787419812675, -7.571415906779764 ], "z": [ 2.632239383480851, 3.567968056421146 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.468476348615469, 5.499541655573492 ], "y": [ -6.9060787419812675, -7.19077091905884 ], "z": [ 2.632239383480851, 2.4811311537301384 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.6990692341596088, 2.380030062981569 ], "y": [ -7.571415906779764, -7.205096689429363 ], "z": [ 3.567968056421146, 3.7639881979824987 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.6990692341596088, 4.129565925784873 ], "y": [ -7.571415906779764, -8.378186194548244 ], "z": [ 3.567968056421146, 4.150947711647639 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.380030062981569, 1.7782437726257947 ], "y": [ -7.205096689429363, -7.723992014784784 ], "z": [ 3.7639881979824987, 4.4955795470730475 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.680115402928438, 0.7945009364941602 ], "y": [ -4.429951559108154, -5.893280393216404 ], "z": [ 3.161891076481757, 3.1715695566450246 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.680115402928438, -0.7386214883037288 ], "y": [ -4.429951559108154, -4.115207293847324 ], "z": [ 3.161891076481757, 3.3683630623353036 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.680115402928438, 0.9121114786544009 ], "y": [ -4.429951559108154, -4.126652076490493 ], "z": [ 3.161891076481757, 2.228881299099111 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.7945009364941602, 0.18489357545153595 ], "y": [ -5.893280393216404, -6.310323720396358 ], "z": [ 3.1715695566450246, 2.370073624891581 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.7945009364941602, 0.4475221815631496 ], "y": [ -5.893280393216404, -6.278544021292586 ], "z": [ 3.1715695566450246, 4.128948624991573 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.7386214883037288, -1.0660783108306928 ], "y": [ -4.115207293847324, -4.523111920642128 ], "z": [ 3.3683630623353036, 4.323236271101754 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.7386214883037288, -1.3287069169423051 ], "y": [ -4.115207293847324, -4.5548916197459 ], "z": [ 3.3683630623353036, 2.5643612710017623 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.894763497277002, 4.524261297640914 ], "y": [ -5.46474301293898, -5.355725357894983 ], "z": [ -0.16470390683210923, 1.1567939820143733 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.894763497277002, 4.758769256054398 ], "y": [ -5.46474301293898, -4.741906937602925 ], "z": [ -0.16470390683210923, -1.1057198774682364 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.894763497277002, 3.0269771869323545 ], "y": [ -5.46474301293898, -4.953957336008761 ], "z": [ -0.16470390683210923, -0.11607354778176582 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.524261297640914, 4.605333749121097 ], "y": [ -5.355725357894983, -4.30493429246587 ], "z": [ 1.1567939820143733, 1.4346561680443242 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.524261297640914, 5.517844238586699 ], "y": [ -5.355725357894983, -5.799679906192351 ], "z": [ 1.1567939820143733, 1.1237137990099608 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.758769256054398, 4.331611118189525 ], "y": [ -4.741906937602925, -4.794420340035031 ], "z": [ -1.1057198774682364, -2.1066355921119957 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.758769256054398, 5.749366102453325 ], "y": [ -4.741906937602925, -5.193677509927779 ], "z": [ -1.1057198774682364, -1.1099904612432434 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.758769256054398, 4.836855612987724 ], "y": [ -4.741906937602925, -3.6989318962013007 ], "z": [ -1.1057198774682364, -0.7990480922088805 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.547646997065812, 4.129565925784873 ], "y": [ -7.867563837387715, -8.378186194548244 ], "z": [ 5.462047260196266, 4.150947711647639 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.547646997065812, 5.117876880007574 ], "y": [ -7.867563837387715, -9.00352765990825 ], "z": [ 5.462047260196266, 6.196167873259787 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.547646997065812, 5.303031029481906 ], "y": [ -7.867563837387715, -7.221277101367955 ], "z": [ 5.462047260196266, 5.294630360166046 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.129565925784873, 4.9949110578366485 ], "y": [ -8.378186194548244, -8.782983826810083 ], "z": [ 4.150947711647639, 3.626296704453809 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.129565925784873, 3.3877802876320993 ], "y": [ -8.378186194548244, -9.163527868553711 ], "z": [ 4.150947711647639, 4.286555683760522 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.117876880007574, 5.444645860038138 ], "y": [ -9.00352765990825, -8.673418393772351 ], "z": [ 6.196167873259787, 7.181715389161992 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.117876880007574, 4.363506637174543 ], "y": [ -9.00352765990825, -9.780906581808111 ], "z": [ 6.196167873259787, 6.305733143824126 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.117876880007574, 5.970637407379096 ], "y": [ -9.00352765990825, -9.400362540064485 ], "z": [ 6.196167873259787, 5.645474164517413 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.333890847753111, -5.690238305316873 ], "y": [ -4.382637934862213, -3.218561017298602 ], "z": [ -4.989711663356854, -5.644073504759178 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.333890847753111, -5.7838140672186835 ], "y": [ -4.382637934862213, -5.603117475014204 ], "z": [ -4.989711663356854, -5.455348634243101 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.333890847753111, -4.703156199577158 ], "y": [ -4.382637934862213, -4.337002904444869 ], "z": [ -4.989711663356854, -4.108182378782977 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.690238305316873, -6.498377917632197 ], "y": [ -3.218561017298602, -3.27593025133112 ], "z": [ -5.644073504759178, -6.764829115047774 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.690238305316873, -5.338449161454541 ], "y": [ -3.218561017298602, -2.264744781934242 ], "z": [ -5.644073504759178, -5.281282948906402 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.498377917632197, -6.949111673072721 ], "y": [ -3.27593025133112, -4.496331625267422 ], "z": [ -6.764829115047774, -7.2298856365598025 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.498377917632197, -6.777750767179278 ], "y": [ -3.27593025133112, -2.3628351856774943 ], "z": [ -6.764829115047774, -7.279635922816353 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.949111673072721, -6.593574751483914 ], "y": [ -4.496331625267422, -5.660330376615347 ], "z": [ -7.2298856365598025, -6.574943345783255 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.949111673072721, -7.579590480416263 ], "y": [ -4.496331625267422, -4.541537714246048 ], "z": [ -7.2298856365598025, -8.10591753267428 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.593574751483914, -5.7838140672186835 ], "y": [ -5.660330376615347, -5.603117475014204 ], "z": [ -6.574943345783255, -5.455348634243101 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.593574751483914, -6.946196052704968 ], "y": [ -5.660330376615347, -6.618689312327362 ], "z": [ -6.574943345783255, -6.940015044769141 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.7838140672186835, -5.504843067418044 ], "y": [ -5.603117475014204, -6.512328176445543 ], "z": [ -5.455348634243101, -4.943356367042739 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -3.627954529323535, -4.703156199577158 ], "y": [ -3.361327833022611, -4.337002904444869 ], "z": [ -4.3238407273090464, -4.108182378782977 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -3.627954529323535, -2.8162629408108577 ], "y": [ -3.361327833022611, -3.34917377812434 ], "z": [ -4.3238407273090464, -3.1009269756130013 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -3.627954529323535, -4.0663682124644325 ], "y": [ -3.361327833022611, -2.4559684616962434 ], "z": [ -4.3238407273090464, -4.390457926187095 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -4.703156199577158, -5.301724785615688 ], "y": [ -4.337002904444869, -4.033608479722184 ], "z": [ -4.108182378782977, -3.2493404428861408 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -4.703156199577158, -4.270905446027356 ], "y": [ -4.337002904444869, -5.318460089707343 ], "z": [ -4.108182378782977, -3.92030454732782 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -2.8162629408108577, -2.4080388416596086 ], "y": [ -3.34917377812434, -4.343209432737244 ], "z": [ -3.1009269756130013, -2.925874976965611 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -2.8162629408108577, -3.4388581812479404 ], "y": [ -3.34917377812434, -3.058357822752086 ], "z": [ -3.1009269756130013, -2.254910872523932 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -7.976303826852221, -6.777750767179278 ], "y": [ -1.7928372492769213, -2.3628351856774943 ], "z": [ -6.652673471271049, -7.279635922816353 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -7.976303826852221, -8.298624264169316 ], "y": [ -1.7928372492769213, -0.5670540728012714 ], "z": [ -6.652673471271049, -7.392993766789809 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -7.976303826852221, -7.710475186485975 ], "y": [ -1.7928372492769213, -1.5089909140124043 ], "z": [ -6.652673471271049, -5.722573265960923 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.777750767179278, -5.959216148411785 ], "y": [ -2.3628351856774943, -1.6459354329251967 ], "z": [ -7.279635922816353, -7.216407587531825 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.777750767179278, -6.9852541292409525 ], "y": [ -2.3628351856774943, -2.58488891260963 ], "z": [ -7.279635922816353, -8.325117389456793 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -8.298624264169316, -9.18645202955958 ], "y": [ -0.5670540728012714, -0.10450054227743522 ], "z": [ -7.392993766789809, -6.963040175803442 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -8.298624264169316, -8.486761664894114 ], "y": [ -0.5670540728012714, -0.8119742824949903 ], "z": [ -7.392993766789809, -8.437031797386446 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -8.298624264169316, -7.460723684064945 ], "y": [ -0.5670540728012714, 0.12697919718944561 ], "z": [ -7.392993766789809, -7.328321995461478 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.93136388534265, -6.946196052704968 ], "y": [ -7.213022715185295, -6.618689312327362 ], "z": [ -7.818304563284541, -6.940015044769141 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.93136388534265, -6.4686374729639295 ], "y": [ -7.213022715185295, -8.500441549037538 ], "z": [ -7.818304563284541, -8.274811779314131 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -5.93136388534265, -5.86764465552057 ], "y": [ -7.213022715185295, -6.620216632796609 ], "z": [ -7.818304563284541, -8.631225720860021 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.946196052704968, -7.871083847765173 ], "y": [ -6.618689312327362, -6.4758924034717715 ], "z": [ -6.940015044769141, -7.498704233289882 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.946196052704968, -7.130734641704596 ], "y": [ -6.618689312327362, -7.282368064901281 ], "z": [ -6.940015044769141, -6.096882183025544 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.4686374729639295, -5.747488491426486 ], "y": [ -8.500441549037538, -8.9832766311653 ], "z": [ -8.274811779314131, -8.933498677539825 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.4686374729639295, -6.6592570285986294 ], "y": [ -8.500441549037538, -9.140159110142317 ], "z": [ -8.274811779314131, -7.414682354736768 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -6.4686374729639295, -7.399606234659206 ], "y": [ -8.500441549037538, -8.333683448712808 ], "z": [ -8.274811779314131, -8.816504405001105 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.482275740600243, 0.8868997083532968 ], "y": [ 7.654929660535798, 7.963290834192966 ], "z": [ 1.6805817662952363, 2.8891713437807685 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.482275740600243, 2.355548164869659 ], "y": [ 7.654929660535798, 8.549144556303549 ], "z": [ 1.6805817662952363, 1.0918594266497195 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.482275740600243, 1.2608599010926884 ], "y": [ 7.654929660535798, 6.711437811346196 ], "z": [ 1.6805817662952363, 1.192933544212846 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.8868997083532968, 1.1649816902636838 ], "y": [ 7.963290834192966, 9.168052121004187 ], "z": [ 2.8891713437807685, 3.5086022544865205 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.8868997083532968, 0.20512889543029988 ], "y": [ 7.963290834192966, 7.264794219184041 ], "z": [ 2.8891713437807685, 3.350071590545067 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.1649816902636838, 2.0374901582814986 ], "y": [ 9.168052121004187, 10.062692689268316 ], "z": [ 3.5086022544865205, 2.919394967656796 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.1649816902636838, 0.6988939949332096 ], "y": [ 9.168052121004187, 9.410476590343468 ], "z": [ 3.5086022544865205, 4.457712613842596 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.0374901582814986, 2.632102234276846 ], "y": [ 10.062692689268316, 9.754757188107526 ], "z": [ 2.919394967656796, 1.7103204429870562 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.0374901582814986, 2.255670715311154 ], "y": [ 10.062692689268316, 11.003441504083819 ], "z": [ 2.919394967656796, 3.4035105653785136 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 5.76 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.632102234276846, 2.355548164869659 ], "y": [ 9.754757188107526, 8.549144556303549 ], "z": [ 1.7103204429870562, 1.0918594266497195 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.632102234276846, 3.317831486790675 ], "y": [ 9.754757188107526, 10.456095328272369 ], "z": [ 1.7103204429870562, 1.2477502509823424 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.355548164869659, 2.8203771500843575 ], "y": [ 8.549144556303549, 8.307346456445554 ], "z": [ 1.0918594266497195, 0.1473528393728829 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.2031055926400764, 1.2608599010926884 ], "y": [ 5.686041743045324, 6.711437811346196 ], "z": [ 1.656878540816422, 1.192933544212846 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.2031055926400764, 1.8501979172668062 ], "y": [ 5.686041743045324, 4.4420229602791075 ], "z": [ 1.656878540816422, 0.962340967471758 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 2.2031055926400764, 2.011438674453831 ], "y": [ 5.686041743045324, 5.536851136750205 ], "z": [ 1.656878540816422, 2.6353088937114473 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.2608599010926884, 0.2433889554537112 ], "y": [ 6.711437811346196, 6.406777832844058 ], "z": [ 1.192933544212846, 1.4376316690107247 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.2608599010926884, 1.3544786906364026 ], "y": [ 6.711437811346196, 6.829737523127607 ], "z": [ 1.192933544212846, 0.11467675641283082 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.8501979172668062, 1.9363124026996434 ], "y": [ 4.4420229602791075, 4.589220144697194 ], "z": [ 0.962340967471758, -0.11297958208452563 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 1.8501979172668062, 0.8252226675169512 ], "y": [ 4.4420229602791075, 4.166260454413647 ], "z": [ 0.962340967471758, 1.2099753305133685 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4904115668150544, 0.6988939949332096 ], "y": [ 8.571744349658584, 9.410476590343468 ], "z": [ 4.648996458508986, 4.457712613842596 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4904115668150544, -1.069908926601661 ], "y": [ 8.571744349658584, 8.948539544066955 ], "z": [ 4.648996458508986, 5.943877608063304 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -0.4904115668150544, -0.1643727108309765 ], "y": [ 8.571744349658584, 7.622334001886708 ], "z": [ 4.648996458508986, 4.741940828603545 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.6988939949332096, 1.406258478089904 ], "y": [ 9.410476590343468, 9.227101567610724 ], "z": [ 4.457712613842596, 5.266385037637442 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 0.6988939949332096, 0.4080281112673667 ], "y": [ 9.410476590343468, 10.459657359683838 ], "z": [ 4.457712613842596, 4.461420843290658 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.069908926601661, -1.9606836616687158 ], "y": [ 8.948539544066955, 8.350179308743005 ], "z": [ 5.943877608063304, 6.132396573022501 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.069908926601661, -1.3382518528625589 ], "y": [ 8.948539544066955, 10.003602364081473 ], "z": [ 5.943877608063304, 5.92866183503827 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ -1.069908926601661, -0.3400214860400217 ], "y": [ 8.948539544066955, 8.771046572008359 ], "z": [ 5.943877608063304, 6.733626029385048 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.699303193329889, 3.317831486790675 ], "y": [ 10.06911290721235, 10.456095328272369 ], "z": [ 1.5580557936691388, 1.2477502509823424 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.699303193329889, 5.571011680379385 ], "y": [ 10.06911290721235, 11.053496961371819 ], "z": [ 1.5580557936691388, 0.9056591754050274 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 4.699303193329889, 4.8183304050067495 ], "y": [ 10.06911290721235, 10.18928793019422 ], "z": [ 1.5580557936691388, 2.5518920411122146 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.317831486790675, 3.126346097919767 ], "y": [ 10.456095328272369, 11.45774306487362 ], "z": [ 1.2477502509823424, 1.6324282430881425 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 3.317831486790675, 3.171847121667025 ], "y": [ 10.456095328272369, 10.448040005952645 ], "z": [ 1.2477502509823424, 0.16885235177140778 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.571011680379385, 6.613096497325801 ], "y": [ 11.053496961371819, 10.807846188881504 ], "z": [ 0.9056591754050274, 1.1075723554222527 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.571011680379385, 5.396336565761823 ], "y": [ 11.053496961371819, 11.037834657306348 ], "z": [ 0.9056591754050274, -0.16888272539023674 ] }, { "hoverinfo": "skip", "line": { "color": "black", "width": 1.44 }, "mode": "lines", "showlegend": false, "type": "scatter3d", "x": [ 5.571011680379385, 5.350835542014567 ], "y": [ 11.053496961371819, 12.04753771622732 ], "z": [ 0.9056591754050274, 1.2946931659264997 ] } ], "layout": { "scene": { "xaxis": { "showgrid": false, "showline": false, "showticklabels": false }, "yaxis": { "showgrid": false, "showline": false, "showticklabels": false }, "zaxis": { "showgrid": false, "showline": false, "showticklabels": false } }, "template": { "data": { "bar": [ { "error_x": { "color": "rgb(36,36,36)" }, "error_y": { "color": "rgb(36,36,36)" }, "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "white", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "baxis": { "endlinecolor": "rgb(36,36,36)", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "rgb(36,36,36)" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "line": { "color": "white", "width": 0.6 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "rgb(237,237,237)" }, "line": { "color": "white" } }, "header": { "fill": { "color": "rgb(217,217,217)" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 1, "tickcolor": "rgb(36,36,36)", "ticks": "outside" } }, "colorscale": { "diverging": [ [ 0, "rgb(103,0,31)" ], [ 0.1, "rgb(178,24,43)" ], [ 0.2, "rgb(214,96,77)" ], [ 0.3, "rgb(244,165,130)" ], [ 0.4, "rgb(253,219,199)" ], [ 0.5, "rgb(247,247,247)" ], [ 0.6, "rgb(209,229,240)" ], [ 0.7, "rgb(146,197,222)" ], [ 0.8, "rgb(67,147,195)" ], [ 0.9, "rgb(33,102,172)" ], [ 1, "rgb(5,48,97)" ] ], "sequential": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "sequentialminus": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ] }, "colorway": [ "#1F77B4", "#FF7F0E", "#2CA02C", "#D62728", "#9467BD", "#8C564B", "#E377C2", "#7F7F7F", "#BCBD22", "#17BECF" ], "font": { "color": "rgb(36,36,36)" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "white", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "white", "polar": { "angularaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "radialaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "scene": { "xaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "zaxis": { "backgroundcolor": "white", "gridcolor": "rgb(232,232,232)", "gridwidth": 2, "linecolor": "rgb(36,36,36)", "showbackground": true, "showgrid": false, "showline": true, "ticks": "outside", "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } }, "shapedefaults": { "fillcolor": "black", "line": { "width": 0 }, "opacity": 0.3 }, "ternary": { "aaxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "baxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" }, "bgcolor": "white", "caxis": { "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" }, "yaxis": { "automargin": true, "gridcolor": "rgb(232,232,232)", "linecolor": "rgb(36,36,36)", "showgrid": false, "showline": true, "ticks": "outside", "title": { "standoff": 15 }, "zeroline": false, "zerolinecolor": "rgb(36,36,36)" } } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# make a molecule\n", "# (btw. if you are unfamiliar with the % and @ syntax, check out the syntax-tutorial)\n", "link = bam.linkage(None, \"C1\")\n", "\n", "mol = benzene.copy()\n", "for C in benzene.get_atoms(1, 3, 5):\n", " link.atom1 = C\n", " mol = mol % link @ 1 + amine\n", "\n", "link.atom1 = link.atom2 = \"C2\"\n", "\n", "mol2 = mol.copy()\n", "for amine_residue in mol.get_residues(\"DMN\"):\n", " mol = mol % link @ amine_residue.serial_number + mol2.copy() @ 2\n", " \n", "mol.optimize()\n", "mol.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At this point we leave the python sphere for a moment to parametrize our molecule. We are free to use any software tool to parametrize our molecule, but I find the webserver of [CHARMM-GUI.org](charmm-gui.org) just too useful because of their _CGenFF_ installation, so let's simply pass our molecule to their web-service to get a CHARMM Parameter, Topology, and Protein Structure File. If you have the necessary software installed on your machine, feel free to use that instead, of course... Or use any other library that you like to parametrize your molecule. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# let's export our molecule as a Molfile to use with CHARMM-GUI's Ligand Reader & Modeler\n", "mol.to_molfile(\"./files/molecule.mol\") # -> now go to https://www.charmm-gui.org/?doc=input/ligandrm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once we have all the output files from CHARMM-GUI, we can use these in OpenMM to perform our simulation.\n", "The remainder of the code has nothing to do with BuildAMol anymore. It's now on to OpenMM coding!" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "import openmm\n", "import openmm.app as app\n", "import openmm.unit as unit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to get our parametrized molecules loaded into OpenMM. In our case we have uses CHARMM-GUI's webserver to parametrize our molecule, so we need to load these files into OpenMM. To do so, we can do something like this:" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "charmm_downloads = Path(\"./files/charmm-gui-download\")" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [], "source": [ "# load the pdb of our molecule (it will be named \"ligandrm.pdb\" by CHARMM-GUI)\n", "pdb = app.PDBFile(str(charmm_downloads / \"ligandrm.pdb\"))\n", "\n", "# load the psf of our molecule (it will be named \"ligandrm.psf\" by CHARMM-GUI)\n", "psf = app.CharmmPsfFile(str(charmm_downloads / \"ligandrm.psf\"))\n", "\n", "# load the CHARMM force field parameters (I named the parametrized files \"mol.prm\" and \"mol.rtf\" in CHARMM-GUI)\n", "# we need to include the CGenFF parameters as well...\n", "params = app.CharmmParameterSet(\n", " str(charmm_downloads / \"toppar\" / \"mol.rtf\"),\n", " str(charmm_downloads / \"toppar\" / \"mol.prm\"),\n", " str(charmm_downloads / \"toppar\" / \"top_all36_cgenff.rtf\"),\n", " str(charmm_downloads / \"toppar\" / \"par_all36_cgenff.prm\"),\n", " )\n", "\n", "# create the OpenMM system from the PSF and parameters\n", "# that we will need to run the simulation\n", "system = psf.createSystem(params, \n", " nonbondedMethod=app.CutoffNonPeriodic, \n", " nonbondedCutoff=1.0*unit.nanometer, \n", " constraints=app.HBonds, \n", " implicitSolvent=app.GBn2\n", " )" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "# now set up some other simulation stuff that is necessary...\n", "integrator = openmm.LangevinIntegrator(300*unit.kelvin, 1/unit.picosecond, 0.002*unit.picoseconds)\n", "simulation = app.Simulation(psf.topology, system, integrator)\n", "simulation.context.setPositions(pdb.positions)\n", "\n", "# and run the simulation\n", "simulation.reporters.append(app.PDBReporter('files/molecule_MD.pdb', 10))\n", "simulation.reporters.append(app.StateDataReporter('files/molecule_MD.log', 10, step=True, potentialEnergy=True, temperature=True))\n", "simulation.step(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And thus we made a simulation for our very own custom molecule, which is saved in `molecule_MD.pdb`. It looks like this, by the way:\n", "\n", "![](files/molecule_MD.gif)\n", "\n", "And with that we have reached the end of this tutorial! As you can see, the workflow is not very comlicated. In fact, the most critical part is *parametrizing* the custom molecule. Actually, this is not trivial at all. I tried at first with a bunch of quickly-installed python libraries for parametrization but I could not get any of them to work, so I chose the easy-way-out by using CHARMM-GUI... However, if you have a working parametrization software on your local machine then so much the better!\n", "\n", "Good luck with your MD-project!" ] } ], "metadata": { "kernelspec": { "display_name": "glyco2", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.0" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }