├── .gitignore ├── Notebook ├── TrainBravais.ipynb ├── TrainLattice.ipynb ├── TrainSpaceGroup.ipynb └── ultrahardmat.ipynb ├── README.md ├── cryspnet ├── config.py ├── learner │ └── .gitkeep ├── losslandscape.py ├── models.py └── utils.py ├── demo ├── demo.csv ├── demo_metal.csv ├── demo_oxide.csv └── demo_train.csv ├── environment.yml ├── output └── .gitkeep ├── predict.py ├── random_crystal.py ├── requirement.txt ├── setup.py └── utils.py /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | src/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .coverage 43 | .coverage.* 44 | .cache 45 | nosetests.xml 46 | coverage.xml 47 | *.cover 48 | .hypothesis/ 49 | .pytest_cache/ 50 | 51 | # Translations 52 | *.mo 53 | *.pot 54 | 55 | # Django stuff: 56 | *.log 57 | local_settings.py 58 | db.sqlite3 59 | 60 | # Flask stuff: 61 | instance/ 62 | .webassets-cache 63 | 64 | # Scrapy stuff: 65 | .scrapy 66 | 67 | # Sphinx documentation 68 | docs/_build/ 69 | 70 | # PyBuilder 71 | target/ 72 | 73 | # Jupyter Notebook 74 | .ipynb_checkpoints 75 | Notebook/.ipynb_checkpoints 76 | 77 | # pyenv 78 | .python-version 79 | 80 | # celery beat schedule file 81 | celerybeat-schedule 82 | 83 | # SageMath parsed files 84 | *.sage.py 85 | 86 | # Environments 87 | .env 88 | .venv 89 | env/ 90 | venv/ 91 | ENV/ 92 | env.bak/ 93 | venv.bak/ 94 | 95 | # Spyder project settings 96 | .spyderproject 97 | .spyproject 98 | 99 | # Rope project settings 100 | .ropeproject 101 | 102 | # mkdocs documentation 103 | /site 104 | 105 | # mypy 106 | .mypy_cache/ 107 | 108 | # pycharm 109 | */.idea/** 110 | .idea/** 111 | 112 | # project specific 113 | 114 | # vscode 115 | .vscode 116 | 117 | # temporary 118 | README_example.md 119 | README_pytorch.md 120 | 121 | # output 122 | output/* 123 | !output/.gitkeep 124 | 125 | # demo 126 | demo/smallholdout 127 | demo/smallholdout/* 128 | demo/mp*.csv 129 | 130 | # learner 131 | cryspnet/learner/* 132 | !cryspnet/learner/.gitkeep 133 | 134 | # notebook 135 | Notebook/Notdemo 136 | 137 | # temporary files 138 | tmp/* 139 | 140 | # README example 141 | README_example.md 142 | README_pytorch.md 143 | 144 | # old version 145 | *.old 146 | 147 | # other file 148 | other/* 149 | -------------------------------------------------------------------------------- /Notebook/ultrahardmat.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# for loading the pre-trained models\n", 10 | "from cryspnet.models import *\n", 11 | "# for feature generation and plotting\n", 12 | "from cryspnet.utils import *\n", 13 | "# for accessing some pre-defined constant\n", 14 | "from cryspnet.config import *" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "import pandas as pd\n", 24 | "import numpy as np" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": {}, 30 | "source": [ 31 | "# Load in the Pre-Trained Models \n", 32 | "\n", 33 | "These three API helps you to retrieved them\n", 34 | "```Python\n", 35 | " load_Bravais_models(n_ensembler, which)\n", 36 | " load_Lattice_models()\n", 37 | " load_SpaceGroup_models()\n", 38 | "```\n", 39 | "\n", 40 | "**Note**: If the file cannot be found error showed, make sure your follow the instruction to download and extract those models to the correct place." 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 3, 46 | "metadata": {}, 47 | "outputs": [], 48 | "source": [ 49 | "BE = load_Bravais_models(n_ensembler=5, which=\"whole\")" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 4, 55 | "metadata": {}, 56 | "outputs": [], 57 | "source": [ 58 | "LB = load_Lattice_models()" 59 | ] 60 | }, 61 | { 62 | "cell_type": "code", 63 | "execution_count": 5, 64 | "metadata": {}, 65 | "outputs": [], 66 | "source": [ 67 | "SGB = load_SpaceGroup_models()" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "metadata": {}, 73 | "source": [ 74 | "# Download the Superhard Dataset\n", 75 | "\n", 76 | "Matminer provide an easy to access API for fast dataset retrieval. Check out [this page](https://hackingmaterials.lbl.gov/matminer/dataset_summary.html) for datasets that are all available" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 6, 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "from matminer.datasets import load_dataset" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": 7, 91 | "metadata": {}, 92 | "outputs": [], 93 | "source": [ 94 | "shard = load_dataset(\"brgoch_superhard_training\")" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 8, 100 | "metadata": {}, 101 | "outputs": [ 102 | { 103 | "data": { 104 | "text/html": [ 105 | "
\n", 123 | " | formula | \n", 124 | "bulk_modulus | \n", 125 | "shear_modulus | \n", 126 | "composition | \n", 127 | "material_id | \n", 128 | "structure | \n", 129 | "brgoch_feats | \n", 130 | "suspect_value | \n", 131 | "
---|---|---|---|---|---|---|---|---|
0 | \n", 136 | "AlPt3 | \n", 137 | "225.230461 | \n", 138 | "91.197748 | \n", 139 | "(Al, Pt) | \n", 140 | "mp-188 | \n", 141 | "[[0. 0. 0.] Al, [0. 1.96140395 1.96140395] Pt, [1.96140395 1.96140395 0. ] Pt, [1.96140395 0. 1.96140395] Pt] | \n", 142 | "{'atomic_number_feat_1': 123.5, 'atomic_number_feat_2': 221, 'atomic_number_feat_3': 13, 'atomic_number_feat_4': 78, 'atomic_weight_feat_1': 306.1107695, 'atomic_weight_feat_2': 558.258461, 'atomic_weight_feat_3': 26.981539, 'atomic_weight_feat_4': 195.08, 'period_number_feat_1': 10.5, 'period_number_feat_2': 15, 'period_number_feat_3': 3, 'period_number_feat_4': 6, 'group_number_feat_1': 21.5, 'group_number_feat_2': 17, 'group_number_feat_3': 10, 'group_number_feat_4': 13, 'family_number_feat_1': 8.5, 'family_number_feat_2': 7, 'family_number_feat_3': 4, 'family_number_feat_4': 5, 'Mendel... | \n", 143 | "False | \n", 144 | "
1 | \n", 147 | "Mn2Nb | \n", 148 | "232.696340 | \n", 149 | "74.590157 | \n", 150 | "(Mn, Nb) | \n", 151 | "mp-12659 | \n", 152 | "[[-2.23765223e-08 1.42974191e+00 5.92614104e+00] Mn, [3.57977169 0.71487093 1.97538035] Mn, [1.23819283 0.71487093 1.97538035] Mn, [1.17078941 3.45760869 5.92614104] Mn, [0. 0. 0.] Mn, [0. 0. 3.9507607] Mn, [2.40898226 2.74273771 1.97538035] Mn, [-1.17078945 3.45760869 5.92614104] Mn, [-2.07564892e-08 2.78165309e+00 3.46044846e+00] Nb, [2.40898226 1.39082653 7.41120915] Nb, [2.40898226 1.39082653 4.44107293] Nb, [-2.07564892e-08 2.78165309e+00 4.90312238e-01] Nb] | \n", 153 | "{'atomic_number_feat_1': 45.5, 'atomic_number_feat_2': 9, 'atomic_number_feat_3': 25, 'atomic_number_feat_4': 41, 'atomic_weight_feat_1': 101.39124, 'atomic_weight_feat_2': 16.96972, 'atomic_weight_feat_3': 54.93805, 'atomic_weight_feat_4': 92.90638, 'period_number_feat_1': 6.5, 'period_number_feat_2': 3, 'period_number_feat_3': 4, 'period_number_feat_4': 5, 'group_number_feat_1': 9.5, 'group_number_feat_2': 9, 'group_number_feat_3': 5, 'group_number_feat_4': 7, 'family_number_feat_1': 6.0, 'family_number_feat_2': 4, 'family_number_feat_3': 4, 'family_number_feat_4': 4, 'Mendeleev_number_f... | \n", 154 | "False | \n", 155 | "
2 | \n", 158 | "HfO2 | \n", 159 | "204.573433 | \n", 160 | "98.564374 | \n", 161 | "(Hf, O) | \n", 162 | "mp-352 | \n", 163 | "[[2.24450185 3.85793022 4.83390736] O, [2.77883096 1.26035638 2.32337921] O, [ 2.79593023 1.33721745 -0.3395849 ] O, [2.26160112 3.93479129 2.17094325] O, [0.33243749 1.71503186 1.79217508] O, [4.72509386 4.3126057 0.03918327] O, [4.70799459 3.48011581 2.70214738] O, [0.31533822 0.88254197 4.45513919] O, [1.37618055 2.37584161 3.54068723] Hf, [3.64715226 4.97341544 3.61659934] Hf, [3.66425153 2.81930606 0.95363523] Hf, [1.39327982 0.22173223 0.87772312] Hf] | \n", 164 | "{'atomic_number_feat_1': 44.0, 'atomic_number_feat_2': 56, 'atomic_number_feat_3': 8, 'atomic_number_feat_4': 72, 'atomic_weight_feat_1': 105.2444, 'atomic_weight_feat_2': 146.4912, 'atomic_weight_feat_3': 15.9994, 'atomic_weight_feat_4': 178.49, 'period_number_feat_1': 5.0, 'period_number_feat_2': 2, 'period_number_feat_3': 2, 'period_number_feat_4': 6, 'group_number_feat_1': 18.0, 'group_number_feat_2': 28, 'group_number_feat_3': 4, 'group_number_feat_4': 16, 'family_number_feat_1': 9.0, 'family_number_feat_2': 10, 'family_number_feat_3': 4, 'family_number_feat_4': 7, 'Mendeleev_number_f... | \n", 165 | "False | \n", 166 | "
3 | \n", 169 | "Cu3Pt | \n", 170 | "159.312640 | \n", 171 | "51.778816 | \n", 172 | "(Cu, Pt) | \n", 173 | "mp-12086 | \n", 174 | "[[0. 1.86144248 1.86144248] Cu, [1.86144248 1.86144248 0. ] Cu, [1.86144248 0. 1.86144248] Cu, [0. 0. 0.] Pt] | \n", 175 | "{'atomic_number_feat_1': 82.5, 'atomic_number_feat_2': 9, 'atomic_number_feat_3': 29, 'atomic_number_feat_4': 78, 'atomic_weight_feat_1': 192.859, 'atomic_weight_feat_2': 4.44200000000001, 'atomic_weight_feat_3': 63.546, 'atomic_weight_feat_4': 195.08, 'period_number_feat_1': 9.0, 'period_number_feat_2': 6, 'period_number_feat_3': 4, 'period_number_feat_4': 6, 'group_number_feat_1': 21.5, 'group_number_feat_2': 23, 'group_number_feat_3': 10, 'group_number_feat_4': 11, 'family_number_feat_1': 8.0, 'family_number_feat_2': 8, 'family_number_feat_3': 4, 'family_number_feat_4': 4, 'Mendeleev_nu... | \n", 176 | "False | \n", 177 | "
4 | \n", 180 | "Mg3Pt | \n", 181 | "69.637565 | \n", 182 | "27.588765 | \n", 183 | "(Mg, Pt) | \n", 184 | "mp-18707 | \n", 185 | "[[0. 0. 2.73626461] Mg, [0. 0. 6.95125305] Mg, [-3.97440991e-08 4.58925330e+00 1.79637294e+00] Mg, [3.97440996 2.29462661 6.01136137] Mg, [-3.97440991e-08 4.58925330e+00 6.01136137e+00] Mg, [3.97440996 2.29462661 1.79637294] Mg, [1.12369616 1.94629885 0.72058152] Mg, [-1.12369616 1.94629885 4.93556996] Mg, [2.24739233 0. 4.93556996] Mg, [5.70142751 0. 0.72058152] Mg, [-2.85071376 4.93758106 0.72058152] Mg, [2.85071376 4.93758106 4.93556996] Mg, [1.48939724 2.57971169 3.61780896] Mg, [-1.48939724 2.57971169 7.83279739] Mg, [2.9787944... | \n", 186 | "{'atomic_number_feat_1': 57.0, 'atomic_number_feat_2': 42, 'atomic_number_feat_3': 12, 'atomic_number_feat_4': 78, 'atomic_weight_feat_1': 133.9975, 'atomic_weight_feat_2': 122.165, 'atomic_weight_feat_3': 24.305, 'atomic_weight_feat_4': 195.08, 'period_number_feat_1': 7.5, 'period_number_feat_2': 3, 'period_number_feat_3': 3, 'period_number_feat_4': 6, 'group_number_feat_1': 8.0, 'group_number_feat_2': 4, 'group_number_feat_3': 2, 'group_number_feat_4': 10, 'family_number_feat_1': 5.0, 'family_number_feat_2': 2, 'family_number_feat_3': 2, 'family_number_feat_4': 4, 'Mendeleev_number_feat_... | \n", 187 | "False | \n", 188 | "
\n", 1079 | " | a | \n", 1080 | "b | \n", 1081 | "c | \n", 1082 | "alpha | \n", 1083 | "beta | \n", 1084 | "gamma | \n", 1085 | "v | \n", 1086 | "
---|---|---|---|---|---|---|---|
0 | \n", 1091 | "7.418073 | \n", 1092 | "9.941552 | \n", 1093 | "6.821741 | \n", 1094 | "90.0 | \n", 1095 | "90.0 | \n", 1096 | "90.0 | \n", 1097 | "503.084013 | \n", 1098 | "
1 | \n", 1101 | "0.000000 | \n", 1102 | "0.000000 | \n", 1103 | "0.000000 | \n", 1104 | "0.0 | \n", 1105 | "0.0 | \n", 1106 | "0.0 | \n", 1107 | "0.000000 | \n", 1108 | "
2 | \n", 1111 | "7.814845 | \n", 1112 | "7.814845 | \n", 1113 | "7.814845 | \n", 1114 | "90.0 | \n", 1115 | "90.0 | \n", 1116 | "90.0 | \n", 1117 | "477.266677 | \n", 1118 | "
3 | \n", 1121 | "8.261739 | \n", 1122 | "8.261739 | \n", 1123 | "8.261739 | \n", 1124 | "90.0 | \n", 1125 | "90.0 | \n", 1126 | "90.0 | \n", 1127 | "563.915990 | \n", 1128 | "
4 | \n", 1131 | "7.447362 | \n", 1132 | "9.912762 | \n", 1133 | "6.669214 | \n", 1134 | "90.0 | \n", 1135 | "90.0 | \n", 1136 | "90.0 | \n", 1137 | "492.347582 | \n", 1138 | "