kolibril13 commited on
Commit
16e9d92
β€’
1 Parent(s): 2d7a391
Files changed (4) hide show
  1. README.md +4 -16
  2. pages/01_app.ipynb +0 -244
  3. pages/01_widget.ipynb +99 -0
  4. requirements.txt +1 -1
README.md CHANGED
@@ -1,8 +1,8 @@
1
  ---
2
  title: MolecularNodes with Solara
3
- emoji: 🌞
4
- colorFrom: orange
5
- colorTo: yellow
6
  sdk: docker
7
  pinned: false
8
  license: mit
@@ -10,16 +10,4 @@ app_port: 8765
10
  duplicated_from: giswqs/solara-geospatial
11
  ---
12
 
13
- ## Introduction
14
-
15
- A collection of [Solara](https://github.com/widgetti/solara) web apps for geospatial applications
16
-
17
- Just a proof-of-concept for now. Not all features are working yet. More features will be added in the future.
18
-
19
- - Web App: <https://giswqs-solara-geospatial.hf.space>
20
- - GitHub: <https://github.com/opengeos/solara-geospatial>
21
- - Hugging Face: <https://huggingface.co/spaces/giswqs/solara-geospatial>
22
-
23
- ## Demos
24
-
25
- ![](https://i.imgur.com/4uIEnAJ.gif)
 
1
  ---
2
  title: MolecularNodes with Solara
3
+ emoji: πŸš€
4
+ colorFrom: yellow
5
+ colorTo: blue
6
  sdk: docker
7
  pinned: false
8
  license: mit
 
10
  duplicated_from: giswqs/solara-geospatial
11
  ---
12
 
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
pages/01_app.ipynb DELETED
@@ -1,244 +0,0 @@
1
- {
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",
171
- "\n",
172
- "light_position = solara.reactive(3)\n",
173
- "do_render = solara.reactive(False)\n",
174
- "\n",
175
- "@solara.component\n",
176
- "def Page():\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",
184
- " solara.Button(\"Start Rendering\", on_click=lambda: do_render.set(True))\n",
185
- " else:\n",
186
- " if result.state == solara.ResultState.RUNNING:\n",
187
- " solara.Info(\"Rendering in progress...\")\n",
188
- " solara.ProgressLinear()\n",
189
- " elif result.state == solara.ResultState.ERROR:\n",
190
- " solara.Error(\"Rendering failed!: %s\" % result.error)\n",
191
- " elif result.state == solara.ResultState.FINISHED:\n",
192
- " with solara.Column():\n",
193
- " solara.Success(\"Rendering complete. \")\n",
194
- " print(result.value)\n",
195
- " # workaround for https://github.com/widgetti/solara/pull/267\n",
196
- " if result.value:\n",
197
- " solara.Image(result.value)\n",
198
- "\n",
199
- "Page()"
200
- ]
201
- },
202
- {
203
- "cell_type": "code",
204
- "execution_count": 3,
205
- "metadata": {},
206
- "outputs": [],
207
- "source": [
208
- "import sys\n",
209
- "import os\n",
210
- "\n",
211
- "sys.stdout = open(os.devnull, 'w')\n",
212
- "sys.stderr = open(os.devnull, 'w')\n"
213
- ]
214
- },
215
- {
216
- "cell_type": "code",
217
- "execution_count": null,
218
- "metadata": {},
219
- "outputs": [],
220
- "source": []
221
- }
222
- ],
223
- "metadata": {
224
- "kernelspec": {
225
- "display_name": ".venv",
226
- "language": "python",
227
- "name": "python3"
228
- },
229
- "language_info": {
230
- "codemirror_mode": {
231
- "name": "ipython",
232
- "version": 3
233
- },
234
- "file_extension": ".py",
235
- "mimetype": "text/x-python",
236
- "name": "python",
237
- "nbconvert_exporter": "python",
238
- "pygments_lexer": "ipython3",
239
- "version": "3.10.13"
240
- }
241
- },
242
- "nbformat": 4,
243
- "nbformat_minor": 2
244
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
pages/01_widget.ipynb ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": null,
6
+ "metadata": {},
7
+ "outputs": [],
8
+ "source": [
9
+ "import bpy\n",
10
+ "from IPython.display import display\n",
11
+ "from anywidget_3dviewer import Viewer\n",
12
+ "import solara\n",
13
+ "from pathlib import Path\n",
14
+ "\n",
15
+ "\n",
16
+ "def make_gltf_model():\n",
17
+ " bpy.ops.preferences.addon_enable(module=\"io_scene_gltf2\")\n",
18
+ " bpy.ops.object.select_all(action=\"DESELECT\")\n",
19
+ " bpy.ops.object.select_by_type(type=\"MESH\")\n",
20
+ "\n",
21
+ " bpy.ops.object.delete()\n",
22
+ " bpy.ops.mesh.primitive_cube_add(size=2, align=\"WORLD\", location=(0, 1, 1))\n",
23
+ " cube = bpy.context.active_object\n",
24
+ " gltf_path = \"./model_cube.gltf\"\n",
25
+ " bpy.ops.object.select_all(action=\"DESELECT\")\n",
26
+ " cube.select_set(True)\n",
27
+ " bpy.ops.export_scene.gltf(\n",
28
+ " filepath=gltf_path, export_format=\"GLTF_EMBEDDED\", use_selection=True\n",
29
+ " )\n",
30
+ " gltf_path = Path() / \"model_cube.gltf\"\n",
31
+ " data = gltf_path.read_bytes()\n",
32
+ " gltf_path.unlink()\n",
33
+ " return data\n",
34
+ "\n",
35
+ "\n",
36
+ "data = make_gltf_model()\n",
37
+ " \n",
38
+ "\n",
39
+ "do_render = solara.reactive(False)\n",
40
+ "\n",
41
+ "data = make_gltf_model()\n",
42
+ "\n",
43
+ "@solara.component\n",
44
+ "def Page():\n",
45
+ "\n",
46
+ " def render():\n",
47
+ " if do_render.value:\n",
48
+ " return data\n",
49
+ " \n",
50
+ " result = solara.use_thread(render, [do_render.value])\n",
51
+ " if not do_render.value:\n",
52
+ " solara.Button(\"Start Rendering\", on_click=lambda: do_render.set(True), color=\"orange\")\n",
53
+ " else:\n",
54
+ " if result.state == solara.ResultState.RUNNING:\n",
55
+ " solara.Info(\"Rendering in progress...\")\n",
56
+ " solara.ProgressLinear()\n",
57
+ " elif result.state == solara.ResultState.ERROR:\n",
58
+ " solara.Error(\"Rendering failed!: %s\" % result.error)\n",
59
+ " elif result.state == solara.ResultState.FINISHED:\n",
60
+ " with solara.Column():\n",
61
+ " solara.Success(\"Rendering complete. \")\n",
62
+ " if result.value:\n",
63
+ " viewer = Viewer(gltf_data=result.value)\n",
64
+ " solara.FileDownload(data, filename=\"model_cube.gltf\", label=\"Download model_cube.gltf\")\n",
65
+ "\n",
66
+ " display(viewer)\n",
67
+ "Page()"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "code",
72
+ "execution_count": null,
73
+ "metadata": {},
74
+ "outputs": [],
75
+ "source": []
76
+ }
77
+ ],
78
+ "metadata": {
79
+ "kernelspec": {
80
+ "display_name": ".venv",
81
+ "language": "python",
82
+ "name": "python3"
83
+ },
84
+ "language_info": {
85
+ "codemirror_mode": {
86
+ "name": "ipython",
87
+ "version": 3
88
+ },
89
+ "file_extension": ".py",
90
+ "mimetype": "text/x-python",
91
+ "name": "python",
92
+ "nbconvert_exporter": "python",
93
+ "pygments_lexer": "ipython3",
94
+ "version": "3.10.13"
95
+ }
96
+ },
97
+ "nbformat": 4,
98
+ "nbformat_minor": 2
99
+ }
requirements.txt CHANGED
@@ -1,3 +1,3 @@
1
  bpy
2
  solara
3
- molecularnodes
 
1
  bpy
2
  solara
3
+ anywidget_3dviewer