Code Monkey home page Code Monkey logo

usnistgov / jarvis Goto Github PK

View Code? Open in Web Editor NEW
274.0 27.0 117.0 239.15 MB

JARVIS-Tools: an open-source software package for data-driven atomistic materials design. Publications: https://scholar.google.com/citations?user=3w6ej94AAAAJ

Home Page: https://pages.nist.gov/jarvis/

License: Other

Python 94.33% Nix 0.08% Shell 0.01% AMPL 5.50% HTML 0.09%
dft md vasp lammps scikit-learn tensorflow pytorch atomistic-simulations materials-informatics mgi ai quantum-computing

jarvis's Introduction

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.

Detailed documentation available at: https://pages.nist.gov/jarvis/

image image image image image image image image image image image image image image image

jarvis's People

Contributors

bdecost avatar dependabot[bot] avatar kfgarrity avatar knc6 avatar lmmentel avatar mbercx avatar reid-a avatar subhasishmandal avatar tavazza avatar wd15 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jarvis's Issues

cif2cell breaking conda-forge recipe

cif2cell is not updated on conda-forge (it's only available for Python 2.7). It is up to date on pip at version 2.0.0a3. However, it's also not possible to pip install to build a conda-forge recipe.

Possible options to fix this are:

  • Don't make cif2cell a strict dependency (make it optional) until it's updated on conda-forge. Good option if it's only a niche usage in Jarvis. Raise an error in jarvis where it's used and say that you need to install with pip install. Try to quarantine it's usage a bit so the import is only in the function where it's used.
  • Contact the authors and ask them to update conda-forge recipe
  • Remove its usage and look for alternatives.

Adding Wien2k k-points

There is some problem with our existing code to generate wien2k k-path given a cif file, namely it gives some weird lines in the band plot. No problem in running and getting the energy eignevalues. This is due to sudden jump in the k-path that happens for certain lattice vectors. Simple cubics are fine.

Move website to pages.nist.gov

Using pages.nist.gov would allow the site to use templates without requiring a backend app. Jekyll is very good for processing smalll/medium volume static data, which is currently an issue for the jarvis web site.

Use only build time dependencies in setup.py

Make the dependencies in setup.py just the build time dependencies and not the run time dependencies. Try not to use == as this makes things difficult to install. Use requirements.txt to have the full set of dependencies.

CHGCAR bug

CHGCAR gives error for JVASP-4798
UnboundLocalError: local variable 'found' referenced before assignment

Eliminate all junk produced by tests

When tests are run no files should be written to anywhere but temporary directories given by the OS. Furthermore all files in temporary directories should be removed.

Problems in Getting real and imag. dielectric function data.

Hi everyone.

I'm a newbie to using Jarvis.I have encountered some problems.I want to use this code to get the dielectric matrix.
https://github.com/usnistgov/jarvis/blob/master/jarvis/io/vasp/outputs.py
dielectric_loptics

When I use vasp.5.4.1 the code to extract the data works, but when I use vasp.5.4.4 an error occurs.

It shows :
Traceback (most recent call last):
real, imag = self.dielectric_loptics
File "/home/***/anaconda3/lib/python3.8/site-packages/jarvis/io/vasp/outputs.py", line 1130, in dielectric_loptics
tmp = self.ionic_steps[-1]["dielectricfunction"]["real"]["array"][
TypeError: list indices must be integers or slices, not str

Could anyone help me how I should solve this problem?
Thank you all!

Lin

Unnecessary files written during tests

The following files are written to the working directory when running the tests

jarvis/db/jdft_2d-4-26-2020.json
jarvis/db/jdft_3d-4-26-2020.json
jarvis/db/jff1.json
jarvis/db/jml_3d-4-26-2020.json
jarvis/examples/vasp/SiOptb88/CHGCAR

It might be better to write those to a temporary directory that's written and read from within a context manager so they are always deleted even if the test suite doesn't finish or something goes wrong. py.test and flask have things to help with that during testing.

Installation tests

Enable testing of an installed version of jarvis.

>>> import jarvis
>>> jarvis.test()

That way you have some idea that javis is working beyond simply importing it without having to clone and run the tests.

PyMKS does this, see this. It basically invoked pytest inside the function.

Use temporary files / directories for testing files and remove

Don't generate cruft when running the tests. Use /tmp for all files created during the tests and ensure that these files are removed. For example, the following are generated when running the tests:

jarvis/tests/POSCAR-Surf-1_0_0.vasp
jarvis/tests/POSCAR-Surf-1_1_0.vasp
jarvis/tests/POSCAR-Surf-1_1_1.vasp
jarvis/tests/POSCAR-bulk.vasp
jarvis/tests/POSCAR-cvn.vasp
jarvis/tests/POSCAR-vacancy_1_mult-1_sitespecie-Al.vasp

Use "with" statements to make sure these get deleted even in the event of failures.

Speed up CFID

from jarvis.core.atoms import Atoms
a=Atoms.from_poscar('POSCAR')
from jarvis.ai.descriptors.cfid import CFID
desc=CFID(a).get_comp_descp()

####################################Example POSCAR#########################################
P4O24C2N4H40
1.0
13.18 0.0 0.0
0.0 9.275 0.0
0.0 0.0 6.245
P H C N O
4 40 12 4 24
Cartesian
12.9448688 0.053887750000000005 1.4161162
6.825131199999995 9.221112250000001 4.5386162
6.354868800000005 4.583612250000001 4.828883800000001
0.235131200000001 4.69138775 1.7063838000000002
5.113839999999999 8.162 0.18110500000000015
4.085800000000006 8.10635 3.38479
2.6755399999999923 7.948675 2.4105700000000003
1.489339999999994 7.0861 4.47142
2.662359999999999 7.151025000000001 5.277025
1.9770000000000045 5.69485 5.139635
3.874920000000006 5.741225 3.80945
9.305079999999993 1.103725 5.558050000000001
13.166820000000001 2.6248250000000004 1.3239400000000001
0.3426799999999974 4.0068 3.615855
1.4761600000000012 1.113000000000001 3.303605
2.504199999999999 1.168649999999999 0.2622899999999999
3.914460000000002 1.3263250000000002 5.53307
5.10066 2.1889 1.3489200000000001
3.9276400000000007 2.123975000000001 2.154525
4.613000000000001 3.580150000000001 2.017135
2.7150799999999995 3.5337750000000003 0.68695
3.993539999999999 3.570875 6.05765
6.576820000000007 2.0126750000000007 4.921060000000001
6.932679999999997 0.6307000000000006 2.629145
8.066160000000002 3.5244999999999993 2.941395
9.094199999999994 3.468850000000001 5.98271
10.504460000000007 3.311175 0.71193
11.690660000000006 2.4486000000000003 4.89608
10.51764 2.513524999999999 4.0904750000000005
11.202999999999996 1.057349999999999 4.227865
6.247320000000003 5.268200000000001 0.493355
6.603179999999993 6.650175 4.44644
2.596459999999989 5.704125 2.9351499999999997
10.6758 5.806150000000001 2.8602100000000004
13.193179999999998 -2.012675 1.79856
12.83732 -0.6307 -0.493355
11.70384 5.750500000000001 6.063895
9.26554 5.963825000000001 3.83443
8.07934 6.8264000000000005 1.77358
9.25236 6.761475 0.967975
8.567 8.21765 1.105365
10.464920000000001 8.171275 2.43555
10.58354000000001 1.066625 0.18735000000000018
9.186459999999999 8.208375 3.3098500000000004
8.827964 7.3476550000000005 1.571242
10.994756 6.739215000000001 4.6194265
10.107742 6.434995 3.4559830000000002
10.942035999999995 1.9273449999999999 4.693742
9.662258000000003 2.8400050000000006 0.33348300000000003
8.775244000000011 2.535785000000001 1.4969265000000003
3.5177419999999957 7.477505000000001 2.789017
4.404755999999989 7.173285 1.6255734999999998
2.237964000000005 6.564845 4.673757999999999
3.072257999999998 1.7974949999999998 5.911517
4.352036000000001 2.7101550000000003 1.551258
2.185243999999999 2.101714999999999 4.7480735
3.490064000000002 3.023650000000001 0.3834430000000001
10.08006399999999 1.6138499999999993 5.861557
3.09993600000001 6.25135 3.5059430000000003
9.689936 7.66115 2.739057
1.7194628000000032 4.7515825 1.6299450000000002
12.664662000000002 5.8775675000000005 1.1690639999999999
11.537771999999999 7.811405 4.753694
6.918182000000008 5.826555 4.077985
11.092288 5.7310225 5.4262805
13.38429 -0.07234499999999999 -0.0843075
11.4605372 0.1140825 1.4925549999999999
13.695337999999998 1.2400675 1.9534360000000002
13.508181999999998 -1.1890550000000002 2.1670149999999997
12.97571 4.565155000000001 3.2068074999999996
2.0877119999999985 1.093522500000001 3.9412195
8.677712000000003 3.543977499999999 2.3037805000000002
8.232228000000012 1.4635949999999995 1.631194
6.3857100000000075 0.07234500000000027 3.0381925
8.309462799999991 9.1609175 4.615055
6.074662000000007 8.0349325 5.075936
6.261817999999992 1.1890550000000009 5.289515
4.947771999999987 6.101095000000001 1.491306
4.502287999999996 8.1814775 0.8187194999999999
6.794289999999992 4.7098450000000005 0.0843075
4.870537200000008 4.523417500000001 4.752445
7.105337999999993 3.3974325 4.291564
1.6422280000000005 3.173905000000001 4.613806
12.851818000000002 3.4484450000000004 0.9554850000000001
#####################################################

JARVIS-DFT Latest 3D Dataset issues

  • Ehull available for a lot less data than before
  • Max IR mode available on much smaller range than before
  • Add an automatic dataset sanity checker (Max-Min val shouldn't change, average shouldn't change much (tol = 10%), number of datapoints (shouldn't decrease)

dedication to the public domain

Since the developers are employees of NIST, their contributions to this repository are automatically dedicated to the public domain, so the assignment of copyright to "The National Institute of Standards and Technology" in LICENSE is preempted.

Please replace the contents of LICENSE with the following text, or similar, adapted from https://www.nist.gov/director/licensing:

Public Domain

This software was developed by employees of the
[National Institute of Standards and Technology](http://www.nist.gov),
an agency of the Federal Government. Pursuant to
[title 17 section 105](https://www.copyright.gov/title17/92chap1.html#105)
of the United States Code, works of NIST employees are not subject to
copyright protection in the United States and are considered to be in
the public domain. NIST assumes no responsibility whatsoever for the
use of this software by other parties, and makes no guarantees, expressed or
implied, about its quality, reliability, or any other characteristic.
We would appreciate acknowledgement if the software is used.

To the extent that NIST may hold copyright in countries other than the
United States, you are hereby granted the non-exclusive irrevocable
and unconditional right to print, publish, prepare derivative works and
distribute this software, in any medium, or authorize others to do so
on your behalf, on a royalty-free basis throughout the world.

You may improve, modify, and create derivative works of the software or any
portion of the software, and you may copy and distribute such modifications
or works. Modified works should carry a notice stating that you changed
the software and should note the date and nature of any such change. Please
explicitly acknowledge the National Institute of Standards and Technology
as the original source, by linking back to
[this repository](https://github.com/usnistgov/jarvis) or
[the website](https://www.ctcms.nist.gov/~knc6/JARVIS.html).

This software can be redistributed and/or modified freely provided that any
derivative works bear some notice that they are derived from it, and any
modified versions bear some notice that they have been modified.

Release versioning and tagging

I'm currently implementing an automatic build of JARVIS for our HPC, using the Easybuild tool. I'm having some difficulty with Jarvis due to the variable version formatting and also the inconsistency between the GitHub versioning/tagging and the version specified inside setup.py. Can I request that this is standardised going forwards, e.g. using vYYYY.MM.DD (v2018.11.06 in the case of the most recent release)?

Running the tests modifies a whole bunch of json files

Running the tests modifies a bunch of json files and leaves the repository in a modified state. Tests should never modify the contents of the repository. Tests should write all data to /tmp and then delete any files that are written.

After running

$ py.tests

the repo is left with

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   jarvis/vasp/examples/SiOptb88/ENCUTbulk@mp_149-500.json
    modified:   jarvis/vasp/examples/SiOptb88/ENCUTbulk@mp_149-600.json
    modified:   jarvis/vasp/examples/SiOptb88/ENCUTbulk@mp_149-650.json
    modified:   jarvis/vasp/examples/SiOptb88/ENCUTbulk@mp_149-700.json
...

Do these json files need to be stored if they can be generated quickly?

Edit: also a weird directory is created jarvis/tests/tmp/. Tests should not create any directories in the repository either. Use /tmp or whatever the system directory is for the OS. Python has OS independent ways to write to temporary storage which work across multiple platforms.

Typo

Hello, I just wanted to let you know there seems to be a typo here (NABNDS should read NBANDS).

incar_dict.update({"NEDOS":5000,"LORBIT":11,"IBRION":1,"ENCUT":encut,"NABNDS":3*int(nbands),"LOPTICS":'.TRUE.','METAGGA':'MBJ','ISYM':0,"SIGMA":0.1})

Ensure that the test suite can be run from the base directory

Currently there are hardwired paths that depend on where the tests are executed. Replace these with paths that use the __file__ to determine the path. For example,

 def test_get_aea():
-   strt=Structure.from_file('../vasp/examples/SiOptb88/MAIN-ELASTIC-bulk@mp_149/POSCAR')
-   ar=get_area(strt)
-   assert ar==30.180025513225004
-
+    file_path = os.path.dirname(os.path.abspath(__file__))
+    poscar_path = '../vasp/examples/SiOptb88/MAIN-ELASTIC-bulk@mp_149/POSCAR'
+    full_path = os.path.join(file_path, poscar_path)
+    print('full_path:', full_path)
+    strt=Structure.from_file(full_path)
+    ar=get_area(strt)
+    assert ar==30.180025513225004

Update vasp_to_xml.py

Fix https://github.com/usnistgov/jarvis/blob/master/jarvis/db/vasp_to_xml.py

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.