├── Dockerfile
├── LICENSE
├── README.md
├── requirements.txt
├── results.csv
└── src
└── this_material_does_not_exist
├── __init__.py
└── app.py
/Dockerfile:
--------------------------------------------------------------------------------
1 | from python:3.11-slim-buster
2 |
3 | copy . /app
4 | workdir /app
5 | run pip install -r requirements.txt
6 | cmd gunicorn src.this_material_does_not_exist.app:server -b 0.0.0.0:8050
7 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Matthew Evans
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | Get given random crystal structures predicted by ML materials discovery projects, and vote on whether you think it should be synthesizable (or, at least, whether it is worth trying!)
4 |
5 | Currently uses [crystaltoolkit](https://docs.crystaltoolkit.org) and data from the
6 | [OPTIMADE API](https://optimade.org) for the recent [Google DeepMind
7 | paper](https://github.com/google-deepmind/materials_discovery).
8 |
9 | 
10 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | httpx
2 | crystal-toolkit
3 | optimade[pymatgen]
4 | gunicorn
5 |
--------------------------------------------------------------------------------
/results.csv:
--------------------------------------------------------------------------------
1 | 813805a1-179a-442b-b9da-1555b816138f,a8ba8cc16a,1
2 | 813805a1-179a-442b-b9da-1555b816138f,4c4300b256,2
3 | 813805a1-179a-442b-b9da-1555b816138f,4c4300b256,3
4 | 813805a1-179a-442b-b9da-1555b816138f,4c4300b256,4
5 | 813805a1-179a-442b-b9da-1555b816138f,4c4300b256,5
6 | 813805a1-179a-442b-b9da-1555b816138f,48c04ddda9,1
7 | 052430ea-71a4-45e0-a41c-6ff306996832,08f12dbe96,1
8 | 052430ea-71a4-45e0-a41c-6ff306996832,373e1dabfe,2
9 | 052430ea-71a4-45e0-a41c-6ff306996832,0ed077f153,2
10 | 052430ea-71a4-45e0-a41c-6ff306996832,c3c11010ac,3
11 | 052430ea-71a4-45e0-a41c-6ff306996832,ae4cf9267c,1
12 | 052430ea-71a4-45e0-a41c-6ff306996832,8bf08247fa,1
13 | 052430ea-71a4-45e0-a41c-6ff306996832,ae25695182,2
14 | 052430ea-71a4-45e0-a41c-6ff306996832,feee8c9d63,3
15 | 052430ea-71a4-45e0-a41c-6ff306996832,42769a42a5,1
16 | 052430ea-71a4-45e0-a41c-6ff306996832,9fb7d29912,1
17 | 052430ea-71a4-45e0-a41c-6ff306996832,9cd7028825,1
18 | 052430ea-71a4-45e0-a41c-6ff306996832,f93489bf43,1
19 | 052430ea-71a4-45e0-a41c-6ff306996832,ace503fa98,1
20 | 052430ea-71a4-45e0-a41c-6ff306996832,85eed2ff79,2
21 | 052430ea-71a4-45e0-a41c-6ff306996832,ef3ec0fe29,1
22 | 052430ea-71a4-45e0-a41c-6ff306996832,46111b4fd6,1
23 | 052430ea-71a4-45e0-a41c-6ff306996832,1355778f40,2
24 | 052430ea-71a4-45e0-a41c-6ff306996832,fd48845ad0,3
25 | 2023-12-10T01:35:29.183831,335e4fb7-ebfb-40be-a67b-c9b5986861f3,08f12dbe96,1
26 | 2023-12-10T01:36:05.953010,335e4fb7-ebfb-40be-a67b-c9b5986861f3,373e1dabfe,2
27 | 2023-12-10T01:36:15.569456,335e4fb7-ebfb-40be-a67b-c9b5986861f3,29996413f6,3
28 | 2023-12-10T01:37:03.436101,335e4fb7-ebfb-40be-a67b-c9b5986861f3,b7866d38a4,1
29 | 2023-12-10T01:40:07.901205,335e4fb7-ebfb-40be-a67b-c9b5986861f3,ae4cf9267c,2
30 | 2023-12-10T01:53:25.229727,172.31.48.11,08f12dbe96,1
31 | 2023-12-10T01:53:37.527790,172.31.48.11,373e1dabfe,2
32 | 2023-12-10T04:39:08.401134,172.31.48.11,2032820f51,1
33 | 2023-12-10T07:52:41.831894,172.31.48.11,2871f6d074,1
34 | 2023-12-10T07:52:49.369994,172.31.48.11,8bf08247fa,2
35 | 2023-12-10T07:52:58.968660,172.31.48.11,61f0bde892,3
36 | 2023-12-10T08:40:09.841372,172.31.48.11,fe77f9ad05,1
37 | 2023-12-10T08:40:40.469997,172.31.48.11,474990c5d5,2
38 | 2023-12-10T08:41:56.930155,172.31.48.11,cd58cf65f4,1
39 | 2023-12-10T08:42:11.230770,172.31.48.11,02fb284d16,2
40 | 2023-12-10T08:42:13.081288,172.31.48.11,184bdb616c,3
41 | 2023-12-10T08:42:27.729663,172.31.48.11,42769a42a5,4
42 | 2023-12-10T08:44:22.294723,172.31.48.11,0a627e5e0c,5
43 | 2023-12-10T08:44:29.163058,172.31.48.11,9fb7d29912,6
44 | 2023-12-10T08:44:32.369661,172.31.48.11,9cd7028825,7
45 | 2023-12-10T08:44:40.858716,172.31.48.11,74175f9642,1
46 | 2023-12-10T08:44:42.146964,172.31.48.11,b1e7320905,8
47 | 2023-12-10T08:44:47.722387,172.31.48.11,e34e18dd40,9
48 | 2023-12-10T08:44:52.606806,172.31.48.11,d90550ac56,10
49 | 2023-12-10T08:45:01.197856,172.31.48.11,5088f350e8,11
50 | 2023-12-10T08:45:26.772820,172.31.48.11,22e3d0722b,12
51 | 2023-12-10T09:04:49.820630,172.31.48.11,b5aa020a86,1
52 | 2023-12-10T09:28:48.400872,172.31.48.11,38b594b9f0,1
53 | 2023-12-10T09:28:57.459704,172.31.48.11,6b98dbca69,2
54 | 2023-12-10T09:29:09.253819,172.31.48.11,5d89fc9011,3
55 | 2023-12-10T10:12:28.754033,172.31.48.11,85eed2ff79,1
56 | 2023-12-10T10:12:43.296791,172.31.48.11,3068b9a4b4,2
57 | 2023-12-10T10:13:16.239041,172.31.48.11,ef3ec0fe29,3
58 | 2023-12-10T10:47:21.519517,172.31.48.11,4810103dc8,1
59 | 2023-12-10T11:42:18.309595,172.31.48.11,2d984e0731,1
60 | 2023-12-10T11:42:23.584336,172.31.48.11,396a22636d,2
61 | 2023-12-10T11:42:30.598941,172.31.48.11,aa68bc5ea6,3
62 | 2023-12-10T11:42:32.480918,172.31.48.11,1e42be3bf6,4
63 | 2023-12-10T11:42:33.469528,172.31.48.11,b9c0483275,5
64 | 2023-12-10T11:42:34.091270,172.31.48.11,9342aaea05,6
65 | 2023-12-10T11:42:35.224948,172.31.48.11,da3368a66d,7
66 | 2023-12-10T11:42:36.071050,172.31.48.11,f814051baf,8
67 | 2023-12-10T11:42:36.670731,172.31.48.11,2a3bd925a4,9
68 | 2023-12-10T11:42:37.832525,172.31.48.11,b443ba681d,10
69 | 2023-12-10T11:42:38.947643,172.31.48.11,b178b4b60b,11
70 | 2023-12-10T11:42:39.713972,172.31.48.11,5d89fc9011,12
71 | 2023-12-10T11:42:40.713326,172.31.48.11,f8410244a9,13
72 | 2023-12-10T11:42:41.882827,172.31.48.11,c3c11010ac,14
73 | 2023-12-10T11:42:42.867798,172.31.48.11,d9305374dd,15
74 | 2023-12-10T11:42:44.038933,172.31.48.11,18617e1fb5,16
75 | 2023-12-10T11:42:45.052252,172.31.48.11,bd4841bdf2,17
76 | 2023-12-10T11:42:45.931141,172.31.48.11,ddc2576fb5,18
77 | 2023-12-10T11:42:46.963853,172.31.48.11,77fca3844d,19
78 | 2023-12-10T11:42:47.927634,172.31.48.11,56b1701b36,20
79 | 2023-12-10T11:42:48.728264,172.31.48.11,c6e96e8418,21
80 | 2023-12-10T11:42:49.786490,172.31.48.11,16d7a580f0,22
81 | 2023-12-10T12:30:59.366286,172.31.48.11,1f46285073,1
82 | 2023-12-10T12:33:31.625799,172.31.48.11,5a907bd5fc,2
83 | 2023-12-10T14:46:09.137306,172.31.48.11,5a7f6fa180,1
84 | 2023-12-10T14:46:33.444553,172.31.48.11,0ddc2ad967,2
85 | 2023-12-10T15:30:45.443668,172.31.48.11,e1a304f4f9,1
86 | 2023-12-10T15:52:51.706618,172.31.48.11,52c7b79e28,1
87 | 2023-12-10T15:53:00.560805,172.31.48.11,5585fa5df2,2
88 | 2023-12-10T15:53:04.628762,172.31.48.11,06aa9aba77,3
89 | 2023-12-10T16:54:12.697351,172.31.48.11,67f06bea1b,3
90 | 2023-12-10T18:43:48.233081,172.31.48.11,d481302ccb,1
91 | 2023-12-10T18:44:18.340928,172.31.48.11,81aca8f34b,2
92 | 2023-12-10T18:44:30.769207,172.31.48.11,b84a10bc99,3
93 | 2023-12-10T19:28:43.219652,172.31.48.11,5a233705a7,1
94 | 2023-12-10T19:41:38.989798,172.31.48.11,f94ce15e95,1
95 | 2023-12-10T19:42:54.225213,172.31.48.11,a397e8a674,2
96 | 2023-12-10T21:14:49.053379,172.31.48.11,0833d2b586,2
97 | 2023-12-10T21:14:50.380240,172.31.48.11,609b04ad0a,3
98 | 2023-12-10T21:14:50.626487,172.31.48.11,609b04ad0a,4
99 | 2023-12-10T21:14:50.909309,172.31.48.11,609b04ad0a,5
100 | 2023-12-10T21:14:57.828872,172.31.48.11,77fe38ef14,6
101 | 2023-12-10T21:15:05.176034,172.31.48.11,7637c6768e,7
102 | 2023-12-10T21:45:02.395845,172.31.48.11,ca0509de66,1
103 | 2023-12-10T21:45:20.499606,172.31.48.11,089845da40,2
104 | 2023-12-10T21:45:31.744310,172.31.48.11,e32a217602,3
105 | 2023-12-10T21:45:38.619462,172.31.48.11,f1114bb798,4
106 | 2023-12-10T21:46:10.468585,172.31.48.11,e5d42e2749,5
107 | 2023-12-10T21:46:22.314337,172.31.48.11,d583bca697,6
108 | 2023-12-10T21:46:34.861474,172.31.48.11,5915704b68,7
109 | 2023-12-10T21:46:37.861299,172.31.48.11,4d84e5d5b1,8
110 | 2023-12-10T21:49:27.160548,172.31.48.11,fbca34bf6a,9
111 | 2023-12-10T21:49:35.469406,172.31.48.11,a8e20d3180,10
112 | 2023-12-10T21:49:50.927423,172.31.48.11,ca39d06493,11
113 | 2023-12-10T21:50:08.705153,172.31.48.11,cce2560603,12
114 | 2023-12-10T21:50:18.603789,172.31.48.11,060e7101a6,13
115 | 2023-12-10T21:50:22.818791,172.31.48.11,f7479791f4,14
116 | 2023-12-10T21:50:28.741450,172.31.48.11,5d8f30a894,15
117 | 2023-12-10T21:50:39.680865,172.31.48.11,3c61ed4d8d,16
118 | 2023-12-10T21:50:41.796087,172.31.48.11,904280c87b,17
119 | 2023-12-10T21:50:46.225198,172.31.48.11,87f1f3d8eb,18
120 | 2023-12-10T21:55:34.162429,172.31.48.11,b92e677f98,19
121 | 2023-12-10T21:56:05.493748,172.31.48.11,2d156a895c,20
122 | 2023-12-10T21:56:08.948198,172.31.48.11,bd4841bdf2,21
123 | 2023-12-10T21:56:12.408506,172.31.48.11,7484354c22,22
124 | 2023-12-10T21:56:14.455737,172.31.48.11,8a825332e9,23
125 | 2023-12-10T21:56:31.478971,172.31.48.11,beb8b638a3,24
126 | 2023-12-10T21:56:42.929347,172.31.48.11,e7c9c3fd05,25
127 | 2023-12-10T21:57:17.158976,172.31.48.11,5248a8de80,26
128 | 2023-12-10T21:59:00.815424,172.31.48.11,f15f043fe7,27
129 | 2023-12-10T21:59:15.734561,172.31.48.11,b0e03c8a4b,28,30
130 | 2023-12-10T22:22:51.881985,172.31.48.11,29996413f6,1,20
131 | 2023-12-10T22:23:03.372048,172.31.48.11,c3c11010ac,2,50
132 | 2023-12-10T23:20:02.673454,172.31.48.11,4d99b1d990,1,50
133 | 2023-12-10T23:20:14.229172,172.31.48.11,a51f0a97c0,2,100
134 | 2023-12-10T23:20:21.139649,172.31.48.11,33e42a3c1a,3,50
135 | 2023-12-10T23:20:38.142765,172.31.48.11,2032820f51,4,0
136 | 2023-12-10T23:20:46.541335,172.31.48.11,6ea3e53db0,5,100
137 | 2023-12-10T23:20:53.534309,172.31.48.11,2454bfcde1,6,0
138 | 2023-12-11T07:24:29.099660,172.31.48.11,fb7e18c3b5,1,30
139 | 2023-12-11T07:24:37.651226,172.31.48.11,26b5e16af3,2,30
140 | 2023-12-11T13:39:58.513373,172.31.48.11,27e8fe6fe7,1,70
141 | 2023-12-12T11:05:11.032420,172.31.48.11,184bdb616c,1,0
142 | 2023-12-12T12:24:19.083940,172.31.48.11,9fb7d29912,1,0
143 | 2023-12-12T12:45:32.855150,172.31.48.11,e34e18dd40,1,10
144 | 2023-12-12T12:45:52.148692,172.31.48.11,5088f350e8,2,10
145 | 2023-12-12T12:47:05.045739,172.31.48.11,22e3d0722b,3,10
146 | 2023-12-12T12:48:50.641761,172.31.48.11,29996413f6,4,20
147 | 2023-12-12T12:51:11.514975,172.31.48.11,b5aa020a86,5,10
148 | 2023-12-12T12:51:48.741610,172.31.48.11,3c61ed4d8d,6,10
149 | 2023-12-12T12:53:51.468949,172.31.48.11,b830de4210,7,10
150 | 2023-12-12T12:54:03.380300,172.31.48.11,7274606d10,8,10
151 | 2023-12-12T12:54:37.455742,172.31.48.11,f93489bf43,9,10
152 | 2023-12-12T12:57:02.531810,172.31.48.11,38b594b9f0,10,30
153 | 2023-12-12T12:57:13.080252,172.31.48.11,6b98dbca69,11,50
154 | 2023-12-12T12:57:22.199671,172.31.48.11,5d89fc9011,12,10
155 | 2023-12-12T12:59:05.116814,172.31.48.11,ace503fa98,13,10
156 | 2023-12-12T12:59:34.917430,172.31.48.11,85eed2ff79,14,50
157 | 2023-12-12T13:29:52.021308,172.31.48.11,ef3ec0fe29,1,80
158 | 2023-12-12T13:30:24.010926,172.31.48.11,233b8a3c43,2,20
159 | 2023-12-12T16:42:57.972303,172.31.48.11,9cbe35530e,1,0
160 | 2023-12-12T16:42:59.052957,172.31.48.11,ee248120d7,2,0
161 | 2023-12-12T16:48:02.699372,172.31.48.11,c9e4ebe1af,1,0
162 | 2023-12-12T16:48:15.246189,172.31.48.11,6ea56365f1,2,0
163 | 2023-12-13T02:03:10.100772,172.31.48.11,2d984e0731,1,70
164 | 2023-12-13T11:47:57.296647,172.31.48.11,1e42be3bf6,1,70
165 | 2023-12-13T13:43:09.442535,172.31.48.11,f814051baf,1,10
166 | 2023-12-13T13:43:10.048567,172.31.48.11,2a3bd925a4,2,10
167 | 2023-12-13T13:43:58.978255,172.31.48.11,b443ba681d,3,10
168 | 2023-12-13T20:59:45.588906,172.31.48.11,08f12dbe96,50,1,'too much silicon'
169 | 2023-12-28T08:03:16.472476,172.31.48.11,ae25695182,70,1,''
170 | 2024-01-16T20:55:31.063683,172.31.48.5,3c61ed4d8d,50,1,'Na2LiYCl6'
171 | 2024-01-16T20:56:24.728380,172.31.48.5,b830de4210,50,2,''
172 | 2024-01-16T20:56:25.865390,172.31.48.5,bbafca2c58,50,3,''
173 | 2024-01-16T20:56:27.074549,172.31.48.5,7274606d10,50,4,''
174 | 2024-01-16T20:56:39.814852,172.31.48.5,f93489bf43,100,5,''
175 | 2024-01-16T20:56:51.033777,172.31.48.5,38b594b9f0,100,6,''
176 | 2024-01-16T20:56:54.827206,172.31.48.5,6b98dbca69,50,7,''
177 | 2024-01-18T18:26:14.920275,172.31.48.5,233b8a3c43,100,1,''
178 | 2024-01-18T18:26:16.917842,172.31.48.5,46111b4fd6,100,2,''
179 | 2024-01-18T18:26:23.741739,172.31.48.5,2d302172db,100,3,''
180 | 2024-01-19T16:17:34.590555,172.31.48.5,ee248120d7,100,1,''
181 | 2024-01-19T16:17:56.594553,172.31.48.5,4810103dc8,50,2,''
182 | 2024-01-19T16:18:09.267377,172.31.48.5,c9e4ebe1af,50,3,''
183 | 2024-01-19T16:18:15.405813,172.31.48.5,6ea56365f1,50,4,''
184 | 2024-01-19T16:18:23.752652,172.31.48.5,f4fe02cdf6,50,5,''
185 | 2024-01-19T16:18:28.364266,172.31.48.5,15d1c55782,50,6,''
186 | 2024-01-19T16:18:58.815686,172.31.48.5,96ec757620,50,7,''
187 | 2024-01-19T16:19:04.905643,172.31.48.5,394472c73e,50,8,''
188 | 2024-01-19T16:19:11.956784,172.31.48.5,2d984e0731,50,9,''
189 | 2024-01-19T16:19:28.358419,172.31.48.5,396a22636d,50,10,''
190 | 2024-01-19T16:19:31.637337,172.31.48.5,aa68bc5ea6,50,11,''
191 | 2024-01-19T16:19:47.575308,172.31.48.5,1e42be3bf6,50,12,''
192 | 2024-02-14T16:14:19.363408,172.31.48.12,67f06bea1b,20,1,''
193 | 2024-02-24T12:18:39.897846,172.31.48.12,83db638923,20,1,''
194 | 2024-03-03T02:43:37.852303,172.31.48.12,f93489bf43,90,1,''
195 | 2024-03-03T02:45:34.056045,172.31.48.12,fd48845ad0,70,1,''
196 | 2024-03-05T08:04:31.024660,172.31.48.12,2a3bd925a4,0,1,''
197 | 2024-03-07T00:03:07.176115,172.31.48.12,5d89fc9011,0,1,''
198 | 2024-03-07T00:03:12.681870,172.31.48.12,f8410244a9,0,2,''
199 | 2024-03-07T00:03:16.087938,172.31.48.12,c3c11010ac,0,3,''
200 | 2024-03-07T00:03:22.378839,172.31.48.12,d9305374dd,0,4,''
201 | 2024-03-07T00:03:26.573822,172.31.48.12,18617e1fb5,0,5,''
202 | 2024-03-07T00:03:35.790353,172.31.48.12,bd4841bdf2,0,6,''
203 | 2024-03-07T00:03:56.033913,172.31.48.12,ddc2576fb5,0,7,''
204 | 2024-03-24T23:24:33.769734,172.31.48.21,6ea3e53db0,30,1,''
205 | 2024-03-25T19:18:02.604763,172.31.48.21,b1fd30944c,0,1,''
206 | 2024-03-25T19:18:17.538123,172.31.48.21,b34312e784,0,2,''
207 | 2024-03-25T19:19:10.513764,172.31.48.21,783030bd26,0,3,''
208 | 2024-03-25T19:19:27.330949,172.31.48.21,672205188c,0,4,''
209 | 2024-03-25T19:19:40.120784,172.31.48.21,e34e18dd40,0,5,''
210 | 2024-03-25T19:49:18.373076,172.31.48.21,b715a6eeab,20,1,'it can be difficult to find someone who wants to deal with radioactive Tc'
211 | 2024-03-25T19:51:28.318843,172.31.48.21,f7f1897372,10,2,'Protactinium (Pa) is one of the rarest and most expensive naturally occurring elements. (from Wikipedia)'
212 | 2024-03-25T20:01:29.258004,172.31.48.21,184bdb616c,70,1,''
213 | 2024-03-25T20:02:34.229114,172.31.48.21,02fb284d16,10,1,'it is unlikely that Tb, Pr and Lu would order as predicted here. the material might exist in a higher symmetry space group with Tb,Pr and Lu disordered, then it should be written as (Tb,Pr,Lu)5Sn4'
214 | 2024-03-25T20:09:58.519545,172.31.48.21,fd48845ad0,0,1,'loose MgBr molecules in a crystals are not a thing'
215 | 2024-03-25T20:10:04.188062,172.31.48.21,07570a66bc,0,2,''
216 | 2024-03-25T20:10:45.706989,172.31.48.21,9cbe35530e,0,3,'noooooo'
217 | 2024-03-25T20:48:01.556761,172.31.48.21,1e42be3bf6,60,1,''
218 | 2024-03-25T20:48:02.267954,172.31.48.21,1e42be3bf6,60,2,''
219 | 2024-03-25T20:48:11.353763,172.31.48.21,f814051baf,30,3,''
220 | 2024-03-25T20:48:18.438292,172.31.48.21,2a3bd925a4,30,4,''
221 | 2024-03-25T20:59:36.144502,172.31.48.21,d9305374dd,10,2,'Pr and Tb are likely to be disordered, strange coordinations'
222 | 2024-03-25T20:59:46.745741,172.31.48.21,d9305374dd,10,1,'Pr and Tb are likely to be disordered, strange coordinations'
223 | 2024-03-25T22:33:17.898483,172.31.48.21,e8ccd3fc77,50,1,''
224 | 2024-03-25T22:33:23.167990,172.31.48.21,a6dc87910a,50,2,''
225 | 2024-03-25T22:33:29.377579,172.31.48.21,d31da9d6dc,50,3,''
226 | 2024-03-25T22:35:12.090498,172.31.48.21,62f68203f1,50,1,''
227 | 2024-03-25T22:35:13.974530,172.31.48.21,280b630a85,50,2,''
228 | 2024-03-25T22:50:38.024442,172.31.48.21,13ff474841,80,1,''
229 | 2024-03-25T22:50:45.435729,172.31.48.21,d04b7c0a0c,20,2,''
230 | 2024-03-26T07:02:18.517726,172.31.48.21,83bf568487,90,1,''
231 | 2024-03-26T07:02:28.421269,172.31.48.21,d481302ccb,90,2,''
232 | 2024-03-26T07:11:52.783329,172.31.48.21,5a907bd5fc,20,1,''
233 | 2024-03-26T07:25:02.854034,172.31.48.21,b84a10bc99,10,2,''
234 | 2024-03-26T07:25:17.928210,172.31.48.21,089845da40,40,3,''
235 | 2024-03-26T07:25:44.998067,172.31.48.21,c4adb64fb5,10,4,''
236 | 2024-03-26T16:07:10.156785,172.31.48.21,56b1701b36,30,1,''
237 | 2024-03-26T16:07:21.775268,172.31.48.21,06f8f4799b,30,2,''
238 | 2024-03-27T11:37:35.370114,172.31.48.21,7637c6768e,10,1,'pseudo-trigonal symmetry, gamma roughly 60 deg looks very wrong. CN=13 for Zr is also unlikely. Most likely occupantionally disordered'
239 | 2024-03-27T11:42:04.475613,172.31.48.21,27e8fe6fe7,60,2,'Looks similar to Laves phases, mostly reasonable interatomic distances + coordination enviroments. Elements are chemically different enough to order'
240 | 2024-03-27T11:45:28.699937,172.31.48.21,aba6abc8bf,20,3,'elements are too similar to order, unlikely Re coordination'
241 | 2024-03-27T11:47:25.153803,172.31.48.21,aa68bc5ea6,20,4,'Co-coordinations seems unlikely, also fairly large unit cell'
242 | 2024-03-27T11:49:03.737105,172.31.48.21,ca0509de66,70,5,'AlB2-type variant which is reasonable, but Ge and Si are likely disordered'
243 | 2024-03-27T11:49:20.130023,172.31.48.21,ca0509de66,80,6,''
244 | 2024-03-27T20:23:52.752055,172.31.48.21,e32a217602,20,1,''
245 | 2024-03-27T20:23:58.091685,172.31.48.21,f1114bb798,90,2,''
246 | 2024-03-27T20:25:38.114031,172.31.48.21,e5d42e2749,20,3,''
247 | 2024-03-27T20:25:49.661376,172.31.48.21,d583bca697,20,4,''
248 | 2024-03-27T20:25:56.752197,172.31.48.21,5915704b68,60,5,''
249 | 2024-03-27T20:26:07.494552,172.31.48.21,4d84e5d5b1,80,6,''
250 | 2024-03-27T20:26:16.076629,172.31.48.21,fbca34bf6a,80,7,''
251 | 2024-03-27T20:26:22.654018,172.31.48.21,aa68bc5ea6,10,8,''
252 | 2024-03-27T20:26:31.872105,172.31.48.21,a8e20d3180,20,9,''
253 | 2024-03-27T20:26:32.743277,172.31.48.21,ca39d06493,20,10,''
254 | 2024-03-28T12:32:15.013107,172.31.48.21,5d8f30a894,50,1,''
255 | 2024-03-28T12:33:16.093023,172.31.48.21,5248a8de80,10,1,'a molecular structure like this is extremely unlikely to be stable'
256 | 2024-03-28T13:24:00.366851,172.31.48.21,02fb284d16,50,1,''
257 | 2024-03-28T13:24:01.093983,172.31.48.21,5a7f6fa180,50,2,''
258 | 2024-03-28T13:24:13.008022,172.31.48.21,67f06bea1b,50,3,''
259 | 2024-03-28T13:24:34.076199,172.31.48.21,70e240b00d,0,4,''
260 | 2024-03-28T14:00:49.717186,172.31.48.21,4743aff8ac,0,1,''
261 | 2024-03-28T14:01:19.363703,172.31.48.21,e65070289a,0,2,''
262 |
--------------------------------------------------------------------------------
/src/this_material_does_not_exist/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ml-evs/this-material-does-not-exist/7c082225d98d24d6818824ed912860e71194f278/src/this_material_does_not_exist/__init__.py
--------------------------------------------------------------------------------
/src/this_material_does_not_exist/app.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 | import datetime
3 | import os
4 | from flask import request
5 | import random
6 | import uuid
7 |
8 | import crystal_toolkit.components as ctc
9 | import dash
10 | import httpx
11 | from crystal_toolkit.settings import SETTINGS
12 | from dash import html
13 | from dash.dependencies import Input, Output, State
14 | from optimade.adapters.structures import Structure as OptimadeStructure
15 |
16 | app = dash.Dash(
17 | assets_folder=str(SETTINGS.ASSETS_PATH),
18 | title="This Material Does Not Exist?",
19 | )
20 |
21 | # Required for gunicorn deployment via app:server
22 | server = app.server
23 |
24 |
25 | structure = None
26 |
27 | structure_component = ctc.StructureMoleculeComponent(structure, id="my_structure")
28 |
29 | layout = html.Div(
30 | [
31 | html.H2("Does this material exist?"),
32 | structure_component.title_layout(),
33 | html.A(None, id="link"),
34 | structure_component.layout(),
35 | html.Div(
36 | [
37 | html.H3("What's your likelihood that this material is synthesizable?"),
38 | dash.dcc.Slider(
39 | 0,
40 | 100,
41 | 10,
42 | value=50,
43 | marks={0: "0%", 50: "50%", 100: "100%"},
44 | id="slider",
45 | ),
46 | html.Label("Why? (Optional):"),
47 | dash.dcc.Textarea(
48 | id="comment-box",
49 | value="",
50 | style={
51 | "width": "100%",
52 | "height": "50px",
53 | "resize": "vertical",
54 | "padding": "5px",
55 | "font-size": "15px",
56 | "border": "1px solid #ccc",
57 | "border-radius": "5px",
58 | },
59 | ),
60 | html.Button(
61 | "Submit",
62 | id="submit",
63 | n_clicks=0,
64 | style={
65 | "margin": "10px",
66 | "padding": "15px 20px",
67 | "font-size": "16px",
68 | "background-color": "#333",
69 | "color": "white",
70 | "border": "none",
71 | "border-radius": "5px",
72 | "cursor": "pointer",
73 | },
74 | ),
75 | ],
76 | style={
77 | "width": "350px",
78 | "padding": "20px",
79 | "align": "center",
80 | "text-align": "center",
81 | },
82 | ),
83 | html.Footer(
84 | [
85 | html.P(
86 | "Scores will be recorded anonymously and shared publicly if they prove interesting!",
87 | style={"text-align": "center"},
88 | ),
89 | html.Div(
90 | [
91 | html.A(
92 | "Powered by OPTIMADE",
93 | href="https://www.optimade.org",
94 | style={"padding": "20px"},
95 | ),
96 | html.A(
97 | "and Crystal Toolkit",
98 | href="https://docs.crystaltoolkit.org",
99 | style={"padding": "20px"},
100 | ),
101 | html.A(
102 | "using the GNome dataset",
103 | href="https://github.com/google-deepmind/materials_discovery",
104 | style={"padding": "20px"},
105 | ),
106 | html.A(
107 | "developed on GitHub",
108 | href="https://github.com/ml-evs/this-material-does-not-exist",
109 | style={"padding": "20px"},
110 | ),
111 | html.A(
112 | "inspired by",
113 | href="https://thispersondoesnotexist.com/",
114 | style={"padding": "20px"},
115 | ),
116 | ],
117 | ),
118 | ]
119 | ),
120 | ],
121 | style=dict(
122 | margin="2em auto", display="grid", placeContent="center", placeItems="center"
123 | ),
124 | )
125 |
126 | # tell crystal toolkit about your app and layout
127 | ctc.register_crystal_toolkit(app, layout=layout)
128 |
129 | # random string per user session
130 | session_id = str(uuid.uuid4())
131 | random.seed(1)
132 | shuffled_entries = random.sample(range(0, 384938), 1000)
133 |
134 |
135 | @app.callback(
136 | Output(structure_component.id(), "data"),
137 | Output("link", "href"),
138 | Output("link", "children"),
139 | Output("comment-box", "value"),
140 | Input("submit", "n_clicks"),
141 | State("slider", "value"),
142 | State("comment-box", "value"),
143 | Input(structure_component.id(), "data"),
144 | )
145 | def get_structure(n_clicks: int, value: str, comment: str, data: dict):
146 | results_fname = os.environ.get("RESULTS_PATH", "results.csv")
147 | timestamp = datetime.datetime.now().isoformat()
148 | if data:
149 | with open(results_fname, "a") as f:
150 | f.write(
151 | f'{timestamp},{request.remote_addr},{data["properties"]["optimade_id"].split()[1]},{value},{n_clicks},{comment!r}\n'
152 | )
153 |
154 | ind = random.choice(shuffled_entries)
155 | base_url = "https://optimade-gnome.odbx.science/v1/structures"
156 | response = httpx.get(f"{base_url}?page_limit=1&page_offset={ind}").json()
157 | optimade_structure = response["data"][0]
158 | pmg_structure = OptimadeStructure(optimade_structure).as_pymatgen
159 | optimade_id = "GNome " + optimade_structure["id"].split("/")[-1].split(".")[0]
160 | optimade_url = base_url + "/" + optimade_structure["id"]
161 | pmg_structure.properties["optimade_id"] = optimade_id
162 | return pmg_structure, optimade_url, optimade_id, ""
163 |
--------------------------------------------------------------------------------