Skip to content

Instantly share code, notes, and snippets.

@patricksnape
Created September 26, 2016 13:48
Show Gist options
  • Save patricksnape/656af6166c0e2f74678f18b3e6ad0ac9 to your computer and use it in GitHub Desktop.
Save patricksnape/656af6166c0e2f74678f18b3e6ad0ac9 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"collapsed": true,
"trusted": false
},
"cell_type": "code",
"source": "%matplotlib qt\nimport pickle\nimport os.path as op\nfrom mayavi import mlab\nfrom scipy.io import loadmat\nfrom scipy.spatial import KDTree\nfrom pathlib import Path\nfrom tqdm import tqdm_notebook, tnrange\n\nimport menpo.io as mio\nimport menpo3d.io as m3dio\nimport numpy as np\nfrom menpo.shape import PointCloud, TriMesh\nfrom menpo.model import PCAModel\n\nnp.set_printoptions(suppress=True, precision=3, linewidth=1000)",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "surrey_model = mio.import_pickle('/vol/construct3dmm/experiments/src/static/other_models/surrey/shape_model.pkl', \n encoding='latin1')",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "tddfa_expression = loadmat(op.expanduser('~/Dropbox/phd/3ddfa/Matlab/Model_Expression.mat'))\ntddfa_identity = loadmat(op.expanduser('~/Dropbox/phd/3ddfa/Matlab/ModelGeneration/Model_Shape.mat'))",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "tddfa_identity_mean = np.ascontiguousarray(tddfa_identity['mu_shape'].reshape(-1, 3))\ntddfa_identity_basis = np.ascontiguousarray(tddfa_identity['w'].T)\ntddfa_identity_eigenvalues = np.ascontiguousarray(tddfa_identity['sigma'].ravel()) ** 2\ntddfa_landmark_indices = np.ascontiguousarray(tddfa_identity['keypoints'].ravel()) - 1\ntddfa_trilist = np.ascontiguousarray(tddfa_identity['tri'].T) - 1\n\ntddfa_identity_template = TriMesh(tddfa_identity_mean, trilist=tddfa_trilist, copy=False)\ntddfa_identity_template.landmarks['gt'] = PointCloud(tddfa_identity_mean[tddfa_landmark_indices])\n\n\ntddfa_expression_mean = np.ascontiguousarray(tddfa_expression['mu_exp'].reshape(-1, 3))\ntddfa_expression_basis = np.ascontiguousarray(tddfa_expression['w_exp'].T)\ntddfa_expression_eigenvalues = np.ascontiguousarray(tddfa_expression['sigma_exp'].ravel())\ntddfa_expression_template = TriMesh(tddfa_expression_mean, trilist=tddfa_trilist, copy=False)",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "map_tddfa_to_basel = loadmat(op.expanduser('~/Dropbox/phd/3ddfa/Matlab/ModelGeneration/model_info.mat'))['trimIndex'].ravel() - 1",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "tddfa_identity_model = PCAModel.init_from_components(tddfa_identity_basis, \n tddfa_identity_eigenvalues, \n tddfa_identity_template,\n tddfa_identity_eigenvalues.shape[0] + 1, \n True)\n\ntddfa_expression_model = PCAModel.init_from_components(tddfa_expression_basis, \n tddfa_expression_eigenvalues, \n tddfa_expression_template,\n tddfa_expression_eigenvalues.shape[0] + 1, \n True)",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Load the basel model"
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "basel_model_matlab = loadmat(op.expanduser('~/Dropbox/phd/face_flow/01_MorphableModel.mat'))\nbasel_mean = basel_model_matlab['shapeMU']\nbasel_trilist = basel_model_matlab['tl'] - 1\n\nbasel_template = TriMesh(basel_mean.reshape(-1, 3), trilist=basel_trilist)\n\ndel basel_model_matlab",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Load the MeIn3D Model"
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "with Path('~/Dropbox/phd/mein3d_all_200.pkl').expanduser().open(mode='rb') as f:\n mein3d_model = pickle.load(f, encoding='latin1')['model']",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "james_original_template = m3dio.import_mesh('~/Dropbox/phd/face_flow/original_james_template.obj')\nwith Path('~/Dropbox/phd/face_flow/broken_james_template.pkl').expanduser().open(mode='rb') as f:\n screwed_james_original_template = pickle.load(f, encoding='latin1')\n# masked_template_mask = mio.import_pickle('/Users/pts08/Downloads/template_cropped_mask.pkl')",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Fix the MeIn3D Model"
},
{
"metadata": {
"collapsed": false,
"trusted": false,
"scrolled": true
},
"cell_type": "code",
"source": "print('Basel:', basel_template.n_points)\nprint('MeIn3D:', mein3d_model.mean().n_points)\nprint('JamesTemplate:', screwed_james_original_template.n_points)\nprint('3DDFA:', tddfa_identity_model.mean().n_points)",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "# Find correspondances from MeIn3D to Basel\ntree = KDTree(screwed_james_original_template.points)",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "distances, map_basel_to_mein3d = tree.query(basel_template.points)\nbroken_distance_map = distances > 1\nmap_basel_to_mein3d[broken_distance_map] = -1",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": false
},
"cell_type": "code",
"source": "map_tddfa_to_mein3d = map_basel_to_mein3d[map_tddfa_to_basel]",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "(map_tddfa_to_mein3d == -1).sum()",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "fixed_mein3d_model = mein3d_model.copy()\nfixed_mein3d_model.__dict__['_mean'] = fixed_mein3d_model.__dict__['_mean'].reshape(-1, 3)[map_tddfa_to_mein3d].ravel()\nfixed_mein3d_model.__dict__['_components'] = fixed_mein3d_model.__dict__['_components'].reshape(200, -1, 3)[:, map_tddfa_to_mein3d, :].reshape(200, -1)\nfixed_mein3d_model.__dict__['template_instance'] = TriMesh(fixed_mein3d_model.__dict__['_mean'].reshape(-1, 3),\n trilist=tddfa_trilist)",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "print('Fixed MeIn3D:', fixed_mein3d_model.n_features // 3)",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Save Models"
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "mio.export_pickle(fixed_mein3d_model, '~/Dropbox/phd/mein3d_fw_correspond_all_200.pkl.gz', overwrite=True)\nmio.export_pickle(tddfa_expression_model, '~/Dropbox/phd/3ddfa_fw_29.pkl.gz', overwrite=True)\nmio.export_pickle(tddfa_identity_model, '~/Dropbox/phd/3ddfa_basel_200.pkl.gz', overwrite=True)",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Save correspondance info"
},
{
"metadata": {
"collapsed": true,
"trusted": false
},
"cell_type": "code",
"source": "mio.export_pickle({'map_tddfa_to_basel': map_tddfa_to_basel,\n 'map_basel_to_mein3d': map_basel_to_mein3d,\n 'tddfa_trilist': tddfa_trilist},\n '~/Dropbox/phd/mapping_mein3d_to_tddfa.pkl.gz')",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Visualize Video"
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "f = mlab.figure(figure='test', bgcolor=(1.0, 1.0, 1.0), size=(640, 480))",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "fixed_mein3d_model.mean().view(figure_id=f.name)\nmesh = f.children[0]\npolydata = mesh.children[0]",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": false
},
"cell_type": "code",
"source": "surrey_model.mean().view(figure_id=f.name)\nmesh = f.children[0]\npolydata = mesh.children[0]",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "# ID only\nout_path = Path('~/Downloads/models_rendering/identity').expanduser()\nfname_gen = lambda j, k, i: '{:03d}_{:03d}_{:.2f}'.format(j, k, i).replace('-', 'm').replace('.', '_')\nfname_gen = lambda i: '{:05d}'.format(i)\nn_steps = 6\nid_range = (-3, 3)\n\nid_linspace_neg = np.linspace(0, id_range[0], num=n_steps)\nid_linspace_plus = np.linspace(0, id_range[1], num=n_steps)\nid_linspace = np.concatenate(\n [id_linspace_neg, np.flipud(id_linspace_neg),\n id_linspace_plus, np.flipud(id_linspace_plus)], axis=0)\n\nn_identities = 10\nlinear_index = 0\n\nfor j in tnrange(n_identities, desc='n_identities'):\n identity_w = np.zeros(n_identities)\n for i in tqdm_notebook(id_linspace, desc='weights', leave=False, total=id_linspace.shape[0]):\n identity_w[j % n_identities] = i\n id_instance = surrey_model.instance(identity_w, \n normalized_weights=True)\n polydata.mlab_source.points = id_instance.points\n f.scene.save_jpg(str(out_path / (fname_gen(linear_index) + '.jpg')), \n quality=100, progressive=False)\n linear_index += 1",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": false,
"trusted": false
},
"cell_type": "code",
"source": "# Mixed\nout_path = Path('/Users/pts08/Downloads/models_rendering/expression')\nfname_gen = lambda j, k, i, e: '{:03d}_{:03d}_{:.2f}_{:.2f}'.format(j, k, i, e).replace('-', 'm').replace('.', '_')\nfname_gen = lambda i: '{:05d}'.format(i)\nn_steps = 6\nid_range = (-3, 3)\nexp_range = (-0.3, 0.3)\n\nid_linspace_neg = np.linspace(0, id_range[0], num=n_steps)\nid_linspace_plus = np.linspace(0, id_range[1], num=n_steps)\nid_linspace = np.concatenate(\n [id_linspace_neg, np.flipud(id_linspace_neg),\n id_linspace_plus, np.flipud(id_linspace_plus)], axis=0)\n\nexp_linspace_neg = np.linspace(0, exp_range[0], num=n_steps)\nexp_linspace_plus = np.linspace(0, exp_range[1], num=n_steps)\nexp_linspace = np.concatenate(\n [exp_linspace_neg, np.flipud(exp_linspace_neg),\n exp_linspace_plus, np.flipud(exp_linspace_plus)], axis=0)\n\nn_identities = 29\nn_exp = 29\nlinear_index = 0\nfor j in tnrange(n_exp, desc='n_expressions'):\n identity_w = np.zeros(n_identities)\n exp_w = np.zeros(n_exp)\n for i, e in tqdm_notebook(zip(id_linspace, exp_linspace), desc='weights', leave=False, total=id_linspace.shape[0]):\n identity_w[j % n_identities] = i\n exp_w[j] = e\n id_instance = tddfa_identity_model.instance([0], \n normalized_weights=True)\n exp_instance = tddfa_expression_model.instance(exp_w,\n normalized_weights=True)\n polydata.mlab_source.points = id_instance.points + exp_instance.points\n f.scene.save_jpg(str(out_path / (fname_gen(linear_index) + '.jpg')), \n quality=100, progressive=False)\n linear_index += 1",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"language_info": {
"file_extension": ".py",
"name": "python",
"version": "3.5.1",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"mimetype": "text/x-python"
},
"widgets": {
"state": {
"38d8f05ec6154673b8d0104171e1cf3b": {
"views": []
},
"ad834260118342688bff5fc69766338b": {
"views": []
},
"e5b2a7f8338a4f5b85169777e9233bbc": {
"views": []
},
"adc0063ebb24490d900a7c173e7ebc9c": {
"views": []
},
"7d7814e79eba45349d090dfb7714674e": {
"views": []
},
"0df18951044f41e9a58680b0c18c1a78": {
"views": []
},
"7ac6d058f121498aa8800f254d9c6732": {
"views": [
{
"cell_index": 27
}
]
},
"8cc850d595c44b4eaa59c193bdee20c1": {
"views": []
},
"032d172450a942e5a5e4f5837ed94963": {
"views": []
},
"d4245e01a95b4aeca9d5c342e26dad7f": {
"views": []
},
"ca5781334afc4e2eb1b938ffd3b40863": {
"views": []
},
"1a60cdbab7084d549aad10db6f77bf74": {
"views": []
},
"79036eabf66647a2a367134b07194c04": {
"views": []
},
"9584c0fb8ea84d30b998e0a0494c753c": {
"views": []
},
"4d735a028b4c4d9f88432312cd5aa656": {
"views": []
},
"be4317cc37144c05b7f293d416186742": {
"views": []
},
"d8bf4a1f3dd14fc3a6f67401bef51579": {
"views": []
},
"a1b53d84e16a4dbba10bd8dfa643f2b0": {
"views": []
},
"1a604fac05a844d89b478a7190fbe2c7": {
"views": []
},
"10b26c794a634818b20781a0b65e03c6": {
"views": []
},
"7d2b4330a8f2402ab2aa68e390deac98": {
"views": []
},
"7ccce63364fd4524b0e07d0d89991046": {
"views": []
},
"ada2ee736d394c528fdb74ede0f9847c": {
"views": [
{
"cell_index": 27
}
]
},
"69524c3994ae4feebecfdc6f17584a9f": {
"views": []
},
"fa552310e2e84cbdba550e78c1ee57ba": {
"views": []
},
"0ddbcfb4e9974478a886265256c970f1": {
"views": []
},
"c87dbecc892f407ebf1a2350bcee6833": {
"views": []
},
"aa90f151afe44383b5eda7e780fb3f6d": {
"views": []
},
"7c1c35d9f13b4ddf863c1d990b821029": {
"views": []
},
"7ceedc58a0974a66becacfffde4cd00a": {
"views": [
{
"cell_index": 27
}
]
},
"2393c12d5022471e9fa0a7a0d7a7c7d6": {
"views": []
},
"bfb456b17eaa4098b1994a20cf67aecc": {
"views": []
},
"482cb945dc354991a78d05608ab21eb0": {
"views": []
},
"8c9d5e942bac405e93d50b5052c41839": {
"views": [
{
"cell_index": 27
}
]
},
"22eb742747ec4270ab184d76c1c8bda8": {
"views": []
},
"5731334382784b91ac5c6dac62d86891": {
"views": []
},
"e95bf1c8b02b4737996dc953ebcf930c": {
"views": []
},
"684f0d553b314c3fa26e5b3e1453ada2": {
"views": []
},
"618a2ac970a647eeaebce4b3869788f5": {
"views": []
},
"63c70ef8a165468eb71361033de69cc8": {
"views": []
},
"30b73f2a70c4424b869ce563dce879f0": {
"views": []
},
"8d82693026cc482fab48c4123b2feb5d": {
"views": []
},
"f955e84aa7e74ccb8edcd3ebbbbd0ad1": {
"views": []
},
"2e2c048da6bf4b96a32c4d0acbb18cdd": {
"views": []
},
"661b4f6a3bdc4b1f91c3d8c05f7cee5b": {
"views": []
},
"4b62179cda2143be84db670422e235c8": {
"views": []
},
"2908fc38a9b5415ea00686308aec6c22": {
"views": []
},
"2ff8362fa69d478caaf4d06b72c1c941": {
"views": []
},
"b7862cc818854b5aa9588bb2a74d022b": {
"views": []
},
"0f528894c00e44cd9836aa5be238dc75": {
"views": []
},
"7dcff8b0070041b0bc81c9edbd68fa4c": {
"views": []
},
"ae6e4f40925c400e85830b20de392c2c": {
"views": []
},
"1737fe6f0fd04bf598b30e5efba60147": {
"views": []
},
"aff3e1f2502348ebb6ca6c508bd05eab": {
"views": []
},
"7c90c5f9218c4ef89c062c06198b75ce": {
"views": []
},
"55f836655e424d7da571659c4e420dd3": {
"views": []
},
"bab2730e1f3d4db98d1fe0b44f2d481c": {
"views": []
},
"082fcc59103a49debb02fb22a6d597d1": {
"views": []
},
"437f3de487e84f21bd52b5144aa558dd": {
"views": []
},
"50e89eccb50d4551b59df43c09d7b23a": {
"views": []
},
"c14c119acffd4ec4b634535e75a69a51": {
"views": []
},
"48054860f72c479c8eda3caf0a737387": {
"views": []
},
"91f25eea7c174a96bb7a604733735633": {
"views": [
{
"cell_index": 27
}
]
},
"e454ca964cbd49c38bf714e6b08e9bd6": {
"views": []
},
"a740d6ae28cc4550b9b3a1640b5424c0": {
"views": []
},
"8cec1ca2de994e8dbc8f47f5f72fe411": {
"views": []
},
"c8a8abbf1c7c4e96a0e7bb952bee533f": {
"views": []
},
"0672179969c34c7bb5a5ecf59318ca5b": {
"views": []
},
"bb5ecdcf65e241949cc6f4fbc54050d8": {
"views": []
},
"20a54e4e172e43b4a6fee5fb48166f0a": {
"views": []
},
"c984ab5c311840aa9a745da6951ceec7": {
"views": []
},
"859789e9dac04734a4daa82f7623df71": {
"views": []
},
"5bfe1c0b895e44aa8f9d7c3200c8566a": {
"views": []
},
"a858b2fb240547d3aa5487bb60ca9cff": {
"views": []
},
"eb8928dba4b34a02917f96a3e37efa69": {
"views": []
},
"7ee3df50841d4ed48178b3c800e54144": {
"views": [
{
"cell_index": 27
}
]
},
"34d66d780fd6470db4fcf4bdaa3d5fcd": {
"views": []
},
"418710500b6e465aac7e3a9a7364a2b9": {
"views": []
},
"4e159c60c66e45d9a2940df2edd0af47": {
"views": []
},
"5c5e324e816049dc823c86fb7495ff67": {
"views": []
},
"c5d0f9214bb34a78963e833aa7e6679a": {
"views": []
},
"987f3872b726420fa5b120ccf5a9f181": {
"views": []
},
"40c1b309117446a09524fdb2157bb6e8": {
"views": []
},
"b957dd7acafb437ea96b901dbba0f389": {
"views": []
},
"24a5afbbf49b4ea78b02b471231a2911": {
"views": []
},
"3e87a6b9999e4e21b782103ae1c29e39": {
"views": []
},
"14d524f8ef8e4f6e9c0e9c514a638b29": {
"views": []
},
"cf5d222ebc114deb82cd3a9bb80a673a": {
"views": []
},
"5702857d06684b91834dbcaaa2cba585": {
"views": []
},
"a23871a076dc4affbf2b713c2bcecdc4": {
"views": []
},
"f058f8224bf240b6951895c5ba66d15b": {
"views": []
},
"3bfd6bfb6e9347ac80623ac20b6534e9": {
"views": []
},
"a833e6bcb0ba4d42ba1b3d2893e64851": {
"views": []
},
"6bcf1cc333494fe2ba6d9e99d697d3aa": {
"views": []
},
"63955c19aedc4a00af6ca71ae3ddbf31": {
"views": []
},
"7903bf3128444decbc62610c26d859c7": {
"views": []
},
"ea625f99d00a44a5b8279a077f573c5a": {
"views": []
},
"bba0f88db0a84d00bb95ce4be8ef70c1": {
"views": [
{
"cell_index": 27
}
]
},
"f58960f6a80646ec9d7cdb4fbd4275ff": {
"views": []
},
"1f688f0287534f4fbe9cbba64ce32c1c": {
"views": []
},
"2b6e67fda7cf421b88430877003180ad": {
"views": []
},
"6a1034f7443347cfa7320f88203f45b4": {
"views": []
},
"6b08b4a252a049cab2072dd086bc0a1e": {
"views": []
},
"367ade6d74b04dca8749904434f048f1": {
"views": []
},
"0ad416375e144649a20fa9416d6ae5ff": {
"views": []
},
"f2584ff464944f7f9d5f269447b9a107": {
"views": []
},
"fe3b74b4073d488094fa01012f655183": {
"views": []
},
"e534223268ce42928be96dbfb4db39ea": {
"views": []
},
"0d84bc59facc46039b37066c60e6ba82": {
"views": []
},
"b49f0ac6326c4b68bd90aceff86e1773": {
"views": []
},
"9bc0527da569469bb92fb811b4a114bf": {
"views": []
},
"389be3ac195847c487769ccf8db5efa8": {
"views": []
},
"577dc53dd0b94415861a329f888f3e8d": {
"views": []
},
"2e0f87e9dfa0491f9437d22207ff9ea9": {
"views": []
},
"52bf7d1c16b14254b5e228176282b337": {
"views": []
},
"f3a9d33cca294a15a45c896faa9afc2d": {
"views": []
},
"359d636006fb4545a3a3a837b9af5e31": {
"views": []
},
"c15d79976c59473ea64b7ec56af3c4d7": {
"views": []
},
"fe704b846b504b50b4dd72fb84697e8f": {
"views": []
},
"3578fd3a968246b0b36ff1a3a2f20404": {
"views": []
},
"311e4c31fc584a96888f536c89f8ab52": {
"views": []
},
"c34cac6281ff481783f74787d3c28f5b": {
"views": [
{
"cell_index": 27
}
]
},
"54d6d607a9c849509c8d215887714114": {
"views": []
},
"f7f8c1678d6b47f08b2af4cf576baf2a": {
"views": []
},
"f982545b52544966ba98da8746983b36": {
"views": []
},
"7bc6e9a99dd54119acc70bbcdd260721": {
"views": []
},
"523877ce877140fc9eadb9920d3acc27": {
"views": []
},
"ac04ce827cb04dcbad7e5610b4839efe": {
"views": []
},
"e211b1ef5cfc4845ac4043c667ec788f": {
"views": []
},
"1bd62080a70e42c997c5772ecd3d3dd8": {
"views": []
},
"a11db9a59ae840bba880cde6003863c2": {
"views": []
},
"5434a66de02441e19a782460ef863bbe": {
"views": []
},
"f3e0f1694ea94cad867d2f1ddd08b829": {
"views": []
},
"a096f2c789664c2d9a86c4987e1723f9": {
"views": []
},
"8a4236b3dee74b228d07d8ecada5fb24": {
"views": []
},
"2a4e4b68d833462f9caabb71257c8dd1": {
"views": []
},
"e7286cbfd46a43ce96b9d918fc6d5332": {
"views": []
},
"5e4769550d1e4f31a352cfb22c1b2da9": {
"views": [
{
"cell_index": 27
}
]
},
"09eb28174c55431b887d4059ed6bb1b0": {
"views": []
},
"b09906002729454bb4c4842f6b436604": {
"views": []
},
"906f7d17103b4d61ba3dbdce43c31ff9": {
"views": []
},
"469fd6e588c74496b5b5f6861f5de59f": {
"views": []
},
"f682b8b6735f4cc998582a7e9500d3f3": {
"views": []
},
"5278602b0719417f98d1cf0264352965": {
"views": []
},
"aeb31cccadd34d4aac42b11f84f8be02": {
"views": []
},
"a71e057befb94ad1aef2635a8206f0c6": {
"views": []
},
"869b068ab0c44175a2de2c6036fc1a7e": {
"views": []
},
"9e2ac96adbd74d448b0b03defa5f0004": {
"views": []
},
"59259e0d981d4140b3b3d173c88485dc": {
"views": [
{
"cell_index": 27
}
]
},
"946f33352f164f1d87a6386852141fa2": {
"views": []
},
"a3de48d5750a4018bebfa2024efdae8b": {
"views": []
},
"d543950fcadd44789a2ba2b0d61c1f5c": {
"views": []
},
"911321590e5d4c5ab9ee1b435638d478": {
"views": []
},
"d4fd37894c25466d9680f27f8c242a11": {
"views": []
},
"b9490fb3765445279fa5ba95bac550e3": {
"views": []
},
"7e86ba3010e442e59312c7be7edead01": {
"views": []
},
"8f141eb26313432e9731d956a02cb8f4": {
"views": []
},
"fca313ecd3f2484ca8ab412b3a1b48a4": {
"views": []
},
"a434f08ed32e44859e450fec8793fb91": {
"views": []
},
"763b3067b9be4a72a1237dfb7ab7d3b7": {
"views": []
},
"82ad88e306ab40588eba7a612370bfb4": {
"views": [
{
"cell_index": 27
}
]
},
"feef85a8006640f9aeef36907a05c3de": {
"views": []
}
},
"version": "1.1.2"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment