• Stars
    star
    279
  • Rank 144,891 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created about 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

JARVIS-Tools: an open-source software package for data-driven atomistic materials design. Publications: https://scholar.google.com/citations?user=3w6ej94AAAAJ
https://img.shields.io/github/v/tag/usnistgov/jarvis https://img.shields.io/travis/usnistgov/jarvis/master.svg?label=Travis%20CI https://ci.appveyor.com/api/projects/status/d8na8vyfm7ulya9p/branch/master?svg=true https://img.shields.io/codecov/c/github/knc6/jarvis https://pepy.tech/badge/jarvis-tools https://img.shields.io/github/commit-activity/y/usnistgov/jarvis https://img.shields.io/github/repo-size/usnistgov/jarvis

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

https://www.ctcms.nist.gov/~knc6/images/logo/jarvis-mission.png

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

  1. https://jarvis-tools.readthedocs.io/en/master/tutorials.html
  2. https://github.com/JARVIS-Materials-Design/jarvis-tools-notebooks
  3. https://github.com/usnistgov/jarvis/tree/master/jarvis/tests/testfiles

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

https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square

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

More Repositories

1

macos_security

macOS Security Compliance Project
YAML
1,603
star
2

800-63-3

Home to public development of NIST Special Publication 800-63-3: Digital Authentication Guidelines
CSS
699
star
3

OSCAL

Open Security Controls Assessment Language (OSCAL)
XSLT
572
star
4

fipy

FiPy is a Finite Volume PDE solver written in Python
Python
430
star
5

jsip

JSIP: Java SIP specification Reference Implementation (moved from java.net)
Java
277
star
6

frvt

Repository for the Face Recognition Vendor Test (FRVT)
C++
259
star
7

trec_eval

Evaluation software used in the Text Retrieval Conference
C
224
star
8

oscal-content

NIST SP 800-53 content and other OSCAL content examples
Shell
218
star
9

alignn

Atomistic Line Graph Neural Network https://scholar.google.com/citations?user=9Q-tNnwAAAAJ&hl=en
Python
192
star
10

SP800-90B_EntropyAssessment

The SP800-90B_EntropyAssessment C++package implements the min-entropy assessment methods included in Special Publication 800-90B.
C++
189
star
11

SCTK

C
187
star
12

PrivacyEngCollabSpace

Privacy Engineering Collaboration Space
Python
186
star
13

REFPROP-wrappers

Wrappers around NIST REFPROP for languages such as Python, MATLAB, etc.
Mathematica
160
star
14

ACVP

Industry Working Group on Automated Cryptographic Algorithm Validation
HTML
151
star
15

mobile-threat-catalogue

NIST/NCCoE Mobile Threat Catalogue
HTML
141
star
16

trojai-literature

129
star
17

NFIQ2

Optical live-scan and ink fingerprint image quality assessment tool
C++
127
star
18

MIST

Microscopy Image Stitching Tool
Java
120
star
19

applesec

Draft SP 800-179r1 macOS 10.12 Security project files: draft publication, security settings spreadsheet and Bash script implementation of settings.
Shell
116
star
20

ndn-dpdk

NDN-DPDK: High-Speed Named Data Networking Forwarder
Go
114
star
21

SFA

The NIST STEP File Analyzer and Viewer (SFA) generates a spreadsheet and a visualization from an ISO 10303 Part 21 STEP file.
Tcl
109
star
22

ARIAC

Repository for ARIAC (Agile Robotics for Industrial Automation Competition), consisting of kit building and assembly in a simulated warehouse
C++
104
star
23

NEMO

NEMO is a laboratory logistics web application. Use it to schedule reservations, control tool access, track maintenance issues, and more.
Python
98
star
24

jsfive

A pure javascript HDF5 reader
JavaScript
92
star
25

h5wasm

A WebAssembly HDF5 reader/writer library
C++
81
star
26

pyMCR

pyMCR: Multivariate Curve Resolution for Python
Python
79
star
27

Metrology

Metrology for software; software for metrology
JavaScript
65
star
28

psc-ns3

Public Safety Communication modeling tools based on ns-3
C++
62
star
29

STP2X3D

Translator from STEP format to X3D format
C++
62
star
30

combinatorial-testing-tools

Tools for combinatorial testing developed by the NIST ACTS project
Java
61
star
31

chemnlp

ChemNLP: A Natural Language Processing based Library for Materials Chemistry Text Data
Python
59
star
32

jarvis_leaderboard

Explore State-of-the-Art Materials Design Methods: https://www.nature.com/articles/s41524-024-01259-w
Jupyter Notebook
52
star
33

COSMOSAC

A Benchmark Implementation of COSMO-SAC
HTML
48
star
34

pfhub

The CHiMaD Phase Field Community Website
HTML
48
star
35

Lightweight-Cryptography-Benchmarking

C
48
star
36

SimulatedRadarWaveformGenerator

A software tool that generates simulated radar signals and creates RF datasets for developing and testing machine/deep learning detection algorithms.
MATLAB
47
star
37

REFPROP-cmake

Small repo with CMake build system for building REFPROP shared library
CMake
46
star
38

iheos-toolkit2

XDS Toolkit
Java
44
star
39

OpenSeadragonFiltering

OpenSeadragon filtering plugin
JavaScript
44
star
40

dioptra

Test Software for the Characterization of AI Technologies
Python
43
star
41

pmml_pymcBN

Jupyter Notebook
42
star
42

teqp

A highly efficient, flexible, and accurate implementation of thermodynamic EOS powered by automatic differentiation
C++
42
star
43

ActEV_Scorer

Scoring software for the TRECVID Activities in Extended Video (ActEV) evaluation
Python
41
star
44

HTGS

The Hybrid Task Graph Scheduler API
C++
40
star
45

sctools

Tools for security content automation, baseline tailoring, and overlay development.
HTML
39
star
46

hiperc

High Performance Computing Strategies for Boundary Value Problems
HTML
39
star
47

ocr-pipeline

Convert a corpus of PDF to clean text files on a distributed architecture
Python
38
star
48

OpenSeadragonScalebar

OpenSeadragon scalebar plugin
JavaScript
37
star
49

mosaic

A modular single-molecule analysis interface
Python
37
star
50

oscal-cli

A simple open source command line tool to support common operations over OSCAL content.
Java
37
star
51

ACVP-Server

A repository tracking releases of NIST's ACVP server. See www.github.com/usnistgov/ACVP for the protocol.
C#
36
star
52

vulntology

Development of the NIST vulnerability data ontology (Vulntology).
JavaScript
36
star
53

pyPRISM

A framework for conducting polymer reference interaction site model (PRISM) calculations
Python
35
star
54

DT4SM

Digital Thread for Smart Manufacturing
C#
34
star
55

OOF3D

Object Oriented for Finite Elements 3D version code.
Python
34
star
56

hugo-uswds

Implementation of the The United States Web Design System (USWDS) 2.0 using the Hugo open-source static site generator
SCSS
33
star
57

rcslib

NIST Real-Time Control Systems Library including Posemath, NML communications & Java Plotter
Java
33
star
58

PrivacyFrmwkResources

This repository contains resources to support organizations’ use of the Privacy Framework. Resources include crosswalks, Profiles, guidelines, and tools. NIST encourages new contributions and feedback on these resources as part of the ongoing collaborative effort to improve implementation of the Privacy Framework.
33
star
59

dataplot

Source code and auxiliary files for dataplot.
Fortran
32
star
60

oscal-tools

Tools for the OSCAL project
XSLT
32
star
61

pyramidio

Image pyramid reader and writer
Java
31
star
62

Voting

The NIST Voting Program repository
31
star
63

800-63-4

CSS
31
star
64

metaschema

Documentation for and implementations of the metaschema modeling language
Shell
31
star
65

MDCS

CSS
31
star
66

SDNist

SDNist: Benchmark data and evaluation tools for data synthesizers.
HTML
30
star
67

phasefield-precipitate-aging

Phase field model for precipitate aging in ternary analogues to Ni-based superalloys
Cuda
30
star
68

pySCATMECH

pySCATMECH is a Python interface to SCATMECH: Polarized Light Scattering C++ Class Library
C++
30
star
69

AGA8

Files associated with the AGA8 standard
Rust
30
star
70

feasst

The Free Energy and Advanced Sampling Simulation Toolkit (FEASST) is a free, open-source, modular program to conduct molecular and particle-based simulations with flat-histogram Monte Carlo methods.
C++
29
star
71

NetSimulyzer-ns3-module

A flexible 3D visualizer for displaying, debugging, presenting, and understanding ns-3 scenarios.
C++
28
star
72

liboscal-java

A Java library to support processing OSCAL content
Java
28
star
73

OFDM-GAN

Python
28
star
74

lantern

Interpretable genotype-phenotype landscape modeling
Python
28
star
75

ChebTools

C++ tools for working with Chebyshev expansion interpolants
C++
27
star
76

MediScore

Scoring tools for Media Forensics Evaluations
HTML
27
star
77

hedgehog

C++
27
star
78

NetSimulyzer

A flexible 3D visualizer for displaying, debugging, presenting, and understanding ns-3 scenarios.
C++
27
star
79

atomvision

Deep learning framework for atomistic image data
Python
26
star
80

REFPROP-issues

A repository solely used for reporting issues with NIST REFPROP
26
star
81

SCATMECH

SCATMECH: Polarized light scattering C++ class library
C++
26
star
82

youbot

Robotic platform for industrial control systems cybersecurity research. We use the research-grade Youbot as the robotics platform for our research. The ROS framework is used for inter-process communication, and Python is the language used for application development.
Python
26
star
83

ThreeBodyTB.jl

Accurate and fast tight-binding calculations, using pre-fit coefficients and three-body terms.
Julia
25
star
84

Circuits

Circuits for functions of interest to cryptography
C++
25
star
85

OOF2

Object Oriented for Finite Elements 2D version.
C++
25
star
86

F4DE

Framework for Detection Evaluation (F4DE) : set of evaluation tools for detection evaluations and for specific NIST-coordinated evaluations
Perl
24
star
87

optbayesexpt

Optimal Bayesian Experiment Design
Python
24
star
88

blockmatrix

This project is developing code to implement features and extensions to the NIST Cybersecurity Whitepaper, "A Data Structure for Integrity Protection with Erasure Capability". The block matrix data structure may have utility for incorporation into applications requiring integrity protection that currently use permissioned blockchains. This capability could for example be useful in meeting privacy requirements such as the European Union General Data Protection Regulation (GDPR), which requires that organizations make it possible to delete all information related to a particular individual, at that person's request.
Java
24
star
89

libbiomeval

Software components for biometric technology evaluations.
C++
24
star
90

ElectionResultsReporting

Common data format specification for election results reporting data
23
star
91

oscal-deep-diff

Open Security Controls Assessment Language (OSCAL) Deep Differencing Tool
TypeScript
22
star
92

IFA

The NIST IFC File Analyzer (IFA) generates a spreadsheet from an IFC file.
Tcl
22
star
93

ns3-oran

A module that can be used to model and simulate O-RAN-like behavior in ns-3.
C++
22
star
94

MUD-PD

A tool for characterizing the network behavior of IoT Devices. The primary intended use is to assist in the generation of allowlist files formatted according to the Manufacturer Usage Description specification.
Python
21
star
95

texture

Python scripts for analysis of crystallographic texture
Jupyter Notebook
21
star
96

trojai-example

Example TrojAI Submission
21
star
97

blossom-case-study

A case study for ACSAC 2022 utilizing OSCAL with a custom GitHub action to automate assessments.
HTML
21
star
98

BiometricEvaluation

NIST Image Group Biometric Repositories
20
star
99

WIPP

Web Image Processing Pipeline (WIPP)
Shell
20
star
100

CastVoteRecords

Common data format specification for cast vote records
19
star