From ef1b383ee61417662202b1aef441fcfb8042d2f8 Mon Sep 17 00:00:00 2001 From: knc6 Date: Thu, 5 Sep 2024 14:42:16 -0400 Subject: [PATCH 01/21] Fix repo. --- jarvis/core/atoms.py | 5 ++++- jarvis/db/figshare.py | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/jarvis/core/atoms.py b/jarvis/core/atoms.py index 7c6ca144..a31a1e38 100644 --- a/jarvis/core/atoms.py +++ b/jarvis/core/atoms.py @@ -1776,16 +1776,19 @@ def make_supercell_matrix(self, scaling_matrix): new_sites = [] new_elements = [] - for site, el in zip(self.cart_coords, self.elements): + new_props = [] + for site, el, p in zip(self.cart_coords, self.elements, self.props): for v in c_lat: new_elements.append(el) tmp = site + v new_sites.append(tmp) + new_props.append(p) return Atoms( lattice_mat=new_lattice.lattice(), elements=new_elements, coords=new_sites, cartesian=True, + props=new_props, ) def make_supercell(self, dim=[2, 2, 2]): diff --git a/jarvis/db/figshare.py b/jarvis/db/figshare.py index 929bd6f8..078a7a1f 100644 --- a/jarvis/db/figshare.py +++ b/jarvis/db/figshare.py @@ -328,7 +328,21 @@ def get_db_info(): "https://figshare.com/ndownloader/files/40750811", "vacancydb.json", "Obtaining vacancy dataset 464...", - "https://arxiv.org/abs/2205.08366", + "https://doi.org/10.1063/5.0135382", + ], + # https://doi.org/10.6084/m9.figshare.25832614 + "surfacedb": [ + "https://figshare.com/ndownloader/files/46355689", + "surface_db_dd.json", + "Obtaining vacancy dataset 607...", + "https://doi.org/10.1039/D4DD00031E", + ], + # https://doi.org/10.6084/m9.figshare.25832614 + "interfacedb": [ + "https://figshare.com/ndownloader/files/46355692", + "interface_db_dd.json", + "Obtaining vacancy dataset 607...", + "https://doi.org/10.1039/D4DD00031E", ], # Contains repeats # https://doi.org/10.6084/m9.figshare.23206193 From 5ffb6abdab98f4117b833592b0c3d6a707ea0f3c Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Thu, 5 Sep 2024 15:34:08 -0400 Subject: [PATCH 02/21] Update databases.md --- docs/databases.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/databases.md b/docs/databases.md index 9c57678d..aafa5e2d 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -6,6 +6,12 @@ |-------------------|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------| | `dft_3d` | 75993 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | | `dft_2d` | 1109 | Various 2D materials properties in JARVIS-DFT database computed with OptB88vdW | +| `supercon_3d` | 1058 | 3D superconductor DFT dataset | +| `supercon_2d` | 161 | 2D superconductor DFT dataset | +| `supercon_chem` | 16414 | Superconductor chemical formula dataset | +| `vacancydb` | 464 | Vacancy formation energy dataset | +| `surfacedb` | 607 | Surface property dataset | +| `interfacedb` | 593 | Interface property dataset | | `dft_3d_2021` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | | `dft_2d_2021` | 1079 | Various 2D materials properties in JARVIS-DFT database computed with OptB88vdW | | `qe_tb` | 829574 | Various 3D materials properties in JARVIS-QETB database | @@ -19,6 +25,8 @@ | `mp_3d_2020` | 127k | CFID descriptors for materials project | | `mp_3d` | 84k | CFID descriptors for 84k materials project | | `megnet2` | 133k | 133k materials and their formation energy in MP | +| `m3gnet_mpf` | 168k | 168k structures and their energy, forces and stresses in MP | +| `m3gnet_mpf_1.5mil` | 1.5 million | 1.5 million structures and their energy, forces and stresses in MP | | `twod_matpd` | 6351 | Formation energy and bandgaps of 2D materials properties in 2DMatPedia database | | `c2db` | 3514 | Various properties in C2DB database | | `polymer_genome` | 1073 | Electronic bandgap and diecltric constants of crystall ine polymer in polymer genome database | @@ -49,10 +57,6 @@ | `AGRA_CO` | 193 | AGRA CO catalyst dataset | | `AGRA_CHO` | 214 | AGRA CHO catalyst dataset | | `AGRA_COOH` | 280 | AGRA COOH catalyst dataset | -| `supercon_3d` | 1058 | 3D superconductor DFT dataset | -| `supercon_2d` | 161 | 2D superconductor DFT dataset | -| `supercon_chem` | 16414 | Superconductor chemical formula dataset | -| `vacancydb` | 464 | Vacancy formation energy dataset | | `cfid_3d` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods with CFID | | `raw_files` | 144895 | Figshare links to download raw calculations VASP files from JARVIS-DFT | From fdf62c07fc1e32223867c12242cfe23976c96406 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Thu, 5 Sep 2024 20:14:23 -0400 Subject: [PATCH 03/21] Update databases.md --- docs/databases.md | 78 ----------------------------------------------- 1 file changed, 78 deletions(-) diff --git a/docs/databases.md b/docs/databases.md index aafa5e2d..5e8ebc57 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -84,82 +84,4 @@ df = pd.DataFrame(d) print(df) ``` -## JARVIS-DFT -Description coming soon! - -### JARVIS-Formation energy and bandgap - -### JARVIS-2D Exfoliation energies - -### JARVIS-MetaGGA (dielectric function and SLME, solar cells) - -### JARVIS-STM and STEM - -### JARVIS-WannierTB - -### JARVIS-Elastic constants - -### JARVIS-Topological materials (Spin-orbit Spillage) - -### JARVIS-DFPT (Piezoelectric, IR, Raman, dielectric, BEC) - -### JARVIS-BoltzTrap (Thermoelectrics coeff, eff. mass) - -### JARVIS-Magnetic moments - -### JARVIS-DFPT (Piezoelectric, IR, dielectric) - -### JARVIS-EFG - -### JARVIS-PBE0 and HSE06 - -### JARVIS-Heterostructure - -### JARVIS-EDOS-PDOS - -### JARVIS-Kpoint and cut-off - -## JARVIS-FF - -### Energetics - -### Elastic constants - -### Vacancy formation energy - -### Surface energy and Wulff-plots - -### Phonon DOS - -## JARVIS-RAW Files - -### JARVIS-DFT structure relaxation - -### JARVIS-DFT Elastic constants/finite difference - -### JARVIS-WannierTB - -### JARVIS-STM and STEM - -## External datasets used for ML training - -### Materials project dataset - -### QM9 dataset - -### OQMD dataset - -### AFLOW dataset - -### Polymer genome dataset - -### COD dataset - -### OMDB dataset - -### QMOF dataset - -### C2DB dataset - -### HPOV dataset From dfc23c16d4041d9ce6848529a5019f8964d9cf49 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Sat, 7 Sep 2024 15:59:15 -0400 Subject: [PATCH 04/21] Update databases.md --- docs/databases.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/databases.md b/docs/databases.md index 5e8ebc57..f8b153b0 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -57,6 +57,10 @@ | `AGRA_CO` | 193 | AGRA CO catalyst dataset | | `AGRA_CHO` | 214 | AGRA CHO catalyst dataset | | `AGRA_COOH` | 280 | AGRA COOH catalyst dataset | +| `halide_peroskites` | 229 | Halide perovskite dataset | +| `aflow2` | 400k | AFLOW dataset | +| `mxene275` | 275 | MXene dataset | +| `cccbdb` | 1333 | CCCBDB dataset | | `cfid_3d` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods with CFID | | `raw_files` | 144895 | Figshare links to download raw calculations VASP files from JARVIS-DFT | From 723a6bd4712d4c1c0c7b538b162f9b620f797c8f Mon Sep 17 00:00:00 2001 From: knc6 Date: Sat, 7 Sep 2024 16:07:30 -0400 Subject: [PATCH 05/21] Version update. --- jarvis/__init__.py | 2 +- jarvis/analysis/structure/spacegroup.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jarvis/__init__.py b/jarvis/__init__.py index 42742fda..34d2ef41 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -1,6 +1,6 @@ """Version number.""" -__version__ = "2024.8.10" +__version__ = "2024.8.30" import os diff --git a/jarvis/analysis/structure/spacegroup.py b/jarvis/analysis/structure/spacegroup.py index 719f3964..f797071c 100644 --- a/jarvis/analysis/structure/spacegroup.py +++ b/jarvis/analysis/structure/spacegroup.py @@ -13,7 +13,7 @@ try: import spglib except Exception as exp: - print(exp) + # print(exp) pass # from numpy import gcd # from math import gcd diff --git a/setup.py b/setup.py index 5e570c37..47400a7a 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ setup( name="jarvis-tools", - version="2024.8.10", + version="2024.8.30", long_description=long_d, install_requires=[ "numpy>=1.20.1", From 5ea0991c57da443bdffa58039528b03895992ca3 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Mon, 23 Sep 2024 11:12:00 -0400 Subject: [PATCH 06/21] Update utils.py --- jarvis/core/utils.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/jarvis/core/utils.py b/jarvis/core/utils.py index 7fde5013..69e0298b 100644 --- a/jarvis/core/utils.py +++ b/jarvis/core/utils.py @@ -1,7 +1,8 @@ """Set of useful utility functions.""" from collections import OrderedDict -from collections import defaultdict +from scipy import sparse +from scipy.sparse.linalg import spsolve import random import numpy as np import math @@ -334,6 +335,34 @@ def cos_formula(a, b, c): return np.arccos(res) +def baseline_als(y, lam, p, niter=10): + """ + Adaptive Least Squares fitting for baseline correction + + Parameters: + y: array_like + Input signal + lam: float + Lambda (smoothness) + p: float + Asymmetry + niter: int, optional + Number of iterations + + Returns: + array_like + The estimated baseline + """ + L = len(y) + D = sparse.diags([1,-2,1],[0,-1,-2], shape=(L,L-2)) + w = np.ones(L) + for i in range(niter): + W = sparse.spdiags(w, 0, L, L) + Z = W + lam * D.dot(D.transpose()) + z = spsolve(Z, w*y) + w = p * (y > z) + (1-p) * (y < z) + return z + # def is_xml_valid(xsd="jarvisdft.xsd", xml="JVASP-1002.xml"): # """Check if XML is valid.""" # xml_file = etree.parse(xml) From 975af47da7242de292133c1af376940dd2276d7f Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Tue, 24 Sep 2024 00:24:31 -0400 Subject: [PATCH 07/21] Update utils.py --- jarvis/core/utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/jarvis/core/utils.py b/jarvis/core/utils.py index 69e0298b..97d65e85 100644 --- a/jarvis/core/utils.py +++ b/jarvis/core/utils.py @@ -362,7 +362,18 @@ def baseline_als(y, lam, p, niter=10): z = spsolve(Z, w*y) w = p * (y > z) + (1-p) * (y < z) return z - + +def recast_array(x_original = [],y_original = [],x_new = np.arange(0, 90, 1),tol=0.1): + x_original=np.array(x_original) + # Initialize the new y array with NaNs or a default value + y_new = np.full_like(x_new, 0, dtype=np.float64) + + # Fill the corresponding bins + for x_val, y_val in zip(x_original, y_original): + closest_index = np.abs(x_new - x_val).argmin() # Find the closest x_new index + y_new[closest_index] = y_val + #y_new[y_new Date: Fri, 27 Sep 2024 17:54:30 -0400 Subject: [PATCH 08/21] Update solar.py --- jarvis/analysis/solarefficiency/solar.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jarvis/analysis/solarefficiency/solar.py b/jarvis/analysis/solarefficiency/solar.py index 2ab64c46..785f7447 100644 --- a/jarvis/analysis/solarefficiency/solar.py +++ b/jarvis/analysis/solarefficiency/solar.py @@ -9,7 +9,11 @@ from scipy.interpolate import interp1d from numpy import interp import scipy.constants as constants -from scipy.integrate import simps +try: + from scipy.integrate import simps +except: + from scipy.integrate import simpson as simps + pass import matplotlib.pyplot as plt From 8b6da9bdf4588d9e0947a8fe8d35bada231f9990 Mon Sep 17 00:00:00 2001 From: knc6 Date: Fri, 4 Oct 2024 08:58:47 -0500 Subject: [PATCH 09/21] Add model bug fix. --- jarvis/__init__.py | 2 +- jarvis/core/atoms.py | 14 ++++++++++++-- setup.py | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/jarvis/__init__.py b/jarvis/__init__.py index 34d2ef41..a9f5c29d 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -1,6 +1,6 @@ """Version number.""" -__version__ = "2024.8.30" +__version__ = "2024.9.30" import os diff --git a/jarvis/core/atoms.py b/jarvis/core/atoms.py index a31a1e38..d12ebe4b 100644 --- a/jarvis/core/atoms.py +++ b/jarvis/core/atoms.py @@ -1438,6 +1438,9 @@ def hook(model, input, output): from alignn.graphs import Graph from alignn.pretrained import get_figshare_model + import torch + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") g, lg = Graph.atom_dgl_multigraph( self, @@ -1452,6 +1455,8 @@ def hook(model, input, output): model = get_figshare_model( model_name="jv_formation_energy_peratom_alignn" ) + g.to(device) + lg.to(device) h = get_val(model, g, lg) return h @@ -1571,11 +1576,15 @@ def describe( cutoff=4, take_n_bonds=2, include_spg=True, + include_mineral_name=False, ): """Describe for NLP applications.""" from jarvis.analysis.diffraction.xrd import XRD - min_name = self.get_minaral_name() + if include_mineral_name: + min_name = self.get_minaral_name() + else: + min_name = "na" if include_spg: from jarvis.analysis.structure.spacegroup import Spacegroup3D @@ -1713,7 +1722,8 @@ def describe( + struct_info["wyckoff"] + "." ) - if min_name is not None: + if min_name != "na": + # if min_name is not None: line3 = ( chem_info["atomic_formula"] + " is " diff --git a/setup.py b/setup.py index 47400a7a..4f2768a2 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ setup( name="jarvis-tools", - version="2024.8.30", + version="2024.9.30", long_description=long_d, install_requires=[ "numpy>=1.20.1", From 894620330d8d2b354b49d4315e39d2901b33a509 Mon Sep 17 00:00:00 2001 From: knc6 Date: Fri, 4 Oct 2024 09:11:03 -0500 Subject: [PATCH 10/21] Lint fix. --- jarvis/analysis/solarefficiency/solar.py | 13 ++++++----- jarvis/analysis/structure/spacegroup.py | 2 +- jarvis/core/utils.py | 28 +++++++++++++++--------- jarvis/db/figshare.py | 1 + 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/jarvis/analysis/solarefficiency/solar.py b/jarvis/analysis/solarefficiency/solar.py index 785f7447..c004eb08 100644 --- a/jarvis/analysis/solarefficiency/solar.py +++ b/jarvis/analysis/solarefficiency/solar.py @@ -4,15 +4,18 @@ Please find more detailsin: https://pubs.acs.org/doi/abs/10.1021/acs.chemmater.9b02166 """ + import numpy as np import os from scipy.interpolate import interp1d from numpy import interp import scipy.constants as constants + try: from scipy.integrate import simps -except: +except Exception: from scipy.integrate import simpson as simps + pass import matplotlib.pyplot as plt @@ -73,7 +76,7 @@ def calculate_SQ( # units of W/(m**3), different than solar_spectra_irradiance!!! (This # is intentional, it is for convenience) blackbody_irradiance = ( - 2.0 * h * c ** 2 / (solar_spectra_wavelength_meters ** 5) + 2.0 * h * c**2 / (solar_spectra_wavelength_meters**5) ) * ( 1.0 / ( @@ -113,7 +116,7 @@ def calculate_SQ( ) bandgap_blackbody = ( - (2.0 * h * c ** 2 / (bandgap_wavelength ** 5)) + (2.0 * h * c**2 / (bandgap_wavelength**5)) * ( 1.0 / ( @@ -277,7 +280,7 @@ def slme( # units of W/(m**3), different than solar_spectra_irradiance!!! (This # is intentional, it is for convenience) blackbody_irradiance = ( - 2.0 * h * c ** 2 / (solar_spectra_wavelength_meters ** 5) + 2.0 * h * c**2 / (solar_spectra_wavelength_meters**5) ) * ( 1.0 / ( @@ -302,7 +305,7 @@ def slme( # units of nm material_wavelength_for_absorbance_data = ( (c * h_e) / (material_energy_for_absorbance_data + 0.00000001) - ) * 10 ** 9 + ) * 10**9 # absorbance interpolation onto each solar spectrum wavelength diff --git a/jarvis/analysis/structure/spacegroup.py b/jarvis/analysis/structure/spacegroup.py index f797071c..dd6b9394 100644 --- a/jarvis/analysis/structure/spacegroup.py +++ b/jarvis/analysis/structure/spacegroup.py @@ -12,7 +12,7 @@ try: import spglib -except Exception as exp: +except Exception: # print(exp) pass # from numpy import gcd diff --git a/jarvis/core/utils.py b/jarvis/core/utils.py index 97d65e85..7588fb79 100644 --- a/jarvis/core/utils.py +++ b/jarvis/core/utils.py @@ -1,6 +1,7 @@ """Set of useful utility functions.""" from collections import OrderedDict +from collections import defaultdict from scipy import sparse from scipy.sparse.linalg import spsolve import random @@ -338,7 +339,7 @@ def cos_formula(a, b, c): def baseline_als(y, lam, p, niter=10): """ Adaptive Least Squares fitting for baseline correction - + Parameters: y: array_like Input signal @@ -348,32 +349,39 @@ def baseline_als(y, lam, p, niter=10): Asymmetry niter: int, optional Number of iterations - + Returns: array_like The estimated baseline """ L = len(y) - D = sparse.diags([1,-2,1],[0,-1,-2], shape=(L,L-2)) + D = sparse.diags([1, -2, 1], [0, -1, -2], shape=(L, L - 2)) w = np.ones(L) for i in range(niter): W = sparse.spdiags(w, 0, L, L) Z = W + lam * D.dot(D.transpose()) - z = spsolve(Z, w*y) - w = p * (y > z) + (1-p) * (y < z) + z = spsolve(Z, w * y) + w = p * (y > z) + (1 - p) * (y < z) return z - -def recast_array(x_original = [],y_original = [],x_new = np.arange(0, 90, 1),tol=0.1): - x_original=np.array(x_original) + + +def recast_array( + x_original=[], y_original=[], x_new=np.arange(0, 90, 1), tol=0.1 +): + x_original = np.array(x_original) # Initialize the new y array with NaNs or a default value y_new = np.full_like(x_new, 0, dtype=np.float64) # Fill the corresponding bins for x_val, y_val in zip(x_original, y_original): - closest_index = np.abs(x_new - x_val).argmin() # Find the closest x_new index + closest_index = np.abs( + x_new - x_val + ).argmin() # Find the closest x_new index y_new[closest_index] = y_val - #y_new[y_new Date: Thu, 17 Oct 2024 20:54:08 -0400 Subject: [PATCH 11/21] Add Alexandria DB. --- docs/databases.md | 10 ++++++++-- jarvis/__init__.py | 2 +- jarvis/db/figshare.py | 42 ++++++++++++++++++++++++++++++++++++++++++ setup.py | 2 +- 4 files changed, 52 insertions(+), 4 deletions(-) diff --git a/docs/databases.md b/docs/databases.md index f8b153b0..cdbdf4af 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -25,8 +25,8 @@ | `mp_3d_2020` | 127k | CFID descriptors for materials project | | `mp_3d` | 84k | CFID descriptors for 84k materials project | | `megnet2` | 133k | 133k materials and their formation energy in MP | -| `m3gnet_mpf` | 168k | 168k structures and their energy, forces and stresses in MP | -| `m3gnet_mpf_1.5mil` | 1.5 million | 1.5 million structures and their energy, forces and stresses in MP | +| `m3gnet_mpf` | 168k | 168k structures and their energy, forces and stresses in MP | +| `m3gnet_mpf_1.5mil` | 1.5 million | 1.5 million structures and their energy, forces and stresses in MP | | `twod_matpd` | 6351 | Formation energy and bandgaps of 2D materials properties in 2DMatPedia database | | `c2db` | 3514 | Various properties in C2DB database | | `polymer_genome` | 1073 | Electronic bandgap and diecltric constants of crystall ine polymer in polymer genome database | @@ -36,6 +36,12 @@ | `oqmd_3d_no_cfid` | 817636 | Formation energies and bandgaps of 3D materials from OQMD database | | `oqmd_3d` | 460k | CFID descriptors for 460k materials in OQMD | | `omdb` | 12500 | Bandgaps for organic polymers in OMDB database | +| `alex_pbe_hull` | 116k | Alexandria DB convex hull stable materials with PBE functional | +| `alex_pbe_3d_all` | 5 million | Alexandria DB all 3D materials with PBE | +| `alex_pbe_2d_all` | 200k | Alexandria DB all 2D materials with PBE | +| `alex_pbe_1d_all` | 100k | Alexandria DB all 1D materials with PBE | +| `alex_scan_3d_all` | 500k | Alexandria DB all 3D materials with SCAN | +| `alex_pbesol_3d_all` | 500k | Alexandria DB all 3D materials with PBEsol | | `hopv` | 4855 | Various properties of molecules in HOPV15 dataset | | `pdbbind` | 11189 | Bio-molecular complexes database from PDBBind v2015 | | `pdbbind_core` | 195 | Bio-molecular complexes database from PDBBind core | diff --git a/jarvis/__init__.py b/jarvis/__init__.py index a9f5c29d..bccb3347 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -1,6 +1,6 @@ """Version number.""" -__version__ = "2024.9.30" +__version__ = "2024.10.10" import os diff --git a/jarvis/db/figshare.py b/jarvis/db/figshare.py index 3fddf81d..adc17e86 100644 --- a/jarvis/db/figshare.py +++ b/jarvis/db/figshare.py @@ -457,6 +457,48 @@ def get_db_info(): "Obtaining CCCBDB dataset 1333...", "https://cccbdb.nist.gov/", ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_pbe_hull": [ + "https://figshare.com/ndownloader/files/49622718", + "alexandria_convex_hull_pbe_2023.12.29_jarvis_tools.json", + "Obtaining Alexandria_DB PBE on hull 116k...", + "https://alexandria.icams.rub.de/", + ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_pbe_3d_all": [ + "https://figshare.com/ndownloader/files/49622946", + "alexandria_pbe_3d_2024.10.1_jarvis_tools.json", + "Obtaining Alexandria_DB PBE 3D all 5 million, large file...", + "https://alexandria.icams.rub.de/", + ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_pbe_2d_all": [ + "https://figshare.com/ndownloader/files/49622988", + "alexandria_pbe_2d_2024.10.1_jarvis_tools.json", + "Obtaining Alexandria_DB PBE 2D all 200k...", + "https://alexandria.icams.rub.de/", + ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_pbe_1d_all": [ + "https://figshare.com/ndownloader/files/49622991", + "alexandria_pbe_1d_2024.10.1_jarvis_tools.json", + "Obtaining Alexandria_DB PBE 1D all 100k...", + "https://alexandria.icams.rub.de/", + ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_scan_3d_all": [ + "https://figshare.com/ndownloader/files/49623090", + "alexandria_scan_3d_2024.10.1_jarvis_tools.json", + "Obtaining Alexandria_DB SCAN 3D all 500k...", + "https://alexandria.icams.rub.de/", + ], + # https://doi.org/10.6084/m9.figshare.27174897 + "alex_pbesol_3d_all": [ + "https://figshare.com/ndownloader/files/49623096", + "alexandria_ps_3d_2024.10.1_jarvis_tools.json", + "Obtaining Alexandria_DB PBEsol 3D all 500k...", + "https://alexandria.icams.rub.de/", + ], # https://doi.org/10.6084/m9.figshare.13154159 "raw_files": [ "https://ndownloader.figshare.com/files/25295732", diff --git a/setup.py b/setup.py index 4f2768a2..119e5dbf 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ setup( name="jarvis-tools", - version="2024.9.30", + version="2024.10.10", long_description=long_d, install_requires=[ "numpy>=1.20.1", From 64589988aa89c45279ffbf1e2545a4a17c6ff2d0 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Thu, 17 Oct 2024 20:58:51 -0400 Subject: [PATCH 12/21] Update databases.md --- docs/databases.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/databases.md b/docs/databases.md index cdbdf4af..c839f8df 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -2,6 +2,10 @@ ## [FigShare](https://figshare.com/authors/Kamal_Choudhary/4445539) based databases +[![Open in Colab]](https://colab.research.google.com/github/knc6/jarvis-tools-notebooks/blob/master/jarvis-tools-notebooks/Analyzing_data_in_the_JARVIS_DFT_dataset.ipynb) +[![Open in SLMat]](https://deepmaterials.github.io/slmat/lab?fromURL=https://raw.githubusercontent.com/deepmaterials/slmat/main/content/Database_analysis.ipynb) + + | Database name | Number of data-points | Description | |-------------------|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------| | `dft_3d` | 75993 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | @@ -94,4 +98,6 @@ df = pd.DataFrame(d) print(df) ``` +[Open in SLMat]: https://img.shields.io/badge/Open-SLMat-blue +[Open in Colab]: https://colab.research.google.com/assets/colab-badge.svg From 0de6c4eada49e5fb57a89046f02443d82fd78757 Mon Sep 17 00:00:00 2001 From: knc6 Date: Thu, 17 Oct 2024 21:02:03 -0400 Subject: [PATCH 13/21] Add Alexandria DB. --- jarvis/__init__.py | 2 +- jarvis/analysis/structure/spacegroup.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jarvis/__init__.py b/jarvis/__init__.py index 88cc4722..bccb3347 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -10,4 +10,4 @@ def test(*args): import pytest path = os.path.join(os.path.split(__file__)[0], "tests") - pytest.main(args=[path] + list(args)) \ No newline at end of file + pytest.main(args=[path] + list(args)) diff --git a/jarvis/analysis/structure/spacegroup.py b/jarvis/analysis/structure/spacegroup.py index 7de40f57..dd6b9394 100644 --- a/jarvis/analysis/structure/spacegroup.py +++ b/jarvis/analysis/structure/spacegroup.py @@ -738,4 +738,4 @@ def check_duplicate_coords(coords=[], coord=[]): # spg=SpacegroupAnalyzer(pmg) # print (spg.get_space_group_symbol(),spg.get_space_group_number()) # print (pmg.get_primitive_structure()) -""" \ No newline at end of file +""" diff --git a/setup.py b/setup.py index 8d1ca9d5..119e5dbf 100644 --- a/setup.py +++ b/setup.py @@ -86,4 +86,4 @@ "Topic :: Scientific/Engineering", ], # scripts=glob.glob(os.path.join(JARVIS_DIR, "*")) -) \ No newline at end of file +) From 329f7a84d47786bfe2a72c2ba0d908bc9f49b8bd Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Sat, 19 Oct 2024 21:55:13 -0400 Subject: [PATCH 14/21] Update databases.md --- docs/databases.md | 105 +++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 52 deletions(-) diff --git a/docs/databases.md b/docs/databases.md index 16bc6ef2..2eacc602 100644 --- a/docs/databases.md +++ b/docs/databases.md @@ -8,71 +8,72 @@ | Database name | Number of data-points | Description | |-------------------|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------| -| `dft_3d` | 75993 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | +| `AGRA_CHO` | 214 | AGRA CHO catalyst dataset | +| `AGRA_COOH` | 280 | AGRA COOH catalyst dataset | +| `AGRA_CO` | 193 | AGRA CO catalyst dataset | +| `AGRA_OH` | 875 | AGRA OH catalyst dataset | +| `AGRA_O` | 1000 | AGRA Oxygen catalyst dataset | +| `aflow2` | 400k | AFLOW dataset | +| `alex_pbe_1d_all` | 100k | Alexandria DB all 1D materials with PBE | +| `alex_pbe_2d_all` | 200k | Alexandria DB all 2D materials with PBE | +| `alex_pbe_3d_all` | 5 million | Alexandria DB all 3D materials with PBE | +| `alex_pbe_hull` | 116k | Alexandria DB convex hull stable materials with PBE functional | +| `alex_pbesol_3d_all` | 500k | Alexandria DB all 3D materials with PBEsol | +| `alex_scan_3d_all` | 500k | Alexandria DB all 3D materials with SCAN | +| `alignn_ff_db` | 307113 | Energy per atom, forces and stresses for ALIGNN-FF trainig for 75k materials. | +| `arXiv` | 1796911 | arXiv dataset 1.8 million title, abstract and id dataset | +| `arxiv_summary` | 137927 | arXiv summary dataset | +| `c2db` | 3514 | Various properties in C2DB database | +| `cccbdb` | 1333 | CCCBDB dataset | +| `cfid_3d` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods with CFID | +| `cod` | 431778 | Atomic structures from crystallographic open database | +| `dft_2d_2021` | 1079 | Various 2D materials properties in JARVIS-DFT database computed with OptB88vdW | | `dft_2d` | 1109 | Various 2D materials properties in JARVIS-DFT database computed with OptB88vdW | -| `supercon_3d` | 1058 | 3D superconductor DFT dataset | -| `supercon_2d` | 161 | 2D superconductor DFT dataset | -| `supercon_chem` | 16414 | Superconductor chemical formula dataset | -| `vacancydb` | 464 | Vacancy formation energy dataset | -| `surfacedb` | 607 | Surface property dataset | -| `interfacedb` | 593 | Interface property dataset | | `dft_3d_2021` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | -| `dft_2d_2021` | 1079 | Various 2D materials properties in JARVIS-DFT database computed with OptB88vdW | -| `qe_tb` | 829574 | Various 3D materials properties in JARVIS-QETB database | -| `stm` | 1132 | 2D materials STM images in JARVIS-STM database | -| `wtbh_electron` | 1440 | 3D and 2D materials Wannier tight-binding Hamiltonian dtaabase for electrons with spin-orbit coupling in JARVIS-WTB (Keyword: 'WANN') | -| `wtbh_phonon` | 15502 | 3D and 2D materials Wannier tight-binding Hamiltonian for phonons at Gamma with finite difference (Keyword:FD-ELAST) | -| `jff` | 2538 | Various 3D materials properties in JARVIS-FF database computed with several force-fields | -| `alignn_ff_db` | 307113 | Energy per atom, forces and stresses for ALIGNN-FF trainig for 75k materials. | +| `dft_3d` | 75993 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods | | `edos_pdos` | 48469 | Normalized electron and phonon density of states with interpolated values and fixed number of bins | +| `halide_peroskites` | 229 | Halide perovskite dataset | +| `hmof` | 137651 | Hypothetical MOF database | +| `hopv` | 4855 | Various properties of molecules in HOPV15 dataset | +| `interfacedb` | 593 | Interface property dataset | +| `jff` | 2538 | Various 3D materials properties in JARVIS-FF database computed with several force-fields | +| `m3gnet_mpf_1.5mil` | 1.5 million | 1.5 million structures and their energy, forces and stresses in MP | +| `m3gnet_mpf` | 168k | 168k structures and their energy, forces and stresses in MP | +| `megnet2` | 133k | 133k materials and their formation energy in MP | | `megnet` | 69239 | Formation energy and bandgaps of 3D materials properties in Materials project database as on 2018, used in megnet | +| `mlearn` | 1730 | Machine learning force-field for elements datasets | | `mp_3d_2020` | 127k | CFID descriptors for materials project | | `mp_3d` | 84k | CFID descriptors for 84k materials project | -| `megnet2` | 133k | 133k materials and their formation energy in MP | -| `m3gnet_mpf` | 168k | 168k structures and their energy, forces and stresses in MP | -| `m3gnet_mpf_1.5mil` | 1.5 million | 1.5 million structures and their energy, forces and stresses in MP | -| `twod_matpd` | 6351 | Formation energy and bandgaps of 2D materials properties in 2DMatPedia database | -| `c2db` | 3514 | Various properties in C2DB database | -| `polymer_genome` | 1073 | Electronic bandgap and diecltric constants of crystall ine polymer in polymer genome database | -| `qm9_std_jctc` | 130829 | Various properties of molecules in QM9 database | -| `qm9_dgl` | 130829 | Various properties of molecules in QM9 dgl database | -| `cod` | 431778 | Atomic structures from crystallographic open database | +| `mxene275` | 275 | MXene dataset | +| `ocp100k` | 149886 | Open Catalyst 100000 training, rest validation and test dataset | +| `ocp10k` | 59886 | Open Catalyst 10000 training, rest validation and test dataset | +| `ocp_all` | 510214 | Open Catalyst 460328 training, rest validation and test dataset | +| `omdb` | 12500 | Bandgaps for organic polymers in OMDB database | | `oqmd_3d_no_cfid` | 817636 | Formation energies and bandgaps of 3D materials from OQMD database | | `oqmd_3d` | 460k | CFID descriptors for 460k materials in OQMD | -| `omdb` | 12500 | Bandgaps for organic polymers in OMDB database | -| `alex_pbe_hull` | 116k | Alexandria DB convex hull stable materials with PBE functional | -| `alex_pbe_3d_all` | 5 million | Alexandria DB all 3D materials with PBE | -| `alex_pbe_2d_all` | 200k | Alexandria DB all 2D materials with PBE | -| `alex_pbe_1d_all` | 100k | Alexandria DB all 1D materials with PBE | -| `alex_scan_3d_all` | 500k | Alexandria DB all 3D materials with SCAN | -| `alex_pbesol_3d_all` | 500k | Alexandria DB all 3D materials with PBEsol | -| `hopv` | 4855 | Various properties of molecules in HOPV15 dataset | -| `pdbbind` | 11189 | Bio-molecular complexes database from PDBBind v2015 | | `pdbbind_core` | 195 | Bio-molecular complexes database from PDBBind core | +| `pdbbind` | 11189 | Bio-molecular complexes database from PDBBind v2015 | +| `polymer_genome` | 1073 | Electronic bandgap and diecltric constants of crystall ine polymer in polymer genome database | +| `qe_tb` | 829574 | Various 3D materials properties in JARVIS-QETB database | +| `qm9_dgl` | 130829 | Various properties of molecules in QM9 dgl database | +| `qm9_std_jctc` | 130829 | Various properties of molecules in QM9 database | | `qmof` | 20425 | Bandgaps and total energies of metal organic frameowrks in QMOF database | -| `hmof` | 137651 | Hypothetical MOF database | +| `raw_files` | 144895 | Figshare links to download raw calculations VASP files from JARVIS-DFT | | `snumat` | 10481 | Bandgaps with hybrid functional | -| `arxiv_summary` | 137927 | arXiv summary dataset | -| `arXiv` | 1796911 | arXiv dataset 1.8 million title, abstract and id dataset | | `ssub` | 1726 | SSUB formation energy for chemical formula dataset | -| `mlearn` | 1730 | Machine learning force-field for elements datasets | -| `ocp10k` | 59886 | Open Catalyst 10000 training, rest validation and test dataset | -| `ocp100k` | 149886 | Open Catalyst 100000 training, rest validation and test dataset | -| `ocp_all` | 510214 | Open Catalyst 460328 training, rest validation and test dataset | +| `stm` | 1132 | 2D materials STM images in JARVIS-STM database | +| `supercon_2d` | 161 | 2D superconductor DFT dataset | +| `supercon_3d` | 1058 | 3D superconductor DFT dataset | +| `supercon_chem` | 16414 | Superconductor chemical formula dataset | +| `surfacedb` | 607 | Surface property dataset | | `tinnet_N` | 329 | TinNet Nitrogen catalyst dataset | -| `tinnet_O` | 747 | TinNet Oxygen catalyst dataset | | `tinnet_OH` | 748 | TinNet OH group catalyst dataset | -| `AGRA_O` | 1000 | AGRA Oxygen catalyst dataset | -| `AGRA_OH` | 875 | AGRA OH catalyst dataset | -| `AGRA_CO` | 193 | AGRA CO catalyst dataset | -| `AGRA_CHO` | 214 | AGRA CHO catalyst dataset | -| `AGRA_COOH` | 280 | AGRA COOH catalyst dataset | -| `halide_peroskites` | 229 | Halide perovskite dataset | -| `aflow2` | 400k | AFLOW dataset | -| `mxene275` | 275 | MXene dataset | -| `cccbdb` | 1333 | CCCBDB dataset | -| `cfid_3d` | 55723 | Various 3D materials properties in JARVIS-DFT database computed with OptB88vdW and TBmBJ methods with CFID | -| `raw_files` | 144895 | Figshare links to download raw calculations VASP files from JARVIS-DFT | +| `tinnet_O` | 747 | TinNet Oxygen catalyst dataset | +| `twod_matpd` | 6351 | Formation energy and bandgaps of 2D materials properties in 2DMatPedia database | +| `vacancydb` | 464 | Vacancy formation energy dataset | +| `wtbh_electron` | 1440 | 3D and 2D materials Wannier tight-binding Hamiltonian dtaabase for electrons with spin-orbit coupling in JARVIS-WTB (Keyword: 'WANN') | +| `wtbh_phonon` | 15502 | 3D and 2D materials Wannier tight-binding Hamiltonian for phonons at Gamma with finite difference (Keyword:FD-ELAST) | + All these datasets can be obtained using jarvis-tools as follows, exception to `stm`, `wtbh_electron`, `wtbh_phonon` which have their own @@ -100,4 +101,4 @@ print(df) [Open in SLMat]: https://img.shields.io/badge/Open-SLMat-blue -[Open in Colab]: https://colab.research.google.com/assets/colab-badge.svg \ No newline at end of file +[Open in Colab]: https://colab.research.google.com/assets/colab-badge.svg From 25ab5cb0831101fb0304d0c92572ad01e5499da1 Mon Sep 17 00:00:00 2001 From: knc6 Date: Fri, 25 Oct 2024 11:25:19 -0400 Subject: [PATCH 15/21] Update get_points_in_spehere --- jarvis/core/lattice.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/jarvis/core/lattice.py b/jarvis/core/lattice.py index a7d21802..03befb80 100644 --- a/jarvis/core/lattice.py +++ b/jarvis/core/lattice.py @@ -63,7 +63,7 @@ def lat_lengths(self): """Return lattice vectors' lengths.""" return [ round(i, 6) - for i in (np.sqrt(np.sum(self._lat ** 2, axis=1)).tolist()) + for i in (np.sqrt(np.sum(self._lat**2, axis=1)).tolist()) ] # return [round(np.linalg.norm(v), 6) for v in self._lat] @@ -239,7 +239,9 @@ def reciprocal_lattice_crystallographic(self): """Return reciprocal Lattice without 2 * pi.""" return Lattice(self.reciprocal_lattice().matrix / (2 * np.pi)) - def get_points_in_sphere(self, frac_points, center, r): + def get_points_in_sphere( + self, frac_points, center, r, distance_vector=True + ): """ Find all points within a sphere from the point. @@ -283,11 +285,21 @@ def get_points_in_sphere(self, frac_points, center, r): tmp_img = cart_images[None, :, :, :, :] coords = cart_coords[:, None, None, None, :] + tmp_img coords -= center[None, None, None, None, :] + dist_vect = coords coords **= 2 d_2 = np.sum(coords, axis=4) # Determine which points are within `r` of `center` - within_r = np.where(d_2 <= r ** 2) + within_r = np.where(d_2 <= r**2) + if distance_vector: + return ( + shifted_coords[within_r], + np.sqrt(d_2[within_r]), + indices[within_r[0]], + images[within_r[1:]], + dist_vect[within_r], + ) + return ( shifted_coords[within_r], np.sqrt(d_2[within_r]), @@ -316,9 +328,7 @@ def find_all_matches(self, other_lattice, ltol=1e-5, atol=1): ] c_a, c_b, c_c = (cart[i] for i in inds) f_a, f_b, f_c = (frac[i] for i in inds) - l_a, l_b, l_c = ( - np.sum(c ** 2, axis=-1) ** 0.5 for c in (c_a, c_b, c_c) - ) + l_a, l_b, l_c = (np.sum(c**2, axis=-1) ** 0.5 for c in (c_a, c_b, c_c)) def get_angles(v1, v2, l1, l2): x = np.inner(v1, v2) / l1[:, None] / l2 From 74e5c468b31dd02ac8fc3d6254183fa64fa0efce Mon Sep 17 00:00:00 2001 From: knc6 Date: Fri, 25 Oct 2024 16:30:20 -0400 Subject: [PATCH 16/21] Fix text for Zur. --- jarvis/core/lattice.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jarvis/core/lattice.py b/jarvis/core/lattice.py index 03befb80..04da1e37 100644 --- a/jarvis/core/lattice.py +++ b/jarvis/core/lattice.py @@ -240,7 +240,7 @@ def reciprocal_lattice_crystallographic(self): return Lattice(self.reciprocal_lattice().matrix / (2 * np.pi)) def get_points_in_sphere( - self, frac_points, center, r, distance_vector=True + self, frac_points, center, r, distance_vector=False ): """ Find all points within a sphere from the point. From 6406822204cd202c4f4d07a34cb1edef2237a513 Mon Sep 17 00:00:00 2001 From: knc6 Date: Tue, 19 Nov 2024 13:53:42 -0500 Subject: [PATCH 17/21] Version update. --- jarvis/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jarvis/__init__.py b/jarvis/__init__.py index bccb3347..aae434fd 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -1,6 +1,6 @@ """Version number.""" -__version__ = "2024.10.10" +__version__ = "2024.10.30" import os diff --git a/setup.py b/setup.py index 119e5dbf..c0ce6d89 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ setup( name="jarvis-tools", - version="2024.10.10", + version="2024.10.30", long_description=long_d, install_requires=[ "numpy>=1.20.1", From 794c74f3618c892782c0979ad4fa31ecd33a8b12 Mon Sep 17 00:00:00 2001 From: knc6 Date: Tue, 19 Nov 2024 20:42:26 -0500 Subject: [PATCH 18/21] Lint fix. --- jarvis/__init__.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jarvis/__init__.py b/jarvis/__init__.py index f2e6522c..aae434fd 100644 --- a/jarvis/__init__.py +++ b/jarvis/__init__.py @@ -10,4 +10,4 @@ def test(*args): import pytest path = os.path.join(os.path.split(__file__)[0], "tests") - pytest.main(args=[path] + list(args)) \ No newline at end of file + pytest.main(args=[path] + list(args)) diff --git a/setup.py b/setup.py index 2f5f2c25..a20a226e 100644 --- a/setup.py +++ b/setup.py @@ -86,4 +86,4 @@ "Topic :: Scientific/Engineering", ], # scripts=glob.glob(os.path.join(JARVIS_DIR, "*")) -) \ No newline at end of file +) From b8fa3fe74a964e44f6e859bce4deaa6a4b6e2ae0 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Tue, 19 Nov 2024 21:07:52 -0500 Subject: [PATCH 19/21] Update action_build.yml --- .github/workflows/action_build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/action_build.yml b/.github/workflows/action_build.yml index 7c7c3ff6..d4e23ea4 100644 --- a/.github/workflows/action_build.yml +++ b/.github/workflows/action_build.yml @@ -9,8 +9,8 @@ jobs: matrix: os: ["ubuntu-latest"] steps: - - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v3 with: activate-environment: test environment-file: environment.yml From 2fed79c1031bcd75ed0ce42b192306bbbecc7d86 Mon Sep 17 00:00:00 2001 From: Kamal Choudhary Date: Tue, 19 Nov 2024 21:08:15 -0500 Subject: [PATCH 20/21] Update deploy_nist_pages.yml --- .github/workflows/deploy_nist_pages.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy_nist_pages.yml b/.github/workflows/deploy_nist_pages.yml index c15488a9..1027c11e 100644 --- a/.github/workflows/deploy_nist_pages.yml +++ b/.github/workflows/deploy_nist_pages.yml @@ -43,8 +43,8 @@ jobs: matrix: os: ["ubuntu-latest"] steps: - - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 + - uses: actions/checkout@v3 + - uses: conda-incubator/setup-miniconda@v3 with: activate-environment: test environment-file: environment.yml From 47227682f3a8577797539148e038d6b8362bd159 Mon Sep 17 00:00:00 2001 From: knc6 Date: Tue, 19 Nov 2024 23:06:37 -0500 Subject: [PATCH 21/21] License update. --- setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/setup.py b/setup.py index a20a226e..46b7fb6b 100644 --- a/setup.py +++ b/setup.py @@ -81,7 +81,6 @@ "Programming Language :: Python :: 3.6", "Development Status :: 4 - Beta", "Intended Audience :: Science/Research", - "License :: NIST License", "Operating System :: OS Independent", "Topic :: Scientific/Engineering", ],