JARVIS-Tools
The JARVIS-Tools is an open-access software package for atomistic data-driven materials design. JARVIS-Tools can be used for a) setting up calculations, b) analysis and informatics, c) plotting, d) database development and e) web-page development.
JARVIS-Tools empowers NIST-JARVIS (Joint Automated Repository for Various Integrated Simulations) repository which is an integrated framework for computational science using density functional theory, classical force-field/molecular dynamics and machine-learning. The NIST-JARVIS official website is: https://jarvis.nist.gov . This project is a part of the Materials Genome Initiative (MGI) at NIST (https://mgi.nist.gov/).
For more details, checkout our latest article: The joint automated repository for various integrated simulations (JARVIS) for data-driven materials design and YouTube videos
Documentation
https://jarvis-tools.readthedocs.io
Capabilities
- Software workflow tasks for preprcessing, executing and post-processing: VASP, Quantum Espresso, Wien2k BoltzTrap, Wannier90, LAMMPS, Scikit-learn, TensorFlow, LightGBM, Qiskit, Tequila, Pennylane, DGL, PyTorch.
- Several examples: Notebooks and test scripts to explain the package.
- Several analysis tools: Atomic structure, Electronic structure, Spacegroup, Diffraction, 2D materials and other vdW bonded systems, Mechanical, Optoelectronic, Topological, Solar-cell, Thermoelectric, Piezoelectric, Dielectric, STM, Phonon, Dark matter, Wannier tight binding models, Point defects, Heterostructures, Magnetic ordering, Images, Spectrum etc.
- Database upload and download: Download JARVIS databases such as JARVIS-DFT, FF, ML, WannierTB, Solar, STM and also external databases such as Materials project, OQMD, AFLOW etc.
- Access raw input/output files: Download input/ouput files for JARVIS-databases to enhance reproducibility.
- Train machine learning models: Use different descriptors, graphs and datasets for training machine learning models.
- HPC clusters: Torque/PBS and SLURM.
- Available datasets: Summary of several datasets .
Installation
We recommend installing miniconda environment from https://conda.io/miniconda.html
bash Miniconda3-latest-Linux-x86_64.sh (for linux) bash Miniconda3-latest-MacOSX-x86_64.sh (for Mac) Download 32/64 bit python 3.8 miniconda exe and install (for windows) Now, let's make a conda environment just for JARVIS:: conda create --name my_jarvis python=3.8 source activate my_jarvis
Method-1: Installation using pip:
pip install -U jarvis-tools
Method-2: Installation using conda:
conda install -c conda-forge jarvis-tools
Method-3: Installation using setup.py:
pip install numpy scipy matplotlib git clone https://github.com/usnistgov/jarvis.git cd jarvis python setup.py install
Note on installing additional dependencies for all modules to function:
pip install -r dev-requirements.txt
Example function
>>> from jarvis.core.atoms import Atoms
>>> box = [[2.715, 2.715, 0], [0, 2.715, 2.715], [2.715, 0, 2.715]]
>>> coords = [[0, 0, 0], [0.25, 0.25, 0.25]]
>>> elements = ["Si", "Si"]
>>> Si = Atoms(lattice_mat=box, coords=coords, elements=elements)
>>> density = round(Si.density,2)
>>> print (density)
2.33
>>>
>>> from jarvis.db.figshare import data
>>> dft_3d = data(dataset='dft_3d')
>>> print (len(dft_3d))
55723
>>> from jarvis.io.vasp.inputs import Poscar
>>> for i in dft_3d:
... atoms = Atoms.from_dict(i['atoms'])
... poscar = Poscar(atoms)
... jid = i['jid']
... filename = 'POSCAR-'+jid+'.vasp'
... poscar.write_file(filename)
>>> dft_2d = data(dataset='dft_2d')
>>> print (len(dft_2d))
1079
>>> for i in dft_2d:
... atoms = Atoms.from_dict(i['atoms'])
... poscar = Poscar(atoms)
... jid = i['jid']
... filename = 'POSCAR-'+jid+'.vasp'
... poscar.write_file(filename)
>>> # Example to parse DOS data from JARVIS-DFT webpages
>>> from jarvis.db.webpages import Webpage
>>> from jarvis.core.spectrum import Spectrum
>>> import numpy as np
>>> new_dist=np.arange(-5, 10, 0.05)
>>> all_atoms = []
>>> all_dos_up = []
>>> all_jids = []
>>> for ii,i in enumerate(dft_3d):
all_jids.append(i['jid'])
... try:
... w = Webpage(jid=i['jid'])
... edos_data = w.get_dft_electron_dos()
... ens = np.array(edos_data['edos_energies'].strip("'").split(','),dtype='float')
... tot_dos_up = np.array(edos_data['total_edos_up'].strip("'").split(','),dtype='float')
... s = Spectrum(x=ens,y=tot_dos_up)
... interp = s.get_interpolated_values(new_dist=new_dist)
... atoms=Atoms.from_dict(i['atoms'])
... ase_atoms=atoms.ase_converter()
... all_dos_up.append(interp)
... all_atoms.append(atoms)
... all_jids.append(i['jid'])
... filename=i['jid']+'.cif'
... atoms.write_cif(filename)
... break
... except Exception as exp :
... print (exp,i['jid'])
... pass
Find more examples at
Citing
Please cite the following if you happen to use JARVIS-Tools for a publication.
https://www.nature.com/articles/s41524-020-00440-1
Choudhary, K. et al. The joint automated repository for various integrated simulations (JARVIS) for data-driven materials design. npj Computational Materials, 6(1), 1-13 (2020).
References
Please see Publications related to JARVIS-Tools
How to contribute
For detailed instructions, please see Contribution instructions
Correspondence
Please report bugs as Github issues (https://github.com/usnistgov/jarvis/issues) or email to [email protected].
Funding support
NIST-MGI (https://www.nist.gov/mgi).
Code of conduct
Please see Code of conduct
Module structure
jarvis/ โโโ ai โ โโโ descriptors โ โ โโโ cfid.py โ โ โโโ coulomb.py โ โโโ gcn โ โโโ pkgs โ โ โโโ lgbm โ โ โ โโโ classification.py โ โ โ โโโ regression.py โ โ โโโ sklearn โ โ โ โโโ classification.py โ โ โ โโโ hyper_params.py โ โ โ โโโ regression.py โ โ โโโ utils.py โ โโโ uncertainty โ โ โโโ lgbm_quantile_uncertainty.py โโโ analysis โ โโโ darkmatter โ โ โโโ metrics.py โ โโโ defects โ โ โโโ surface.py โ โ โโโ vacancy.py โ โโโ diffraction โ โ โโโ xrd.py โ โโโ elastic โ โ โโโ tensor.py โ โโโ interface โ โ โโโ zur.py โ โโโ magnetism โ โ โโโ magmom_setup.py โ โโโ periodic โ โ โโโ ptable.py โ โโโ phonon โ โ โโโ force_constants.py โ โ โโโ ir.py โ โโโ solarefficiency โ โ โโโ solar.py โ โโโ stm โ โ โโโ tersoff_hamann.py โ โโโ structure โ โ โโโ neighbors.py โ โ โโโ spacegroup.py โ โโโ thermodynamics โ โ โโโ energetics.py โ โโโ topological โ โ โโโ spillage.py โโโ core โ โโโ atoms.py โ โโโ composition.py โ โโโ graphs.py โ โโโ image.py โ โโโ kpoints.py โ โโโ lattice.py โ โโโ pdb_atoms.py โ โโโ specie.py โ โโโ spectrum.py โ โโโ utils.py โโโ db โ โโโ figshare.py โ โโโ jsonutils.py โ โโโ lammps_to_xml.py โ โโโ restapi.py โ โโโ vasp_to_xml.py โ โโโ webpages.py โโโ examples โ โโโ lammps โ โ โโโ jff_test.py โ โ โโโ Al03.eam.alloy_nist.tgz โ โโโ vasp โ โ โโโ dft_test.py โ โ โโโ SiOptb88.tgz โโโ io โ โโโ boltztrap โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ calphad โ โ โโโ write_decorated_poscar.py โ โโโ lammps โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ pennylane โ โ โโโ inputs.py โ โโโ phonopy โ โ โโโ fcmat2hr.py โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ qe โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ qiskit โ โ โโโ inputs.py โ โโโ tequile โ โ โโโ inputs.py โ โโโ vasp โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ wannier โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ wanniertools โ โ โโโ inputs.py โ โ โโโ outputs.py โ โโโ wien2k โ โ โโโ inputs.py โ โ โโโ outputs.py โโโ tasks โ โโโ boltztrap โ โ โโโ run.py โ โโโ lammps โ โ โโโ templates โ โ โโโ lammps.py โ โโโ phonopy โ โ โโโ run.py โ โโโ vasp โ โ โโโ vasp.py โ โโโ queue_jobs.py โโโ tests โ โโโ testfiles โ โ โโโ ai โ โ โโโ analysis โ โ โ โโโ darkmatter โ โ โ โโโ defects โ โ โ โโโ elastic โ โ โ โโโ interface โ โ โ โโโ magnetism โ โ โ โโโ periodic โ โ โ โโโ phonon โ โ โ โโโ solar โ โ โ โโโ stm โ โ โ โโโ structure โ โ โ โโโ thermodynamics โ โ โ โโโ topological โ โ โโโ core โ โ โโโ db โ โ โโโ io โ โ โ โโโ boltztrap โ โ โ โโโ calphad โ โ โ โโโ lammps โ โ โ โโโ pennylane โ โ โ โโโ phonopy โ โ โ โโโ qiskit โ โ โ โโโ qe โ โ โ โโโ tequila โ โ โ โโโ vasp โ โ โ โโโ wannier โ โ โ โโโ wanniertools โ โ โ โโโ wien2k โ โ โโโ tasks โ โ โ โโโ test_lammps.py โ โ โ โโโ test_vasp.py โโโ README.rst