{"id":21479,"library":"jarvis-tools","title":"JARVIS-Tools","description":"jarvis-tools is an open-source Python package for data-driven atomistic materials design, developed by NIST. It provides modules for crystal structure analysis, high-throughput DFT workflows, machine learning descriptors, and access to the JARVIS-DFT and JARVIS-FF databases. Current version is 2026.4.2, released monthly (around end of each month).","status":"active","version":"2026.4.2","language":"python","source_language":"en","source_url":"https://github.com/atomgptlab/jarvis-tools","tags":["materials-science","dft","machine-learning","crystal-structure","high-throughput","materials-design","jarvis"],"install":[{"cmd":"pip install jarvis-tools","lang":"bash","label":"Release version"},{"cmd":"pip install git+https://github.com/atomgptlab/jarvis-tools.git","lang":"bash","label":"Development version"}],"dependencies":[{"reason":"core numerical operations","package":"numpy","optional":false},{"reason":"scientific computing","package":"scipy","optional":false},{"reason":"space group symmetry","package":"spglib","optional":false},{"reason":"data handling","package":"pandas","optional":false},{"reason":"materials analysis (legacy dependency, may be phased out)","package":"pymatgen","optional":true},{"reason":"plotting (optional but required for some visualization)","package":"matplotlib","optional":true}],"imports":[{"note":"Atoms class moved to jarvis.core.atoms around version 2022.x. Old import path from VASP is incorrect.","wrong":"from jarvis.io.vasp.outputs import Atoms","symbol":"Atoms","correct":"from jarvis.core.atoms import Atoms"},{"note":"Graph is not directly in core; must import from jarvis.core.graphs.","wrong":"from jarvis.core import Graph","symbol":"Graph","correct":"from jarvis.core.graphs import Graph"},{"note":"Utility functions are under jarvis.core.utils, not directly on Atoms object in older API.","wrong":"","symbol":"get_fractional_coordinates","correct":"from jarvis.core.utils import get_fractional_coordinates"}],"quickstart":{"code":"from jarvis.core.atoms import Atoms\nfrom jarvis.core.specie import Specie\n\n# Create an atomistic structure (diamond silicon)\ncoords = [[0.0, 0.0, 0.0], [0.5, 0.5, 0.5]]\nelements = [\"Si\", \"Si\"]\nlattice = [[0.0, 0.0, 1.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0]]  # cubic, a=1.0\n\natoms = Atoms(lattice_mat=lattice, coords=coords, elements=elements)\nprint(atoms)\nprint(\"Lattice:\", atoms.lattice_mat)\nprint(\"Number of atoms:\", len(atoms))\n\n# Convert to fractional coordinates (using utility)\nfrom jarvis.core.utils import get_fractional_coordinates\nfrac = get_fractional_coordinates(atoms.coords, atoms.lattice_mat)\nprint(\"Fractional coords:\", frac)","lang":"python","description":"Create a simple atomic structure and print basic properties."},"warnings":[{"fix":"Use 'from jarvis.core.atoms import Atoms' instead.","message":"The 'Atoms' class was moved from jarvis.io.vasp.outputs to jarvis.core.atoms in 2022. Old imports will break.","severity":"breaking","affected_versions":">=2022"},{"fix":"Use 'from jarvis.core.graphs import Graph'.","message":"The 'Graph' class is not directly importable from jarvis.core; must be imported from jarvis.core.graphs.","severity":"breaking","affected_versions":"all"},{"fix":"Use jarvis.core.utils functions as needed; check documentation for new API.","message":"Functions like 'jarvis.core.utils.get_fractional_coordinates' replaced older methods on Atoms (e.g., atoms.fractional_coords). Check deprecation warnings.","severity":"deprecated","affected_versions":">=2024"},{"fix":"Install via 'pip install jarvis-tools'.","message":"The package 'jarvis-tools' should be installed with exact hyphen, not underscore (jarvis_tools). pip install jarvis_tools will fail if not found.","severity":"gotcha","affected_versions":"all"},{"fix":"Set environment variable JARVIS_CACHE_DIR to a different path.","message":"Many JARVIS-DFT database functions require an internet connection and may cache data in ~/.cache/atomgptlab/ by default. If you get connection errors, check network or set JARVIS_CACHE_DIR.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Upgrade: pip install --upgrade jarvis-tools. Also ensure you have correct import path: from jarvis.core.atoms import Atoms.","cause":"Importing from jarvis.core.atoms but the version is old (<2022) or package not installed correctly.","error":"ModuleNotFoundError: No module named 'jarvis.core.atoms'"},{"fix":"Use atoms.cart_coords or from jarvis.core.utils import get_fractional_coordinates for coordinates.","cause":"Trying to access atoms.coords directly but newer version uses atoms.cart_coords or requires utility function.","error":"AttributeError: 'Atoms' object has no attribute 'coords'"},{"fix":"Use 'from jarvis.io.vasp.inputs import Poscar' and call Poscar.from_file('POSCAR').atoms.","cause":"Using an outdated reader for VASP files. The POSCAR parser has been updated and expects specific format.","error":"ValueError: Could not parse POSCAR file"},{"fix":"Provide lattice as a list of three vectors, each a list of three floats: [[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]].","cause":"Passing lattice vectors incorrectly (e.g., 1D array or wrong shape).","error":"TypeError: lattice_mat must be a 3x3 list or array"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}