kolibril13 commited on
Commit
a9d32c6
1 Parent(s): cf8f9ea

add molecule

Browse files
Files changed (1) hide show
  1. pages/01_app.ipynb +143 -24
pages/01_app.ipynb CHANGED
@@ -2,50 +2,169 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": null,
6
  "metadata": {},
7
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  "source": [
9
  "import bpy\n",
10
  "import tempfile\n",
 
 
 
 
 
 
 
11
  "\n",
12
- "def enable_GPUS():\n",
13
- " bpy.data.scenes[0].render.engine = \"CYCLES\" #\"CYCLES\"\n",
14
- " # Set the device_type\n",
15
- " bpy.context.preferences.addons[\"cycles\"].preferences.compute_device_type = \"METAL\" \n",
16
  "\n",
17
- " # Set the device and feature set\n",
18
- " bpy.context.scene.cycles.device = \"CUDA\" #GPU\n",
19
  "\n",
20
- " for scene in bpy.data.scenes:\n",
21
- " scene.cycles.device = \"GPU\"\n",
22
  "\n",
23
- " bpy.context.preferences.addons[\"cycles\"].preferences.get_devices()\n",
24
- " print(bpy.context.preferences.addons[\"cycles\"].preferences.compute_device_type)\n",
25
- " for d in bpy.context.preferences.addons[\"cycles\"].preferences.devices:\n",
26
- " d[\"use\"] = True # Using all devices, include GPU and CPU\n",
27
- " print(d[\"name\"])\n",
 
 
28
  "\n",
29
- "def render_image():\n",
30
  " with tempfile.NamedTemporaryFile(suffix=\".JPEG\", delete=False) as f:\n",
31
- " bpy.context.scene.render.resolution_y = 200\n",
32
- " bpy.context.scene.render.resolution_x = 400\n",
33
  " bpy.context.scene.render.image_settings.file_format = \"JPEG\"\n",
34
  " bpy.context.scene.render.filepath = f.name\n",
35
- " # enable_GPUS()\n",
 
36
  " bpy.ops.render.render(animation=False, write_still=True)\n",
 
37
  " bpy.data.images[\"Render Result\"].save_render(\n",
38
  " filepath=bpy.context.scene.render.filepath\n",
39
  " )\n",
40
  " bpy.app.handlers.render_stats.clear()\n",
41
- " return f.name\n"
 
 
 
 
42
  ]
43
  },
44
  {
45
  "cell_type": "code",
46
- "execution_count": null,
47
  "metadata": {},
48
- "outputs": [],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  "source": [
50
  "import solara\n",
51
  "from IPython.display import Image, display\n",
@@ -58,7 +177,7 @@
58
  "\n",
59
  " def render():\n",
60
  " if do_render.value:\n",
61
- " return render_image()\n",
62
  " \n",
63
  " result = solara.use_thread(render, [do_render.value])\n",
64
  " if not do_render.value:\n",
@@ -82,7 +201,7 @@
82
  },
83
  {
84
  "cell_type": "code",
85
- "execution_count": null,
86
  "metadata": {},
87
  "outputs": [],
88
  "source": [
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 1,
6
  "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "Device with name Apple M1 supports metal minimum requirements\n",
13
+ "Finsihed opening molecule after 0.22209199999999996 seconds\n",
14
+ "Adding object to scene.\n",
15
+ "Added res_id after 0.0002569999999999517 s\n",
16
+ "Added res_name after 0.002530999999999839 s\n",
17
+ "Added atomic_number after 0.003058000000000227 s\n",
18
+ "Added b_factor after 4.500000000007276e-05 s\n",
19
+ "Added vdw_radii after 0.0031120000000002257 s\n",
20
+ "Added chain_id after 0.000496000000000052 s\n",
21
+ "Added entity_id after 0.0002420000000000755 s\n",
22
+ "Added atom_name after 0.0019409999999999705 s\n",
23
+ "Added lipophobicity after 0.003919000000000228 s\n",
24
+ "Added charge after 0.0038169999999997373 s\n",
25
+ "Added is_backbone after 0.000376000000000154 s\n",
26
+ "Added is_alpha_carbon after 0.00012599999999984846 s\n",
27
+ "Added is_solvent after 0.00012699999999998823 s\n",
28
+ "Added is_nucleic after 0.0005660000000000664 s\n",
29
+ "Added is_peptide after 0.0008569999999998856 s\n",
30
+ "Added is_hetero after 0.00010400000000032605 s\n",
31
+ "Added is_carb after 0.0006049999999997446 s\n",
32
+ "Added sec_struct after 0.0018339999999996692 s\n",
33
+ "Finsihed add object after 0.030968000000000107 seconds\n",
34
+ "METAL API - DETECTED GPU: Apple M1\n",
35
+ "Fra:1 Mem:58.21M (Peak 62.13M) | Time:00:00.09 | Syncing Light\n",
36
+ "Fra:1 Mem:58.21M (Peak 62.13M) | Time:00:00.09 | Syncing Camera\n",
37
+ "Fra:1 Mem:58.21M (Peak 62.13M) | Time:00:00.09 | Syncing 7TYG\n",
38
+ "Fra:1 Mem:69.90M (Peak 73.03M) | Time:00:00.12 | Rendering 1 / 64 samples\n",
39
+ "Fra:1 Mem:60.64M (Peak 73.03M) | Time:00:00.21 | Rendering 26 / 64 samples\n",
40
+ "Fra:1 Mem:60.64M (Peak 73.03M) | Time:00:00.27 | Rendering 51 / 64 samples\n",
41
+ "Fra:1 Mem:60.64M (Peak 73.03M) | Time:00:00.30 | Rendering 64 / 64 samples\n",
42
+ "Saved: '/var/folders/c3/3bzrl3qx043bknt1ycn3fcym0000gn/T/tmp6cvuhryo.JPEG'\n",
43
+ " Time: 00:00.40 (Saving: 00:00.09)\n",
44
+ "\n"
45
+ ]
46
+ },
47
+ {
48
+ "data": {
49
+ "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/4QAMTmVvR2VvAAAAWv/+ABpCbGVuZGVyOkZpbGU6PHVudGl0bGVkPgD//gAjQmxlbmRlcjpEYXRlOjIwMjMvMTAvMTggMTc6MTM6MjEA//4AG0JsZW5kZXI6VGltZTowMDowMDowMDowMQD//gAUQmxlbmRlcjpGcmFtZTowMDEA//4AGEJsZW5kZXI6Q2FtZXJhOkNhbWVyYQD//gAWQmxlbmRlcjpTY2VuZTpTY2VuZQD//gAeQmxlbmRlcjpSZW5kZXJUaW1lOjAwOjAwLjMwAP/bAEMAAwICAwICAwMDAwQDAwQFCAUFBAQFCgcHBggMCgwMCwoLCw0OEhANDhEOCwsQFhARExQVFRUMDxcYFhQYEhQVFP/bAEMBAwQEBQQFCQUFCRQNCw0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/AABEIASACAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APmaiiloASiijtQAUtJRQAUd6KKACiiigAooooAKKKKACiiloASiiigAoxS0lABRRS0AJRRRQAUtJRQAUtJRQAUUdqKAFpKKKACiiigAooooAWkoooAKKKKACiiigAoNGKKACiiigAo60tJQAUUtJQAUUUUAFFFFABRilpKAClpKKACiiloASlpKKACiiigAooooAOtFFLQAlFFFABRRS0AJRRRQAUUUUAFFFLQAlFFLQAlLSYoNABRRRQAUUdKKACilpKACiiigBaSig0AFFFFABRRRQAUUUUABooooAKKKKACgUUtACUUUUAFHSiigAooooAWkoooAKKKKACiiigAooo60AFFH1paAEooooAKKKKADFFFFABRilpOKACiiigAooooAKKKKACiiigApaSigAooooAM0UUUALSUUUAFFFFAC0mKKKACiiloASiiigA/WilpKACiiloASlpKKADvRRRQAdaKKKACiiigApaSigAooooAO9FFFABRRRQAUUUUAFFFFABmiiigApaSigAooo70AFFFFABRRS0AJ3opaSgAoopaAE+lFFFABmlpKKACiiigAooooAKKKKACiiigAoopaAEooooAKKKWgBKKKO9ABRRRQAUUUtACUUUtACUUUUAFGaKKACiloAycDrQAlBq7qOjX2k+V9stZbbzVDp5i43CoLKFbm9t4XcRJLIqFyPu5PWq5XfltqBDijrXo3xN8E6D4XtLP+z7wrfbQHtZGLtID/AB+304HpXG6PpcdzrENreFoEEqiYcAhcgHnPXnFbSoTjP2fUdjMpK9B+J+i+GdN8lNEl8u8gG24tlDuMdmLHjPtnvXNeF/CVx4p1mDT4547Yyp5vmsNwVfXHr7U5UJqfItQsYdTQ2stxHNJGhZYV3yHsoyB/Miuv+IPgF/C+owQW+bjfEGOxMb8cEgZP4jtx61j2MdzYWE9vJaFZp2VljukKiQDPTpkgnOKPYyjNxkBhUVq6TBHrN/f6RJYT2OrrEbi2LZCShAWdNp6ZXkH2xWVWc6cqdr9RAaKKKyAMUUUUAHWiigUAFFFFAC0lLSUAFHSjNFAC0lHeigAopaSgAxRRRQAUUUUAHWjFFFABRRRQAtJRRQAUUUUAFFLSUAFFFFABRRRQAUUUUAFFFFABRiiigApaSloASiiigAooooAKKKKACig0UAGKK0ND0S41/UEtLYLvbksxwFHqad4g0K48O6g1pcPG7gbg0TZBH9PpV8kuXntoBdbwNq66CurfZwbUgsRuG9V/vEelZGnX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",
50
+ "text/plain": [
51
+ "<IPython.core.display.Image object>"
52
+ ]
53
+ },
54
+ "execution_count": 1,
55
+ "metadata": {},
56
+ "output_type": "execute_result"
57
+ }
58
+ ],
59
  "source": [
60
  "import bpy\n",
61
  "import tempfile\n",
62
+ "import molecularnodes as mn\n",
63
+ "\n",
64
+ "import bpy\n",
65
+ "import tempfile\n",
66
+ "from math import pi\n",
67
+ "\n",
68
+ "def generate():\n",
69
  "\n",
70
+ " for obj in bpy.context.scene.objects:\n",
71
+ " if obj.type == 'MESH':\n",
72
+ " bpy.data.objects.remove(obj, do_unlink=True)\n",
 
73
  "\n",
 
 
74
  "\n",
75
+ " molecule = mn.load.molecule_rcsb(\"7TYG\", starting_style=\"cartoon\", center_molecule=True)\n",
76
+ " molecule.select_set(True)\n",
77
  "\n",
78
+ " bpy.ops.view3d.camera_to_view_selected()\n",
79
+ " camera = bpy.data.objects[\"Camera\"]\n",
80
+ " camera.data.dof.use_dof = True\n",
81
+ " camera.data.dof.focus_distance = 5\n",
82
+ " camera.data.dof.aperture_fstop = 4\n",
83
+ " camera.data.angle = pi / 3\n",
84
+ " camera.data.type = \"PERSP\"\n",
85
  "\n",
 
86
  " with tempfile.NamedTemporaryFile(suffix=\".JPEG\", delete=False) as f:\n",
87
+ " bpy.context.scene.render.resolution_y = 288\n",
88
+ " bpy.context.scene.render.resolution_x = 512\n",
89
  " bpy.context.scene.render.image_settings.file_format = \"JPEG\"\n",
90
  " bpy.context.scene.render.filepath = f.name\n",
91
+ " bpy.context.scene.frame_set(1)\n",
92
+ " bpy.context.scene.frame_current = 1\n",
93
  " bpy.ops.render.render(animation=False, write_still=True)\n",
94
+ "\n",
95
  " bpy.data.images[\"Render Result\"].save_render(\n",
96
  " filepath=bpy.context.scene.render.filepath\n",
97
  " )\n",
98
  " bpy.app.handlers.render_stats.clear()\n",
99
+ " return f.name\n",
100
+ "\n",
101
+ "\n",
102
+ "from IPython.display import Image\n",
103
+ "Image(generate())"
104
  ]
105
  },
106
  {
107
  "cell_type": "code",
108
+ "execution_count": 2,
109
  "metadata": {},
110
+ "outputs": [
111
+ {
112
+ "data": {
113
+ "application/vnd.jupyter.widget-view+json": {
114
+ "model_id": "e5740872b66541d18a024ae31b57becf",
115
+ "version_major": 2,
116
+ "version_minor": 0
117
+ },
118
+ "text/html": [
119
+ "Cannot show widget. You probably want to rerun the code cell above (<i>Click in the code cell, and press Shift+Enter <kbd>⇧</kbd>+<kbd>↩</kbd></i>)."
120
+ ],
121
+ "text/plain": [
122
+ "Cannot show ipywidgets in text"
123
+ ]
124
+ },
125
+ "metadata": {},
126
+ "output_type": "display_data"
127
+ },
128
+ {
129
+ "name": "stdout",
130
+ "output_type": "stream",
131
+ "text": [
132
+ "None\n",
133
+ "Finsihed opening molecule after 0.1597609999999996 seconds\n",
134
+ "Adding object to scene.\n",
135
+ "Added res_id after 0.0002570000000003958 s\n",
136
+ "Added res_name after 0.01812600000000053 s\n",
137
+ "Added atomic_number after 0.006369999999999543 s\n",
138
+ "Added b_factor after 5.100000000002325e-05 s\n",
139
+ "Added vdw_radii after 0.0065309999999998425 s\n",
140
+ "Added chain_id after 0.000516000000000183 s\n",
141
+ "Added entity_id after 0.00023499999999998522 s\n",
142
+ "Added atom_name after 0.005037999999999876 s\n",
143
+ "Added lipophobicity after 0.007436999999999472 s\n",
144
+ "Added charge after 0.007236999999999938 s\n",
145
+ "Added is_backbone after 0.00047999999999959186 s\n",
146
+ "Added is_alpha_carbon after 0.0001610000000002998 s\n",
147
+ "Added is_solvent after 0.0001619999999995514 s\n",
148
+ "Added is_nucleic after 0.0006459999999997024 s\n",
149
+ "Added is_peptide after 0.0010190000000003252 s\n",
150
+ "Added is_hetero after 0.0001120000000005561 s\n",
151
+ "Added is_carb after 0.000656000000000212 s\n",
152
+ "Added sec_struct after 0.0031799999999995165 s\n",
153
+ "Finsihed add object after 0.06568800000000063 seconds\n",
154
+ "Fra:1 Mem:58.97M (Peak 64.78M) | Time:00:00.01 | Syncing Light\n",
155
+ "Fra:1 Mem:58.97M (Peak 64.78M) | Time:00:00.01 | Syncing Camera\n",
156
+ "Fra:1 Mem:58.97M (Peak 64.78M) | Time:00:00.01 | Syncing 7TYG\n",
157
+ "Fra:1 Mem:70.60M (Peak 73.73M) | Time:00:00.01 | Rendering 1 / 64 samples\n",
158
+ "Fra:1 Mem:61.22M (Peak 73.73M) | Time:00:00.09 | Rendering 26 / 64 samples\n",
159
+ "Fra:1 Mem:61.28M (Peak 73.73M) | Time:00:00.16 | Rendering 51 / 64 samples\n",
160
+ "Fra:1 Mem:61.22M (Peak 73.73M) | Time:00:00.19 | Rendering 64 / 64 samples\n",
161
+ "Saved: '/var/folders/c3/3bzrl3qx043bknt1ycn3fcym0000gn/T/tmp6sh3rfo0.JPEG'\n",
162
+ " Time: 00:00.20 (Saving: 00:00.00)\n",
163
+ "\n",
164
+ "/var/folders/c3/3bzrl3qx043bknt1ycn3fcym0000gn/T/tmp6sh3rfo0.JPEG\n"
165
+ ]
166
+ }
167
+ ],
168
  "source": [
169
  "import solara\n",
170
  "from IPython.display import Image, display\n",
 
177
  "\n",
178
  " def render():\n",
179
  " if do_render.value:\n",
180
+ " return generate()\n",
181
  " \n",
182
  " result = solara.use_thread(render, [do_render.value])\n",
183
  " if not do_render.value:\n",
 
201
  },
202
  {
203
  "cell_type": "code",
204
+ "execution_count": 3,
205
  "metadata": {},
206
  "outputs": [],
207
  "source": [