Skip to content

mgamigo/YAIV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YAIV

Yet another Ab Initio Visualizer...

A general purpose tool for condensed matter data analysis in jupyterlab.
Report Bug · Request Feature
___
Explore the tutorials:
Plotting · Convergence · Utilities

Table of Contents
  1. About The Project
  2. Current tools
  3. Examples
  4. Installation
  5. Roadmap

About The Project

YAIV is a collection of tools for plotting results of condensed matter ab initio codes such as Quantum Espresso, VASP, Wannier90, Wannier Tools... Although it can be used from the command line, the main intention of YAIV is to be used within JupyterLab, thereby allowing users to centralize the data analysis of a whole project into a single file. The goal is to provide both (1) fast and easy plotting defaults to glance over results, while (2) being flexible and powerful enough to generate publication-ready figures.

gif demo

(back to top)

Why?

A single file to rule them all...

Most of the tools contained on YAIV are nothing more than glorified python scripts I needed during my PhD. Although python libraries for ab initio data analysis already exist, I found many of them being disigned to work within the command line (often required to be run from a certain directory). YAIV is aimed at providing useful ab initio analysis functionalities to those people willing to use a single JupyterLab file to organize their projects.

YAIV also intends to provide enough flexibility and modularity for most scenarios. To this end, useful utilities are also provided in order to scrape data from the output of a variety of codes. Then, users can either further process the raw data or plot it in any desired way.

(back to top)


Installation

Create an isolated python enviroment

In case you want to create your own python enviroment and have it available in JupyterLab.

    virtualenv yaiv_env                                 #Create yor new enviroment
    source yaiv_env/bin/activate                        #Load the enviroment
    pip install ipykernel                               #In order to create a Kernel for this enviroment
    python -m ipykernel install --user --name=YAIV      #Install your new kernel with your desired name
    jupyter kernelspec list                             #Check that the new installed kernel appears

Now your new installed Kernel should be available in JupyterLab. You can select Kernel clicking at the top-right corner of JupyterLab.

Installing YAIV

You can either install from pip as:

   pip install yaiv

Or cloning the git repository:

   git clone https://github.com/mgamigo/YAIV.git
   cd YAIV
   pip install .

(back to top)


Current tools

All the functions are properly documented (remember that in JupyterLab all the documentation can be conviniently accesed with the shift + tab shortcut). All the tools are demostrated in the tutorials, here is a brief summary of the main modules of YAIV and their current tools:

I. Plot module

Contains most of the plotting functionalities, currently being:

  • Electronic band structures from Quantum Espresso, Vasp, Wannier90 and WannierTools.
    • Plotting results from different codes against each other.
  • Phonon spectra from Quantum Espresso.
    • Plotting different phonon spectra. It can highlight the DFPT phonons from which the whole spectrum is interpolated.

II. Convergence module

A variety of tools for the purpose of inspecting the convergence of different calculations by plotting the results in a digestible way. Currently supports:

  • Self-consistent calculations: Given a folder with the quantum-espresso outputs it gives tools for the convergence analysis of various quantities respect to the cutoff, Kgrid and smearing.
  • DFPT Phonons: Like the self-consisten convergence analyzer (also respect to cutoff, Kgrid and smeargin). But for the phonon frequencies.
  • Wannierizations: Tools for the convergence analysis of the Wannier minimizations done with wannier90.

III. Utils module

The utils module has a variety of utilities mostly focussed on scraping data from output files of different codes. This tools combined can be usefull for various porpuses. All the functions are demostrated in this tutorial. So far the code supports:

  • Grepping tools (either by calling the function or using the file class):
    • Grepping the number of electrons from Quantum Espresso and VASP outputs.
    • Grepping the Fermi level.
    • Grep the lattice parameters.
    • Grep the path from a Quantum Espresso bands.pwi or madtyn.in input.
    • Grep the path and HSP labels from a KPATH in the TQC website format. (Enter in any compound and click in the "Download KPATH" link).
    • Grep the phonon grid from a Quantum Espresso ph.x output.
    • Grep the total energy from a Quantum Espresso ph.x output.
  • Transforming tools (mainly usefull changes of coordinates):
    • K_basis: Obtaining the reciprocal lattice vectors.
    • cartesian2cryst: From cartesian to crystal coordinates.
    • cryst2cartesian: From crystal to cartesian coordinates.
    • cartesian2spherical: From cartesian to spherical coordinates.
    • cryst2spherical: From crystal to spherical coordinates.

Examples

Here are some simple examples:

plot.bands(file='DATA/bands/QE/results_bands/CsV3Sb5.bands.pwo',  #raw Quantum Espresso output file with the band structure
           KPATH='DATA/bands/KPATH',   #File with the Kpath (in order to plot the ticks at the High symmetry points)
           aux_file='DATA/bands/QE/results_scf/CsV3Sb5.scf.pwo', #File needed to read the number of electrons and lattice parameters
           title='Electronic bandstructures')    # A title of your liking

plot.phonons(file='DATA/phonons/2x2x2/results_matdyn/CsV3Sb5.freq.gp', #raw data file with the phonon spectrum
            KPATH='DATA/bands/KPATH',                                 #File with the Kpath (in order to plot the ticks at the High symmetry points)
            ph_out='DATA/phonons/2x2x2/results_ph/CsV3Sb5.ph.pwo',    #File with the phonon grid points and lattice vectors.
            title='Phonon spectra with the (2x2x2) grid highlighted!',   # A title of your liking
            grid=True,color='navy',linewidth=1)                        #Non-mandatory customization

conv.kgrid.analysis(data='DATA/convergence/Kgrid/',         #Folder with your DFT outputs
		    title='K-grid convergence analysis')    #A title of your liking

conv.wannier.w90(data='DATA/convergence/wannier90/NbGe2.wout',     #Wannier90 output file
                 title='Wannier minimization (66 WF)')             #A title of your liking

Combining YAIV tools with the usual matplotlib sintax one can generate complex plots as this one (check the tutorial):

(For more examples, please refer to the Tutorials).

(back to top)


Roadmap

  • Plot module
    • Plotting electronic band strucutres
    • Plotting phonon spectra
    • Plotting densities of states (DOS)
    • ...
  • Utils module
    • Grep tools to scrape data form OUTPUT files
    • Transformation tools for easy changing of coordinates
    • ...
  • Convergence analysis tools
    • Quantum Espresso self consistent calculations
    • Quantum Espresso phonon spectra
    • Wannierizations for Wannier90
    • ...
  • ...
Built With

NumPy Matplotlib ASE

(back to top)