A Python library for electronic structure pre/post-processing

Overview

PyPI version conda-forge version Build Status HitCount PyPI - Downloads

PyProcar

PyProcar is a robust, open-source Python library used for pre- and post-processing of the electronic structure data coming from DFT calculations. PyProcar provides a set of functions that manage data obtained from the PROCAR format. Basically, the PROCAR format is a projection of the Kohn-Sham states over atomic orbitals. That projection is performed to every k-point in the considered mesh, every energy band and every atom. PyProcar is capable of performing a multitude of tasks including plotting plain and spin/atom/orbital projected band structures and Fermi surfaces- both in 2D and 3D, Fermi velocity plots, unfolding bands of a super cell, comparing band structures from multiple DFT calculations, plotting partial density of states and generating a k-path for a given crystal structure.

Currently supports:

  1. VASP
  2. Elk
  3. Quantum Espresso
  4. Abinit
  5. Lobster

Documentation

https://romerogroup.github.io/pyprocar/

Developers

Francisco Muñoz
Aldo Romero
Sobhit Singh
Uthpala Herath
Pedram Tavadze
Eric Bousquet
Xu He
Reese Boucher
Logan Lang
Freddy Farah

How to cite

If you have used PyProcar in your work, please cite:

Uthpala Herath, Pedram Tavadze, Xu He, Eric Bousquet, Sobhit Singh, Francisco Muñoz, and Aldo H. Romero. "PyProcar: A Python library for electronic structure pre/post-processing". Computer Physics Communications 251 (2020): 107080.

Thank you.

BibTex:

@article{HERATH2020107080,
title = "PyProcar: A Python library for electronic structure pre/post-processing",
journal = "Computer Physics Communications",
volume = "251",
pages = "107080",
year = "2020",
issn = "0010-4655",
doi = "https://doi.org/10.1016/j.cpc.2019.107080",
url = "http://www.sciencedirect.com/science/article/pii/S0010465519303935",
author = "Uthpala Herath and Pedram Tavadze and Xu He and Eric Bousquet and Sobhit Singh and Francisco Muñoz and Aldo H. Romero",
keywords = "DFT, Bandstructure, Electronic properties, Fermi-surface, Spin texture, Python, Condensed matter",
}

Mailing list

Please post your questions on our forum.

https://groups.google.com/d/forum/pyprocar

Dependencies

matplotlib
numpy
scipy
seekpath
ase
scikit-image
pychemia
pyvista

Installation

with pip:

pip install pyprocar

with conda:

conda install -c conda-forge pyprocar

Usage

Typical use is as follows

import pyprocar
pyprocar.bandsplot('PROCAR',outcar='OUTCAR',mode='plain',code='vasp')

Refer to the documentation for further details.

Stand-alone mode:

procar.py -h

will bring a help menu.

Changelog

v5.6.4 May 6th, 2021 -- Updates to Fermi surface plotter.
v5.6.3 Mar 5th, 2021 -- QE and elk bug fixes.
v5.6.2 Jan 11th, 2021 -- Updates and bugfixes to fermi surface and dos plotter.
v5.6.1 Dec 7th, 2020 -- Fixed bug in PyProcar.cat() for merging parallel Abinit files for spin polarized calculations. Converted units Ha to eV.
v5.6.0 Nov 30th, 2020 -- Repairs PROCAR file by default. Set flag repair=False to disable.
v5.5.8 Nov 24th, 2020 -- Updates to parametric band structure plotting. Ability to change linewidths with linewidth flag.
v5.4.4 Oct 23rd, 2020 -- Updates to DOS plotting, Fermi3D and bxsf parser and other bugfixes.
v5.5.2 July 27th, 2020 -- Updated spin colinear calculations for Quantum Espresso and Lobster codes.
v5.4.3 July 25th, 2020 -- Bug fixes in stand-alone version and updates to bandgap calculation.
v5.4.0 Jun 17th, 2020 -- Improved 3D Fermi Surface plotter, added support for Quantum Espresso, conda support.
v5.3.3 May 22nd, 2020 -- Added DOS plotting feature.
v5.2.1 May 11th, 2020 -- Bugfixes in pyprocar.cat and improving comparison method.
v5.2.0 Apr 21st, 2020 -- Added spin colinear plotting feature for Elk calculations and a method to plot spin up and spin down plots separately without the need to filter the PROCAR file.
v5.1.9 Apr 14th, 2020 -- Added feature to filter colinear spins in pyprocar.filter().
v5.1.8 Mar 27th, 2020 -- Fix iband reading error due to vasp incorrectly writting iband>999.
v5.1.5 Mar 8th, 2020 -- Fixed summation issues in ElkParser.
v5.1.4 Mar 7th, 2020 -- Added new class for parsing Abinit data.
v5.1.3 Mar 5th, 2020 -- Fixed Abinit PROCAR formatting issues in PyProcar cat function.
v5.1.1 Mar 5th, 2020 -- Removed bandscompare() due to redundancy with exportplt.
v5.1.0 Mar 4th, 2020 -- Elk implementation.
v5.0.1 Mar 2nd, 2020 -- Added orbital header array for newer version of VASP.
v5.0.0 Mar 1st, 2020 -- Added discontinuous band-plotting feature and other improvements.
v4.1.4 Feb 28th, 2020 -- Added option to convert k-points between reduced and cartesian when OUTCAR is supplied.
v4.1.3 Feb 27th, 2020 -- Renormalize alpha values in band unfolder for values > 1.
v4.1.2 Feb 24th, 2020 -- Bug fixes in band unfolder.
v4.1.1 Feb 12th, 2020 -- Added feature to compare two parametric plots with colormaps in bandscompare.
v4.1.0 Jan 10th, 2020 -- Added feature to export plots as matplotlib.pyplot objects for further processing through matplotlib options.
v4.0.4 Dec 6th, 2019 -- Added command-line compatibility to standalone version and better Latex rendering.
v4.0.1 Nov 17th, 2019 -- Added feature to filter k-points.
v4.0.0 Nov 6th, 2019 -- Various bug fixes. Release of standalone version. Updated documentation.
v3.9.2 Oct 4, 2019 -- Fixed bug in 2D Kmesh generator.
v3.9.1 Sep 15, 2019 -- Fixed unfold spin polarized eigenvalue bug and spin up/down band energy error in unfolding.
v3.9.0 Sep 12, 2019 -- Fixed spin polarized band unfolding.
v3.8.9 Sep 9, 2019 -- Added bbox_inches='tight' for savefig.
v3.8.8 Jul 24, 2019 -- Fixed ambiguity in spin flag.
v3.8.7 Jul 21, 2019 -- Fixed bug in K-mesh generator.
v3.8.6 Jun 26, 2019 -- Bug fixes in band unfolding Fermi shift energy and band structure labels for Fermi shifts.
v3.8.5 Jun 13, 2019 -- Bug fixes in Fermi surface plotting.
v3.8.4 Jun 11, 2019 -- Fixed parsing old PROCAR format.
v3.8.3 Jun 05, 2019 -- Updated parsing for PROCAR with phase.
v3.8.2 Jun 05, 2019 -- Updated docs.
v3.8.1 Jun 05, 2019 -- Updated reading from gzip for binary data. Increased parsing speed when phase factors are present.
v3.71 Jun 05, 2019 -- More bug fixes.
v3.7 Jun 04, 2019 -- Bug fixes for Fermi surface.
v3.6 Jun 04, 2019 -- Added 3D Fermi surface utility.
v3.5 May 22, 2019 -- added automatic high symmetry point labeling from KPOINTS file.
v3.4 May 21, 2019 -- Bug fixes for plotting and added capability to plot meta-GGA.
v3.3 Mar 19, 2019 -- Added band unfolder.
v3.2 Nov 26, 2018 -- Moved project to romerogroup.
v3.1 Sep 19, 2018 -- Minor bug fixes.
v3.0 Sep 17, 2018 -- Added method to compare two PROCARs. Moved to Python3.
v2.9 Jul 29,2018 -- Created PyProcar Mailing list.
v2.8 May 23,2018 -- Fixed procar.cat()
v2.7 May 18,2018 -- Fixed out-of-bounds error in k path generator.
v2.6 May 18,2018 -- Fixed more issues with fermi2D
v2.5 May 18.2018 -- Fixed issue with Vector
v2.4 May 18,2018 -- Fixed minor issues with fermi2D and procarsymmetry
v2.3 May 17,2018 -- Added k path generator.
v2.2 May 14,2018 -- Updated documentation.
v2.1 Apr 03,2018 -- Fixed issue with input arguments when using OUTCAR as an input
v2.0 Mar 21,2018 -- Created PyProcar package version with added support to Abinit.
v0.1.0, June 10, 2013 -- Initial release.

Comments
  • Problem in Band Structure Plotting

    Problem in Band Structure Plotting

    While plotting a band structure along the high-symmetry k-path K->Gamma-> Kp, I noticed that the k-path distances are not symmetrical around Gamma, which should not happen due to a hexagonal brillouin zone. Can you please suggest any solution for this issue? Figure_6

    opened by shahid-sattar 8
  • Fermi3D

    Fermi3D

    Hi, I have been trying to plot 3D fermi surface using my PROCAR and OUTCAR from a VASP hybrid band structure calculation. Pyprocar.repair works fine. However, when I try pyrocar.fermi3D, it gives me the error shown below:

    Plotting band 0
    Traceback (most recent call last):
      File "/home/zccappr/.local/bin/procar", line 815, in <module>
        args.func(args)
      File "/home/zccappr/.local/bin/procar", line 120, in call_fermi3D
        kwargs = args.kwargs)
      File "/home/zccappr/.local/lib/python3.6/site-packages/pyprocar/scriptFermi3D.py", line 463, in fermi3D
        mapped_func,kpoint_matrix = mapping_func(kvector,eigen)
      File "/home/zccappr/.local/lib/python3.6/site-packages/pyprocar/scriptFermi3D.py", line 54, in mapping_func
        if len(bands[tot_cond]) != 0 :
    IndexError: boolean index did not match indexed array along dimension 0; dimension is 304 but corresponding boolean dimension is 311
    

    I tried it with different structures and for each I got the same error with a difference of 7 between the numbers in IndexError: boolean index did not match indexed array along dimension 0; dimension is 304 but corresponding boolean dimension is 311.

    I am using pyprocar.fermi3D(PROCAR, OUTCAR, bands=-1, scale=1, mode='plain', st=False) Secondly, for some reason it is also finding the wrong number of ions. I have 24 ions in my POSCAR but it finds 25. I am attaching my PROCAR, OUTCAR, POSCAR and KPOINTS files.

    PROCAR.zip OUTCAR.zip POSCAR.zip KPOINTS.zip

    Thank you.

    opened by warda-rahim 5
  • Unfold

    Unfold

    Hi Uthpala, The band unfolding is added. List of changes:

    • procarunfold module added.
    • scriptUnfold.py added.
    • documentation (docx file, is it the right place?)
    • I found the parser a bit slow so I put my simple version in as readFile2. From your comment, I see that there could be some problem with 1 atom case but I don't know why. I think the extensive use of re.findall() is guilty for the slowness, for large files it can cost minutes, or even hours to parse. Cheers, HeXu
    opened by mailhexu 5
  • 2D-spin mesh plot,could not convert string to float happen

    2D-spin mesh plot,could not convert string to float happen

    I have run the "pyprocar.fermi2D('PROCAR-repaired', outcar='OUTCAR', st=True, energy=0.01, noarrow=False, spin=3, code='vasp')" The procar is repaired before fermi2D.

    then after several mins error happens: Traceback (most recent call last): File "/beegfs/home/b00004/calculation-hcq/soc/2Dslice/soc/slice/py", line 4, in pyprocar.fermi2D('PROCAR-repaired', outcar='OUTCAR', st=True, energy=0.01, noarrow=False, spin=3, code='vasp') File "/beegfs/home/b00004/anaconda3/lib/python3.9/site-packages/pyprocar/scriptFermi2D.py", line 92, in fermi2D rec_basis = outcarparser.RecLatOutcar(outcar) File "/beegfs/home/b00004/anaconda3/lib/python3.9/site-packages/pyprocar/utilsprocar/utilsprocar.py", line 271, in RecLatOutcar recLat = np.array(recLat, dtype=float) ValueError: could not convert string to float: '0.000000000171.062194824'

    PS. my vasp running is successful but PROCAR is large due to 200 atoms.

    Can anyone help me?

    opened by ChenqiangHua 2
  • Potential dependency conflicts between pyprocar and numpy

    Potential dependency conflicts between pyprocar and numpy

    Hi, as shown in the following full dependency graph of pyprocar, pyprocar requires numpy ==1.17.2, pyprocar requires matplotlib * (matplotlib 3.2.1 will be installed, i.e., the newest version satisfying the version constraint), and directed dependency matplotlib 3.2.1 transitively introduces numpy >=1.11.

    Obviously, there are multiple version constraints set for numpy in this project. However, according to pip's “first found wins” installation strategy, numpy 1.17.2 (i.e., the newest version satisfying constraint ==1.17.2) is the actually installed version.

    Although the first found package version numpy 1.17.2 just satisfies the later dependency constraint (numpy ==1.17.2), such installed version is very close to the upper bound of the version constraint of numpy specified by matplotlib 3.2.1.

    Once matplotlib upgrades,its newest version will be installed, as pyprocar does not specify the upper bound of version constraint for matplotlib. Therefore, it will easily cause a dependency conflict (build failure), if the upgraded matplotlib version introduces a higher version of numpy, violating its another version constraint ==1.17.2.

    According to the release history of matplotlib, it habitually upgrates Numpy in its recent releases. For instance, matplotlib #15645 upgrated Numpy’s constraint from >=1.11 to >=1.12, and matplotlib #15698 upgrated Numpy’s constraint from >=1.12 to >=1.15.

    As such, it is a warm warning of a potential dependency conflict issue for pyprocar.

    Dependency tree

    pyprocar - 5.2.1
    | +- ase(install version:3.19.1 version range:*)
    | | +- matplotlib(install version:3.2.1 version range:*)
    | | | +- cycler(install version:0.10.0 version range:>=0.10)
    | | | | +- six(install version:1.14.0 version range:*)
    | | | +- kiwisolver(install version:1.2.0 version range:>=1.0.1)
    | | | +- numpy(install version:1.17.2 version range:>=1.11)
    | | | +- pyparsing(install version:3.0.0a1 version range:>=2.0.1)
    | | | +- python-dateutil(install version:2.8.1 version range:>=2.1)
    | | +- numpy(install version:1.17.2 version range:*)
    | | +- scipy(install version:1.4.1 version range:*)
    | +- matplotlib(install version:3.2.1 version range:*)
    | | +- cycler(install version:0.10.0 version range:>=0.10)
    | | | +- six(install version:1.14.0 version range:*)
    | | +- kiwisolver(install version:1.2.0 version range:>=1.0.1)
    | | +- numpy(install version:1.17.2 version range:>=1.11)
    | | +- pyparsing(install version:3.0.0a1 version range:>=2.0.1)
    | | +- python-dateutil(install version:2.8.1 version range:>=2.1)
    | +- mayavi(install version:4.6.2 version range:==4.6.2)
    | +- numpy(install version:1.17.2 version range:==1.17.2)
    | +- pyfiglet(install version:0.8.post1 version range:*)
    | +- scikit-image(install version:0.16.2 version range:*)
    | +- scipy(install version:1.4.1 version range:==1.4.1)
    | +- seekpath(install version:1.9.5 version range:>=1.0)
    | | +- future(install version:0.18.2 version range:>=0.15)
    | | +- numpy(install version:1.17.2 version range:>=1.0)
    | | +- spglib(install version:1.14.1.post0 version range:>=1.14.1)
    | | | +- numpy(install version:1.17.2 version range:*)
    

    Thanks for your help. Best, Neolith

    opened by NeolithEra 2
  • Tutorial error using pyprocar.kpath

    Tutorial error using pyprocar.kpath

    My POSCAR:

    azo
    1.00000000000000
    9.5670000000000002 0.0000000000000000 0.0000000000000000 -4.7835000000000001 8.2852650380099995 0.0000000000000000 0.0000000000000000 0.0000000000000000 40.0000000000000000 Mo S H C N O 18 35 10 13 2 2 Direct ...

    If I tried pyprocar.kpath('POSCAR',40,True,'hpkot',1e-07,1e-05,-1.0)

    Traceback (most recent call last): File "", line 1, in File "/home/noki/anaconda3/envs/procar/lib/python3.7/site-packages/pyprocar/scriptKpath.py", line 21, in kpath atoms = np.array(POSCAR[5].split()).astype(np.int) ValueError: invalid literal for int() with base 10: 'Mo'

    It should change from 5 to 6 or not compatible for my POSCAR.

    opened by Nokimann 2
  • Plot 2D spin-texture Error: cannot import name '_ccallback_c' from 'scipy._lib'

    Plot 2D spin-texture Error: cannot import name '_ccallback_c' from 'scipy._lib'

    Dear Uthpala: Hi! I am now learning your great tool PyProcar. When I want to plot the fermi2D spin-texture, there is an error: --- ImportError: cannot import name '_ccallback_c' from 'scipy.lib' (C:\Users\user\AppData\Roaming\Python\Python37\site-packages\scipy_lib_init.py)

    I have installed and upgrade the SciPy, but the error remains.

    So, please, how can I solve this problem?

    opened by Yang-Jun-tao 2
  • DOS plot error for unfinished DFT calculation

    DOS plot error for unfinished DFT calculation

    Hi I am trying to check how the DOS plot looks for a DFT calculation I did that was ended early due to a walltime issue on the supercomputer I have access to. At first I got an issue due to unclosed tags in the vasprun.xml file which makes sense, but after manually closing the necessary tags so the file could be parsed, I am getting an error that the self.data variable in vaspxml.py does not contain the key 'dos'.

    Looking into this file I see that the lines 662 to 675 in the function parse_vasprun in the file vaspxml.py are all commented out, and on quick inspection this looks to be the only place where 'dos' string gets set as a key within the variable self.data. Are these lines supposed to commented out? Is the 'dos' key being set in another function and I am missing it? Screen Shot 2022-10-19 at 4 41 17 PM

    I have resubmitted the DFT job so it will run to completion, but in the meantime I would like to see the DOS plots to see how the current unconverged results are looking while I wait for the DFT calculation to finish.

    Thank you in advance for your help, and for your reference I have added a screenshot of the exact error message I see when I try to call the function dosplot from pyprocar. Please let me know any additional information you require from me.

    opened by artoland 1
  • Mybinder Example

    Mybinder Example

    Try it online Binder

    I mainly added one example notebook

    examples/MoS2_QEv6.5/pyprocar.ipynb
    

    I guess it should be easy to add similar notebooks for the other examples.

    opened by jan-janssen 1
  • conda-forge package

    conda-forge package

    Hi,

    I recently create the pyprocar conda forge package, now it is possible to install PyProcar via:

    conda install -c conda-forge pyprocar
    

    I was wondering if one of the core developers is interested in joining me in maintaining the package.

    Best,

    Jan

    opened by jan-janssen 1
  • Bug in procarparser.py

    Bug in procarparser.py

    I am trying using the package to unfold a 9x9x1 supercell band, and I encountered the following error: self.procar.readFile2(self.fname, phase=True, ispin=ispin) File "/u/fs1/.local/lib/python3.6/site-packages/pyprocar/procarparser/procarparser.py", line 688, in readFile2 iband = int(ss[1]) - 1 ValueError: invalid literal for int() with base 10: '***'

    I think this is due to the fact that the code does not realise that VASP does not write down the band index beyond 999. For example, my PROCAR looks like:

    band 998 # energy -0.2155885 # occ. 0.00000000

    ion s py pz px dxy dyz dz2 dxz dx2 tot 1 0.000 0.001 0.001 0.001 0.000 0.000 0.000 0.000 0.000 0.003 2 0.000 0.001 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.002 3 0.000 0.001 0.001 0.001 0.000 0.000 0.000 0.000 0.000 0.004 ....

    band 999 # energy -0.19090405 # occ. 0.00000000

    ion s py pz px dxy dyz dz2 dxz dx2 tot 1 0.000 0.000 0.002 0.000 0.000 0.000 0.000 0.000 0.000 0.003 2 0.000 0.000 0.001 0.000 0.000 0.000 0.000 0.000 0.000 0.002 3 0.000 0.001 0.000 0.001 0.000 0.000 0.000 0.000 0.000 0.002 ....

    band *** # energy -0.18754690 # occ. 0.00000000

    ion s py pz px dxy dyz dz2 dxz dx2 tot 1 0.000 0.000 0.001 0.001 0.000 0.000 0.000 0.000 0.000 0.003 2 0.000 0.000 0.001 0.000 0.000 0.000 0.000 0.000 0.000 0.002 3 0.000 0.000 0.000 0.001 0.000 0.000 0.000 0.000 0.000 0.002 ....

    band *** # energy -0.17669861 # occ. 0.00000000

    ion s py pz px dxy dyz dz2 dxz dx2 tot 1 0.000 0.003 0.001 0.001 0.000 0.000 0.000 0.000 0.000 0.006 2 0.000 0.001 0.001 0.000 0.000 0.000 0.000 0.000 0.000 0.002 3 0.000 0.002 0.001 0.000 0.000 0.000 0.000 0.000 0.000 0.004 ....

    Could you please fix this bug? Thanks.

    opened by SiyuChen 1
  • pyprocar not found

    pyprocar not found

    I have tried to install pyprocar using pip and conda both and in both the cases it is not showing the pyprocar.

    At the end of the installation, I am getting this.

    Installing collected packages: pyparsing Successfully installed pyparsing-3.0.9

    Could you please have a look at it?

    opened by kcbhamu 1
  • How to filter KPOINTS from hybrid calculation?

    How to filter KPOINTS from hybrid calculation?

    Hello developers, firstly many thanks for the amazing post processing scheme. I was trying to follow the tutorials to filter weighted KPOINTS from hybrid calculation. But I'm getting the following error- //File "hello.py", line 2 pyprocar.filter('PROCAR’,'PROCAR-filtered_kpoints’, kpoints=[2,3]) ^ SyntaxError: invalid syntax// What I'm doing wrong here/ how can I fix this ?

    opened by nirjha008 0
  • In ability to use stack_orbitals mode for F orbitals

    In ability to use stack_orbitals mode for F orbitals

    Hey, I am following the posted tutorial for plotting the orbitals of Np atom in my crystal structure.

    the plots made by stack_orbitals mode does not show any F orbitals (only show s p d). can you please let me know how to correct this issue?

    Thank you, Harindu

    opened by iowachem 1
  • vertical axis or graph height is not adjusted when plot_total = False in dosplots: projected DOS becomes too small to see

    vertical axis or graph height is not adjusted when plot_total = False in dosplots: projected DOS becomes too small to see

    In plotting projected DOS contributions without showing the total DOS, I see that the vertical scale is not readjusted to be suitable for the projections. It is still referring to the total DOS.

    So if my total DOS is at 100 units, while my projections is at 5-10 units, the projected DOS plots becomes hard to analyze (because too small compared to the graph size). What could we do in this case?

    I use pyprocar version 5.6.5.

    opened by alpinnovianus 5
  • Different result between DOS plots on 'parametric_line' vs 'stack' modes?

    Different result between DOS plots on 'parametric_line' vs 'stack' modes?

    Dear PyProCar developers,

    I encounter in my calculations that the amount of projected DOS, or DOS contribution from specific atom/orbitals is shown differently in magnitude when plotted with 'stack' and 'parametric_line' mode, respectively. I use version 5.6.5

    In general, the overall shape and energy locations are similar, but the DOS amplitude contribution appear higher in 'stack' than in the parametric_line plots.

    I check the tutorial page, and it seems that it is already seen here:

    https://romerogroup.github.io/pyprocar/dos.html#mode-parametric-line https://romerogroup.github.io/pyprocar/dos.html#mode-stack

    If we look at the oxygen p orbital contribution between -2.7 to -1.5 eV, for example, it is clearly shown that these contributions are higher in 'stack' mode as they almost cover the area under total DOS curve, while there is some uncovered space in the parametric_line mode.

    I note that all O atoms are included in both plots, and. the other element contributions from Sr or V in the stack plot is negligible in this energy range, so they cannot explain this 0.8 - 1 a.u. DOS difference at -2.7 eV.

    Because of this phenomena, I am seeing that if one uses the parametric line to plot separately all contributions from each element in a compound, say ABC, the individual contributions A+B+C won't sum up to match the total density of states curve. On the other hand, we can expect the individual contributions to sum up to the total DOS if we use the 'stack' modes.

    May I know if this is expected? If so, what causes the parametric_line mode to show this different behavior? due to this finding, I do have doubts in the parametric_line mode. I hope you can help enlighten this problem for me.

    Thank you. Alpin N. Tatan University of Tokyo

    opened by alpinnovianus 2
Releases(5.6.3)
Owner
Romero Group
Computational Condensed Matter Physics research group at West Virginia University led by Prof. Aldo Romero
Romero Group
Python library for doing things with Grid-like structures

gridthings Python library for doing things with Grid-like structures Development This project uses poetry for dependency management, pre-commit for li

Matt Kafonek 2 Dec 21, 2021
pyprobables is a pure-python library for probabilistic data structures

pyprobables is a pure-python library for probabilistic data structures. The goal is to provide the developer with a pure-python implementation of common probabilistic data-structures to use in their

Tyler Barrus 86 Dec 25, 2022
Python tree data library

Links Documentation PyPI GitHub Changelog Issues Contributors If you enjoy anytree Getting started Usage is simple. Construction from anytree impo

776 Dec 28, 2022
Programming of a spanning tree algorithm with Python : In depth first with a root node.

ST Algorithm Programming of a spanning tree algorithm with Python : In depth first with a root node. Description This programm reads informations abou

Mathieu Lamon 1 Dec 16, 2021
This repo is all about different data structures and algorithms..

Data Structure and Algorithm : Want to learn data strutrues and algorithms ??? Then Stop thinking more and start to learn today. This repo will help y

Priyanka Kothari 7 Jul 10, 2022
Google, Facebook, Amazon, Microsoft, Netflix tech interview questions

Algorithm and Data Structures Interview Questions HackerRank | Practice, Tutorials & Interview Preparation Solutions This repository consists of solut

Quan Le 8 Oct 04, 2022
An esoteric data type built entirely of NaNs.

NaNsAreNumbers An esoteric data type built entirely of NaNs. Installation pip install nans_are_numbers Explanation A floating point number is just co

Travis Hoppe 72 Jan 01, 2023
Basic sort and search algorithms written in python.

Basic sort and search algorithms written in python. These were all developed as part of my Computer Science course to demonstrate understanding so they aren't 100% efficent

Ben Jones 0 Dec 14, 2022
Map single-cell transcriptomes to copy number evolutionary trees.

Map single-cell transcriptomes to copy number evolutionary trees. Check out the tutorial for more information. Installation $ pip install scatrex SCA

Computational Biology Group (CBG) 12 Jan 01, 2023
Chemical Structure Generator

CSG: Chemical Structure Generator A simple Chemical Structure Generator. Requirements Python 3 (= v3.8) PyQt5 (optional; = v5.15.0 required for grap

JP&K 5 Oct 22, 2022
Multidict is dict-like collection of key-value pairs where key might be occurred more than once in the container.

multidict Multidict is dict-like collection of key-value pairs where key might be occurred more than once in the container. Introduction HTTP Headers

aio-libs 325 Dec 27, 2022
Svector (pronounced Swag-tor) provides extension methods to pyrsistent data structures

Svector Svector (pronounced Swag-tor) provides extension methods to pyrsistent data structures. Easily chain your methods confidently with tons of add

James Chua 5 Dec 09, 2022
A mutable set that remembers the order of its entries. One of Python's missing data types.

An OrderedSet is a mutable data structure that is a hybrid of a list and a set. It remembers the order of its entries, and every entry has an index nu

Elia Robyn Lake (Robyn Speer) 173 Nov 28, 2022
A Python library for electronic structure pre/post-processing

PyProcar PyProcar is a robust, open-source Python library used for pre- and post-processing of the electronic structure data coming from DFT calculati

Romero Group 124 Dec 07, 2022
Integrating C Buffer Data Into the instruction of `.text` segment instead of on `.data`, `.rodata` to avoid copy.

gcc-bufdata-integrating2text Integrating C Buffer Data Into the instruction of .text segment instead of on .data, .rodata to avoid copy. Usage In your

Jack Ren 1 Jan 31, 2022
One-Stop Destination for codes of all Data Structures & Algorithms

CodingSimplified_GK This repository is aimed at creating a One stop Destination of codes of all Data structures and Algorithms along with basic explai

Geetika Kaushik 21 Sep 26, 2022
dict subclass with keylist/keypath support, normalized I/O operations (base64, csv, ini, json, pickle, plist, query-string, toml, xml, yaml) and many utilities.

python-benedict python-benedict is a dict subclass with keylist/keypath support, I/O shortcuts (base64, csv, ini, json, pickle, plist, query-string, t

Fabio Caccamo 799 Jan 09, 2023
This repo represents all we learned and are learning in Data Structure course.

DataStructure Journey This repo represents all we learned and are learning in Data Structure course which is based on CLRS book and is being taught by

Aprime Afr (Alireza Afroozi) 3 Jan 22, 2022
A collection of data structures and algorithms I'm writing while learning

Data Structures and Algorithms: This is a collection of data structures and algorithms that I write while learning the subject Stack: stack.py A stack

Dhravya Shah 1 Jan 09, 2022
nocasedict - A case-insensitive ordered dictionary for Python

nocasedict - A case-insensitive ordered dictionary for Python Overview Class NocaseDict is a case-insensitive ordered dictionary that preserves the or

PyWBEM Projects 2 Dec 12, 2021