├── 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 |

💎 this-material-does-not-exist 💎

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 | ![2023-12-10-001838_1095x878_scrot](https://github.com/ml-evs/this-material-does-not-exist/assets/7916000/678ba7ec-d929-438e-8637-3dad5bf26493) 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 | --------------------------------------------------------------------------------