mirror of https://github.com/abinit/abipy.git
Fix errors (only two errors left)
This commit is contained in:
parent
090fca1cbe
commit
d56b647a87
|
@ -33,6 +33,11 @@ jobs:
|
|||
python: '3.11'
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
PMG_MAPI_KEY: ${{ secrets.PMG_MAPI_KEY }}
|
||||
# This is used in the flow scripts to generate the graph with graphviz.
|
||||
READTHEDOCS: 1
|
||||
|
||||
steps:
|
||||
- name: Check out Abipy repo
|
||||
uses: actions/checkout@v4
|
||||
|
@ -54,26 +59,28 @@ jobs:
|
|||
mpirun -n 1 abinit --build
|
||||
pip install --editable .
|
||||
mkdir -p $HOME/.abinit/abipy/
|
||||
cp abipy/data/managers/travis_manager.yml $HOME/.abinit/abipy/manager.yml
|
||||
cp abipy/data/managers/simple_scheduler.yml $HOME/.abinit/abipy/scheduler.yml
|
||||
cp abipy/data/managers/gh_manager.yml $HOME/.abinit/abipy/manager.yml
|
||||
cp abipy/data/managers/gh_scheduler.yml $HOME/.abinit/abipy/scheduler.yml
|
||||
|
||||
- name: Build docs with Sphinx
|
||||
run: |
|
||||
conda activate abipy
|
||||
cd docs
|
||||
cd docs
|
||||
source install.sh
|
||||
make
|
||||
|
||||
#- name: Upload artifact
|
||||
# uses: actions/upload-pages-artifact@v2
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
with:
|
||||
path: site/ # Important. Set to your output dir in MkDocs
|
||||
|
||||
#deploy:
|
||||
# environment:
|
||||
# name: github-pages
|
||||
# url: ${{ steps.deployment.outputs.page_url }}
|
||||
# runs-on: ubuntu-latest
|
||||
# needs: build
|
||||
# steps:
|
||||
# - name: Deploy to GitHub Pages
|
||||
# id: deployment
|
||||
# uses: actions/deploy-pages@v2
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v3
|
||||
|
|
|
@ -25,12 +25,10 @@ jobs:
|
|||
config:
|
||||
- os: ubuntu-latest
|
||||
python: '3.11'
|
||||
#python: '>3.9'
|
||||
|
||||
runs-on: ${{ matrix.config.os }}
|
||||
|
||||
#env:
|
||||
# PMG_MAPI_KEY: ${{ secrets.PMG_MAPI_KEY }}
|
||||
env:
|
||||
PMG_MAPI_KEY: ${{ secrets.PMG_MAPI_KEY }}
|
||||
|
||||
steps:
|
||||
- name: Check out Abipy repo
|
||||
|
@ -57,7 +55,7 @@ jobs:
|
|||
run: |
|
||||
conda activate abipy
|
||||
pip install -r requirements-tests.txt
|
||||
pytest -v .
|
||||
pytest -v .
|
||||
|
||||
- name: integration_tests
|
||||
run: |
|
||||
|
|
|
@ -447,7 +447,7 @@ AbiPy is released under the GNU GPL license. For more details see the LICENSE fi
|
|||
|
||||
.. |download-with-anaconda| image:: https://anaconda.org/abinit/abipy/badges/installer/conda.svg
|
||||
:alt: Download with Anaconda
|
||||
:target: https://conda.anaconda.org/abinit
|
||||
:target: https://anaconda.org/conda-forge/abinit
|
||||
|
||||
.. |launch-binder| image:: https://mybinder.org/badge.svg
|
||||
:alt: Launch binder
|
||||
|
|
|
@ -17,7 +17,6 @@ from abipy.tools.printing import print_dataframe
|
|||
from abipy.core.mixins import NotebookWriter
|
||||
|
||||
|
||||
MP_DEFAULT_ENDPOINT = "https://materialsproject.org/rest/v2"
|
||||
|
||||
MP_KEYS_FOR_DATAFRAME = (
|
||||
"pretty_formula", "e_above_hull", "energy_per_atom",
|
||||
|
@ -27,132 +26,113 @@ MP_KEYS_FOR_DATAFRAME = (
|
|||
)
|
||||
|
||||
|
||||
def get_mprester(api_key=None, endpoint=None) -> MyMPRester:
|
||||
def get_mprester():
|
||||
"""
|
||||
Args:
|
||||
api_key (str): A String API key for accessing the MaterialsProject
|
||||
REST interface. Please apply on the Materials Project website for one.
|
||||
If this is None, the code will check if there is a `PMG_MAPI_KEY` in
|
||||
your .pmgrc.yaml. If so, it will use that environment
|
||||
This makes easier for heavy users to simply add
|
||||
this environment variable to their setups and MPRester can
|
||||
then be called without any arguments.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
Defaults to the standard Materials Project REST address, but
|
||||
can be changed to other urls implementing a similar interface.
|
||||
"""
|
||||
if api_key is None:
|
||||
try:
|
||||
from pymatgen.core import SETTINGS
|
||||
except ImportError:
|
||||
from pymatgen import SETTINGS
|
||||
|
||||
api_key = SETTINGS.get("PMG_MAPI_KEY")
|
||||
if api_key is None:
|
||||
raise RuntimeError("Cannot find PMG_MAPI_KEY in pymatgen settings. Add it to $HOME/.pmgrc.yaml")
|
||||
|
||||
if endpoint is None: endpoint = MP_DEFAULT_ENDPOINT
|
||||
return MyMPRester(api_key=api_key, endpoint=endpoint)
|
||||
rester = MPRester()
|
||||
#print(f"{type(rester)=}")
|
||||
return rester
|
||||
|
||||
|
||||
class MyMPRester(MPRester):
|
||||
"""
|
||||
Subclass Materials project Rester.
|
||||
See :cite:`Jain2013,Ong2015`.
|
||||
|
||||
.. rubric:: Inheritance Diagram
|
||||
.. inheritance-diagram:: MyMPRester
|
||||
"""
|
||||
Error = MPRestError
|
||||
|
||||
def get_phasediagram_results(self, elements) -> PhaseDiagramResults:
|
||||
"""
|
||||
Contact the materials project database, fetch entries and build :class:``PhaseDiagramResults`` instance.
|
||||
|
||||
Args:
|
||||
elements: List of chemical elements.
|
||||
"""
|
||||
entries = self.get_entries_in_chemsys(elements, inc_structure="final")
|
||||
return PhaseDiagramResults(entries)
|
||||
#class MyMPRester(MPRester):
|
||||
# """
|
||||
# Subclass Materials project Rester.
|
||||
# See :cite:`Jain2013,Ong2015`.
|
||||
#
|
||||
# .. rubric:: Inheritance Diagram
|
||||
# .. inheritance-diagram:: MyMPRester
|
||||
# """
|
||||
# Error = MPRestError
|
||||
#
|
||||
# def get_phasediagram_results(self, elements) -> PhaseDiagramResults:
|
||||
# """
|
||||
# Contact the materials project database, fetch entries and build :class:``PhaseDiagramResults`` instance.
|
||||
#
|
||||
# Args:
|
||||
# elements: List of chemical elements.
|
||||
# """
|
||||
# entries = self.get_entries_in_chemsys(elements, inc_structure="final")
|
||||
# return PhaseDiagramResults(entries)
|
||||
|
||||
|
||||
class PhaseDiagramResults:
|
||||
"""
|
||||
Simplified interface to phase-diagram pymatgen API.
|
||||
|
||||
Inspired to:
|
||||
|
||||
https://anaconda.org/matsci/plotting-and-analyzing-a-phase-diagram-using-the-materials-api/notebook
|
||||
|
||||
See also: :cite:`Ong2008,Ong2010`
|
||||
"""
|
||||
def __init__(self, entries):
|
||||
self.entries = entries
|
||||
# Convert pymatgen structure to Abipy.
|
||||
from abipy.core.structure import Structure
|
||||
for e in entries:
|
||||
e.structure.__class__ = Structure
|
||||
|
||||
self.structures = [e.structure for e in entries]
|
||||
self.mpids = [e.entry_id for e in entries]
|
||||
|
||||
# Create phase diagram.
|
||||
from pymatgen.analysis.phase_diagram import PhaseDiagram
|
||||
self.phasediagram = PhaseDiagram(self.entries)
|
||||
|
||||
def plot(self, show_unstable=True, show=True):
|
||||
"""
|
||||
Plot phase diagram.
|
||||
|
||||
Args:
|
||||
show_unstable (float): Whether unstable phases will be plotted as
|
||||
well as red crosses. If a number > 0 is entered, all phases with
|
||||
ehull < show_unstable will be shown.
|
||||
show: True to show plot.
|
||||
|
||||
Return: plotter object.
|
||||
"""
|
||||
from pymatgen.analysis.phase_diagram import PDPlotter
|
||||
plotter = PDPlotter(self.phasediagram, show_unstable=show_unstable)
|
||||
if show:
|
||||
plotter.show()
|
||||
return plotter
|
||||
|
||||
@lazy_property
|
||||
def dataframe(self) -> pd.DataFrame:
|
||||
"""Pandas dataframe with the most important results."""
|
||||
rows = []
|
||||
for e in self.entries:
|
||||
d = e.structure.get_dict4pandas(with_spglib=True)
|
||||
decomp, ehull = self.phasediagram.get_decomp_and_e_above_hull(e)
|
||||
|
||||
rows.append(OrderedDict([
|
||||
("Materials ID", e.entry_id),
|
||||
("spglib_symb", d["spglib_symb"]), ("spglib_num", d["spglib_num"]),
|
||||
("Composition", e.composition.reduced_formula),
|
||||
("Ehull", ehull), # ("Equilibrium_reaction_energy", pda.get_equilibrium_reaction_energy(e)),
|
||||
("Decomposition", " + ".join(["%.2f %s" % (v, k.composition.formula) for k, v in decomp.items()])),
|
||||
]))
|
||||
|
||||
import pandas as pd
|
||||
return pd.DataFrame(rows, columns=list(rows[0].keys()) if rows else None)
|
||||
|
||||
def print_dataframes(self, with_spglib=False, file=sys.stdout, verbose=0) -> None:
|
||||
"""
|
||||
Print pandas dataframe to file `file`.
|
||||
|
||||
Args:
|
||||
with_spglib: True to compute spacegroup with spglib.
|
||||
file: Output stream.
|
||||
verbose: Verbosity level.
|
||||
"""
|
||||
print_dataframe(self.dataframe, file=file)
|
||||
if verbose:
|
||||
from abipy.core.structure import dataframes_from_structures
|
||||
dfs = dataframes_from_structures(self.structures, index=self.mpids, with_spglib=with_spglib)
|
||||
print_dataframe(dfs.lattice, title="Lattice parameters:", file=file)
|
||||
if verbose > 1:
|
||||
print_dataframe(dfs.coords, title="Atomic positions (columns give the site index):", file=file)
|
||||
#class PhaseDiagramResults:
|
||||
# """
|
||||
# Simplified interface to phase-diagram pymatgen API.
|
||||
#
|
||||
# Inspired to:
|
||||
#
|
||||
# https://anaconda.org/matsci/plotting-and-analyzing-a-phase-diagram-using-the-materials-api/notebook
|
||||
#
|
||||
# See also: :cite:`Ong2008,Ong2010`
|
||||
# """
|
||||
# def __init__(self, entries):
|
||||
# self.entries = entries
|
||||
# # Convert pymatgen structure to Abipy.
|
||||
# from abipy.core.structure import Structure
|
||||
# for e in entries:
|
||||
# e.structure.__class__ = Structure
|
||||
#
|
||||
# self.structures = [e.structure for e in entries]
|
||||
# self.mpids = [e.entry_id for e in entries]
|
||||
#
|
||||
# # Create phase diagram.
|
||||
# from pymatgen.analysis.phase_diagram import PhaseDiagram
|
||||
# self.phasediagram = PhaseDiagram(self.entries)
|
||||
#
|
||||
# def plot(self, show_unstable=True, show=True):
|
||||
# """
|
||||
# Plot phase diagram.
|
||||
#
|
||||
# Args:
|
||||
# show_unstable (float): Whether unstable phases will be plotted as
|
||||
# well as red crosses. If a number > 0 is entered, all phases with
|
||||
# ehull < show_unstable will be shown.
|
||||
# show: True to show plot.
|
||||
#
|
||||
# Return: plotter object.
|
||||
# """
|
||||
# from pymatgen.analysis.phase_diagram import PDPlotter
|
||||
# plotter = PDPlotter(self.phasediagram, show_unstable=show_unstable)
|
||||
# if show:
|
||||
# plotter.show()
|
||||
# return plotter
|
||||
#
|
||||
# @lazy_property
|
||||
# def dataframe(self) -> pd.DataFrame:
|
||||
# """Pandas dataframe with the most important results."""
|
||||
# rows = []
|
||||
# for e in self.entries:
|
||||
# d = e.structure.get_dict4pandas(with_spglib=True)
|
||||
# decomp, ehull = self.phasediagram.get_decomp_and_e_above_hull(e)
|
||||
#
|
||||
# rows.append(OrderedDict([
|
||||
# ("Materials ID", e.entry_id),
|
||||
# ("spglib_symb", d["spglib_symb"]), ("spglib_num", d["spglib_num"]),
|
||||
# ("Composition", e.composition.reduced_formula),
|
||||
# ("Ehull", ehull), # ("Equilibrium_reaction_energy", pda.get_equilibrium_reaction_energy(e)),
|
||||
# ("Decomposition", " + ".join(["%.2f %s" % (v, k.composition.formula) for k, v in decomp.items()])),
|
||||
# ]))
|
||||
#
|
||||
# import pandas as pd
|
||||
# return pd.DataFrame(rows, columns=list(rows[0].keys()) if rows else None)
|
||||
#
|
||||
# def print_dataframes(self, with_spglib=False, file=sys.stdout, verbose=0) -> None:
|
||||
# """
|
||||
# Print pandas dataframe to file `file`.
|
||||
#
|
||||
# Args:
|
||||
# with_spglib: True to compute spacegroup with spglib.
|
||||
# file: Output stream.
|
||||
# verbose: Verbosity level.
|
||||
# """
|
||||
# print_dataframe(self.dataframe, file=file)
|
||||
# if verbose:
|
||||
# from abipy.core.structure import dataframes_from_structures
|
||||
# dfs = dataframes_from_structures(self.structures, index=self.mpids, with_spglib=with_spglib)
|
||||
# print_dataframe(dfs.lattice, title="Lattice parameters:", file=file)
|
||||
# if verbose > 1:
|
||||
# print_dataframe(dfs.coords, title="Atomic positions (columns give the site index):", file=file)
|
||||
|
||||
|
||||
class DatabaseStructures(NotebookWriter):
|
||||
|
|
|
@ -41,14 +41,12 @@ __all__ = [
|
|||
]
|
||||
|
||||
|
||||
def mp_match_structure(obj, api_key=None, endpoint=None, final=True):
|
||||
def mp_match_structure(obj):
|
||||
"""
|
||||
Finds matching structures on the Materials Project database.
|
||||
|
||||
Args:
|
||||
obj: filename or |Structure| object.
|
||||
api_key (str): A String API key for accessing the MaterialsProject REST interface.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
final (bool): Whether to get the final structure, or the initial
|
||||
(pre-relaxation) structure. Defaults to True.
|
||||
|
||||
|
@ -62,12 +60,14 @@ def mp_match_structure(obj, api_key=None, endpoint=None, final=True):
|
|||
|
||||
from abipy.core import restapi
|
||||
structures, mpids = [], []
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
with restapi.get_mprester() as rest:
|
||||
try:
|
||||
if getattr(rest, "get_data") is None:
|
||||
raise RuntimeError("mp_match_structure requires mp-api, please install it with `pip install mp-api`")
|
||||
|
||||
mpids = rest.find_structure(structure)
|
||||
if mpids:
|
||||
structures = [Structure.from_mpid(mid, final=final, api_key=api_key, endpoint=endpoint)
|
||||
for mid in mpids]
|
||||
structures = [Structure.from_mpid(mid) for mid in mpids]
|
||||
|
||||
except Exception as exc:
|
||||
cprint(str(exc), "red")
|
||||
|
@ -80,7 +80,7 @@ def mp_match_structure(obj, api_key=None, endpoint=None, final=True):
|
|||
return restapi.MpStructures(structures=structures, ids=mpids)
|
||||
|
||||
|
||||
def mp_search(chemsys_formula_id, api_key=None, endpoint=None):
|
||||
def mp_search(chemsys_formula_id):
|
||||
"""
|
||||
Connect to the materials project database.
|
||||
Get a list of structures corresponding to a chemical system, formula, or materials_id.
|
||||
|
@ -88,32 +88,32 @@ def mp_search(chemsys_formula_id, api_key=None, endpoint=None):
|
|||
Args:
|
||||
chemsys_formula_id (str): A chemical system (e.g., Li-Fe-O),
|
||||
or formula (e.g., Fe2O3) or materials_id (e.g., mp-1234).
|
||||
api_key (str): A String API key for accessing the MaterialsProject REST interface.
|
||||
If this is None, the code will check if there is a `PMG_MAPI_KEY` in your .pmgrc.yaml.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
|
||||
Returns:
|
||||
:class:`MpStructures` object with
|
||||
List of Structure objects, Materials project ids associated to structures.
|
||||
and List of dictionaries with MP data (same order as structures).
|
||||
|
||||
Note that the attributes evalute to False if no match is found
|
||||
Note that the attributes evalute to False if no match is found.
|
||||
"""
|
||||
chemsys_formula_id = chemsys_formula_id.replace(" ", "")
|
||||
|
||||
structures, mpids, data = [], [], None
|
||||
from abipy.core import restapi
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
from pymatgen.ext.matproj import MPRestError
|
||||
with restapi.get_mprester() as rest:
|
||||
try:
|
||||
if getattr(rest, "get_data") is None:
|
||||
raise RuntimeError("mp_search requires mp-api, please install it with `pip install mp-api`")
|
||||
|
||||
data = rest.get_data(chemsys_formula_id, prop="")
|
||||
if data:
|
||||
structures = [Structure.from_str(d["cif"], fmt="cif", primitive=False, sort=False)
|
||||
for d in data]
|
||||
structures = [Structure.from_str(d["cif"], fmt="cif", primitive=False, sort=False) for d in data]
|
||||
mpids = [d["material_id"] for d in data]
|
||||
# Want AbiPy structure.
|
||||
structures = list(map(Structure.as_structure, structures))
|
||||
|
||||
except rest.Error as exc:
|
||||
except MPRestError:
|
||||
cprint(str(exc), "magenta")
|
||||
|
||||
return restapi.MpStructures(structures, mpids, data=data)
|
||||
|
@ -194,10 +194,13 @@ class Structure(pmg_Structure, NotebookWriter):
|
|||
- Objects with a ``structure`` attribute.
|
||||
- ASE atoms.
|
||||
"""
|
||||
if isinstance(obj, cls): return obj
|
||||
if isinstance(obj, cls):
|
||||
return obj
|
||||
|
||||
if isinstance(obj, pmg_Structure):
|
||||
obj.__class__ = cls
|
||||
return obj
|
||||
|
||||
if hasattr(obj, "ase_objtype"):
|
||||
# ASE Atoms.
|
||||
from pymatgen.io.ase import AseAtomsAdaptor
|
||||
|
@ -331,7 +334,7 @@ class Structure(pmg_Structure, NotebookWriter):
|
|||
return new
|
||||
|
||||
@classmethod
|
||||
def from_mpid(cls, material_id: str, final=True, api_key=None, endpoint=None) -> Structure:
|
||||
def from_mpid(cls, material_id: str) -> Structure:
|
||||
"""
|
||||
Get a Structure corresponding to a material_id.
|
||||
|
||||
|
@ -339,15 +342,6 @@ class Structure(pmg_Structure, NotebookWriter):
|
|||
material_id (str): Materials Project material_id (a string, e.g., mp-1234).
|
||||
final (bool): Whether to get the final structure, or the initial
|
||||
(pre-relaxation) structure. Defaults to True.
|
||||
api_key (str): A String API key for accessing the MaterialsProject
|
||||
REST interface. Please apply on the Materials Project website for one.
|
||||
If this is None, the code will check if there is a ``PMG_MAPI_KEY`` in your .pmgrc.yaml.
|
||||
If so, it will use that environment
|
||||
This makes easier for heavy users to simply add this environment variable
|
||||
to their setups and MPRester can then be called without any arguments.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
Defaults to the standard Materials Project REST address, but
|
||||
can be changed to other urls implementing a similar interface.
|
||||
|
||||
Returns: |Structure| object.
|
||||
"""
|
||||
|
@ -357,9 +351,8 @@ class Structure(pmg_Structure, NotebookWriter):
|
|||
|
||||
# Get pytmatgen structure and convert it to abipy structure
|
||||
from abipy.core import restapi
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
new = rest.get_structure_by_material_id(material_id, final=final)
|
||||
#new = rest.get_structure_by_material_id(material_id)
|
||||
with restapi.get_mprester() as rest:
|
||||
new = rest.get_structure_by_material_id(material_id)
|
||||
return cls.as_structure(new)
|
||||
|
||||
@classmethod
|
||||
|
@ -841,8 +834,14 @@ class Structure(pmg_Structure, NotebookWriter):
|
|||
s = self.get_sorted_structure()
|
||||
ase_adaptor = AseAtomsAdaptor()
|
||||
ase_atoms = ase_adaptor.get_atoms(structure=s)
|
||||
standardized = spglib.standardize_cell(ase_atoms, to_primitive=1, no_idealize=no_idealize,
|
||||
|
||||
#standardized = spglib.standardize_cell(ase_atoms, to_primitive=1, no_idealize=no_idealize,
|
||||
# symprec=symprec, angle_tolerance=angle_tolerance)
|
||||
|
||||
spglib_cell = (ase_atoms.cell, ase_atoms.get_scaled_positions(), ase_atoms.get_atomic_numbers())
|
||||
standardized = spglib.standardize_cell(spglib_cell, to_primitive=1, no_idealize=no_idealize,
|
||||
symprec=symprec, angle_tolerance=angle_tolerance)
|
||||
|
||||
standardized_ase_atoms = Atoms(scaled_positions=standardized[1], numbers=standardized[2], cell=standardized[0])
|
||||
standardized_structure = ase_adaptor.get_structure(standardized_ase_atoms)
|
||||
|
||||
|
|
|
@ -340,7 +340,8 @@ class AbipyTest(PymatgenTest):
|
|||
@staticmethod
|
||||
def test_mprester():
|
||||
"""Skip MP rester tests."""
|
||||
raise unittest.SkipTest("MPRester tests have been disabled")
|
||||
#raise unittest.SkipTest("MPRester tests have been disabled")
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def has_matplotlib(version: Optional[str] = None, op: str = ">=") -> bool:
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
# Manager used for github actions.
|
||||
qadapters:
|
||||
-
|
||||
priority: 1
|
||||
queue:
|
||||
qname: travis
|
||||
qname: github
|
||||
qtype: shell
|
||||
job:
|
||||
mpi_runner: mpirun
|
|
@ -127,7 +127,7 @@ class DdbFile(TextFile, Has_Structure, NotebookWriter):
|
|||
return cls(tmp_filepath)
|
||||
|
||||
@classmethod
|
||||
def from_mpid(cls, material_id, api_key=None, endpoint=None) -> DdbFile:
|
||||
def from_mpid(cls, material_id) -> DdbFile:
|
||||
"""
|
||||
Fetch DDB file corresponding to a materials project ``material_id``,
|
||||
save it to temporary file and return new DdbFile object.
|
||||
|
@ -136,17 +136,17 @@ class DdbFile(TextFile, Has_Structure, NotebookWriter):
|
|||
|
||||
Args:
|
||||
material_id (str): Materials Project material_id (e.g., mp-1234).
|
||||
api_key (str): A String API key for accessing the MaterialsProject REST interface.
|
||||
If None, the code will check if there is a `PMG_MAPI_KEY` in your .pmgrc.yaml.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
Defaults to the standard Materials Project REST address
|
||||
"""
|
||||
material_id = str(material_id)
|
||||
if not material_id.startswith("mp-"):
|
||||
raise ValueError("Materials project ID should start with mp-")
|
||||
|
||||
from abipy.core import restapi
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
with restapi.get_mprester() as rest:
|
||||
|
||||
if getattr(rest, "_make_request") is None:
|
||||
raise RuntimeError("from_mpid requires mp-api, please install it with `pip install mp-api`")
|
||||
|
||||
ddb_string = rest._make_request("/materials/%s/abinit_ddb" % material_id)
|
||||
|
||||
_, tmpfile = tempfile.mkstemp(prefix=material_id, suffix='_DDB')
|
||||
|
@ -2926,16 +2926,12 @@ class DdbRobot(Robot):
|
|||
return filename.endswith("_" + cls.EXT)
|
||||
|
||||
@classmethod
|
||||
def from_mpid_list(cls, mpid_list, api_key=None, endpoint=None):
|
||||
def from_mpid_list(cls, mpid_list):
|
||||
"""
|
||||
Build a DdbRobot from list of materials-project ids.
|
||||
|
||||
Args:
|
||||
mpid_list: List of Materials Project material_ids (e.g., ["mp-1234", "mp-1245"]).
|
||||
api_key (str): A String API key for accessing the MaterialsProject REST interface.
|
||||
If None, the code will check if there is a `PMG_MAPI_KEY` in your .pmgrc.yaml.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
Defaults to the standard Materials Project REST address
|
||||
"""
|
||||
from abipy.core import restapi
|
||||
ddb_files = []
|
||||
|
@ -2943,10 +2939,15 @@ class DdbRobot(Robot):
|
|||
|
||||
if not mpid_list:
|
||||
raise RuntimeError("No structure found in the MP database")
|
||||
|
||||
if any(not s.startswith("mp-") for s in mpid_list):
|
||||
raise ValueError(f"Invalid mp-in in list:\n{mpid_list}")
|
||||
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
with restapi.get_mprester() as rest:
|
||||
|
||||
if getattr(rest, "_make_request") is None:
|
||||
raise RuntimeError("from_mpid_list requires mp-api, please install it with `pip install mp-api`")
|
||||
|
||||
for mpid in mpid_list:
|
||||
try:
|
||||
ddb_string = rest._make_request("/materials/%s/abinit_ddb" % mpid)
|
||||
|
|
|
@ -458,7 +458,7 @@ class ElectronBands(Has_Structure):
|
|||
raise TypeError("Don't know how to extract ebands from object `%s`" % type(obj))
|
||||
|
||||
@classmethod
|
||||
def from_mpid(cls, material_id, api_key=None, endpoint=None,
|
||||
def from_mpid(cls, material_id,
|
||||
nelect=None, has_timerev=True,
|
||||
nspinor=1, nspden=None, line_mode=True) -> ElectronBands:
|
||||
"""
|
||||
|
@ -467,16 +467,6 @@ class ElectronBands(Has_Structure):
|
|||
|
||||
Args:
|
||||
material_id (str): Materials Project material_id (a string, e.g., mp-1234).
|
||||
api_key (str): A String API key for accessing the MaterialsProject
|
||||
REST interface. Please apply on the Materials Project website for one.
|
||||
If this is None, the code will check if there is a `PMG_MAPI_KEY` in
|
||||
your .pmgrc.yaml. If so, it will use that environment
|
||||
This makes easier for heavy users to simply add
|
||||
this environment variable to their setups and MPRester can
|
||||
then be called without any arguments.
|
||||
endpoint (str): Url of endpoint to access the MaterialsProject REST interface.
|
||||
Defaults to the standard Materials Project REST address, but
|
||||
can be changed to other urls implementing a similar interface.
|
||||
nelect: Number of electrons in the unit cell.
|
||||
If None, this value is automatically computed using the Fermi level (if metal)
|
||||
or the VBM indices reported in the JSON document sent by the MP database.
|
||||
|
@ -491,7 +481,11 @@ class ElectronBands(Has_Structure):
|
|||
|
||||
# Get pytmatgen structure and convert it to an AbiPy structure
|
||||
from abipy.core import restapi
|
||||
with restapi.get_mprester(api_key=api_key, endpoint=endpoint) as rest:
|
||||
with restapi.get_mprester() as rest:
|
||||
|
||||
if getattr(rest, "get_structure_by_material_id") is None:
|
||||
raise RuntimeError("from_mpid requires mp-api, please install it with `pip install mp-api`")
|
||||
|
||||
pmgb = rest.get_bandstructure_by_material_id(material_id=material_id, line_mode=line_mode)
|
||||
if pmgb is None: return None
|
||||
|
||||
|
@ -5487,9 +5481,9 @@ class Bands3D(Has_Structure):
|
|||
except ImportError:
|
||||
try:
|
||||
from skimage.measure import marching_cubes
|
||||
except ImportError:
|
||||
except ImportError as exc:
|
||||
raise ImportError("scikit-image not installed.\n"
|
||||
"Please install with it with `conda install scikit-image` or `pip install scikit-image`")
|
||||
"Please install with it with `conda install scikit-image` or `pip install scikit-image`") from exc
|
||||
|
||||
e0 = self.get_e0(e0)
|
||||
isobands = self.get_isobands(e0)
|
||||
|
|
|
@ -206,8 +206,7 @@ class OncvParser(BaseParser):
|
|||
if self.rc5 is None:
|
||||
raise self.Error(f"Cannot find magic line starting with `{header}` in: {self.filepath}")
|
||||
|
||||
# Parse ATOM and Reference configuration
|
||||
# Example:
|
||||
# Parse ATOM and Reference configuration. Example:
|
||||
"""
|
||||
#
|
||||
# n l f energy (Ha)
|
||||
|
|
|
@ -310,25 +310,34 @@ class OncvGenerator(_PseudoGenerator):
|
|||
"""
|
||||
|
||||
@classmethod
|
||||
def from_file(cls, path: str, calc_type: str, workdir: Optional[str] = None) -> OncvGenerator:
|
||||
def from_file(cls, path: str, calc_type: str, use_mgga: bool, workdir: Optional[str] = None) -> OncvGenerator:
|
||||
"""
|
||||
Build the object from a file containing the input parameters.
|
||||
"""
|
||||
with open(path, "rt") as fh:
|
||||
input_str = fh.read()
|
||||
return cls(input_str, calc_type, workdir=workdir)
|
||||
return cls(input_str, calc_type, use_mgga=use_mgga, workdir=workdir)
|
||||
|
||||
def __init__(self, input_str: str, calc_type: str, workdir: Optional[str] = None):
|
||||
def __init__(self, input_str: str, calc_type: str, use_mgga: bool, workdir: Optional[str] = None):
|
||||
super().__init__(workdir=workdir)
|
||||
|
||||
self._input_str = input_str
|
||||
self.calc_type = calc_type
|
||||
self.use_mgga = use_mgga
|
||||
|
||||
self._executable = {
|
||||
"non-relativistic": which("oncvpspnr.x"),
|
||||
"scalar-relativistic": which("oncvpsp.x"),
|
||||
"fully-relativistic": which("oncvpspr.x"),
|
||||
}[calc_type]
|
||||
if self.use_mgga:
|
||||
if calc_type != "scalar-relativistic":
|
||||
raise ValueError("Only scalar-relativistic pseudos are supported in metagga mode!")
|
||||
self._executable = {
|
||||
"scalar-relativistic": which("oncvpspm.x"),
|
||||
}[calc_type]
|
||||
|
||||
else:
|
||||
self._executable = {
|
||||
"non-relativistic": which("oncvpspnr.x"),
|
||||
"scalar-relativistic": which("oncvpsp.x"),
|
||||
"fully-relativistic": which("oncvpspr.x"),
|
||||
}[calc_type]
|
||||
|
||||
if self._executable is None:
|
||||
msg = "Cannot find oncvpsp executable in $PATH. Use `export PATH=dir_with_oncvps_executable:$PATH`"
|
||||
|
|
|
@ -15,14 +15,13 @@ from tabulate import tabulate
|
|||
from monty.string import marquee
|
||||
from monty.functools import prof_main
|
||||
from monty.termcolor import cprint
|
||||
from pymatgen.io.vasp.outputs import Xdatcar
|
||||
from abipy import abilab
|
||||
from abipy.core.symmetries import AbinitSpaceGroup
|
||||
from abipy.core.kpoints import Ktables, Kpoint, IrredZone
|
||||
from abipy.core.structure import diff_structures
|
||||
from abipy.iotools.visualizer import Visualizer
|
||||
from abipy.iotools.xsf import xsf_write_structure
|
||||
from abipy.abio import factories
|
||||
from abipy import abilab
|
||||
|
||||
|
||||
def save_structure(structure, options) -> None:
|
||||
|
@ -131,7 +130,7 @@ Usage example:
|
|||
`Ir-O-*` for wildcard pattern matching.
|
||||
Print info and Abinit input files. Use e.g. `-f POSCAR`
|
||||
to change output format. `-f None` to disable structure output.
|
||||
abistruct.py mp_pd FILE-or-elements => Generate phase diagram with entries from the Materials Project.
|
||||
|
||||
abistruct.py mp_ebands FILE => Fetch electron band structure from MP database. Print gaps.
|
||||
Accept FILE with structure if ebands from structure is wanted
|
||||
or mp id e.g. "mp-149 or list of elements e.g `Li-Fe-O` or chemical formula.
|
||||
|
@ -141,6 +140,8 @@ Use `abistruct.py --help` for help and `abistruct.py COMMAND --help` to get the
|
|||
Use `-v` to increase verbosity level (can be supplied multiple times e.g -vv).
|
||||
"""
|
||||
|
||||
#abistruct.py mp_pd FILE-or-elements => Generate phase diagram with entries from the Materials Project.
|
||||
|
||||
|
||||
def get_parser(with_epilog=False):
|
||||
|
||||
|
@ -440,9 +441,6 @@ closest points in this particular structure. This is usually what you want in a
|
|||
|
||||
# Options for commands accessing the materials project database.
|
||||
mp_rest_parser = argparse.ArgumentParser(add_help=False)
|
||||
mp_rest_parser.add_argument("--mapi-key", default=None,
|
||||
help="Pymatgen PMG_MAPI_KEY. Use value in .pmgrc.yaml if not specified.")
|
||||
mp_rest_parser.add_argument("--endpoint", help="Pymatgen database.", default="https://www.materialsproject.org/rest/v2")
|
||||
mp_rest_parser.add_argument("-b", "--browser", default=False, action='store_true',
|
||||
help="Open materials-project webpages in browser")
|
||||
|
||||
|
@ -467,15 +465,15 @@ closest points in this particular structure. This is usually what you want in a
|
|||
add_format_arg(p_mpsearch, default="abivars")
|
||||
|
||||
# Subparser for mp_pd command.
|
||||
p_mp_pda = subparsers.add_parser('mp_pd', parents=[mp_rest_parser, copts_parser],
|
||||
help=("Generate phase diagram with entries from the Materials Project. "
|
||||
"Requires internet connection and PMG_MAPI_KEY"))
|
||||
p_mp_pda.add_argument("file_or_elements", type=str, default=None,
|
||||
help="FILE with structure or elements e.g., Li-Fe-O).")
|
||||
p_mp_pda.add_argument("-u", "--show-unstable", type=int, default=0,
|
||||
help="""Whether unstable phases will be plotted as
|
||||
well as red crosses. If a number > 0 is entered, all phases with
|
||||
ehull < show_unstable will be shown.""")
|
||||
#p_mp_pda = subparsers.add_parser('mp_pd', parents=[mp_rest_parser, copts_parser],
|
||||
# help=("Generate phase diagram with entries from the Materials Project. "
|
||||
# "Requires internet connection and PMG_MAPI_KEY"))
|
||||
#p_mp_pda.add_argument("file_or_elements", type=str, default=None,
|
||||
# help="FILE with structure or elements e.g., Li-Fe-O).")
|
||||
#p_mp_pda.add_argument("-u", "--show-unstable", type=int, default=0,
|
||||
# help="""Whether unstable phases will be plotted as
|
||||
#well as red crosses. If a number > 0 is entered, all phases with
|
||||
#ehull < show_unstable will be shown.""")
|
||||
|
||||
# Subparser for mp_ebands command.
|
||||
p_mp_ebands = subparsers.add_parser('mp_ebands', parents=[copts_parser, mp_rest_parser],
|
||||
|
@ -916,7 +914,7 @@ def main():
|
|||
print(structure.spget_summary(verbose=options.verbose))
|
||||
print("\n")
|
||||
|
||||
print(marquee("Little Group", mark="="))
|
||||
print(marquee("Little group", mark="="))
|
||||
ltk = spgrp.find_little_group(kpoint=options.kpoint)
|
||||
print(ltk.to_string(verbose=options.verbose))
|
||||
|
||||
|
@ -952,8 +950,7 @@ def main():
|
|||
|
||||
elif options.command == "mp_id":
|
||||
# Get the Structure corresponding to material_id.
|
||||
structure = abilab.Structure.from_mpid(options.mpid, final=True,
|
||||
api_key=options.mapi_key, endpoint=options.endpoint)
|
||||
structure = abilab.Structure.from_mpid(options.mpid)
|
||||
# Convert to format and print it.
|
||||
print(structure.convert(fmt=options.format))
|
||||
|
||||
|
@ -990,30 +987,30 @@ def main():
|
|||
if options.browser:
|
||||
mp.open_browser(limit=None if options.verbose == 2 else 10)
|
||||
|
||||
elif options.command == "mp_pd":
|
||||
if os.path.exists(options.file_or_elements):
|
||||
structure = abilab.Structure.from_file(options.file_or_elements)
|
||||
elements = structure.symbol_set
|
||||
else:
|
||||
elements = options.file_or_elements.split("-")
|
||||
#elif options.command == "mp_pd":
|
||||
# if os.path.exists(options.file_or_elements):
|
||||
# structure = abilab.Structure.from_file(options.file_or_elements)
|
||||
# elements = structure.symbol_set
|
||||
# else:
|
||||
# elements = options.file_or_elements.split("-")
|
||||
|
||||
if options.verbose > 1: print("Building phase-diagram for elements:", elements)
|
||||
with abilab.restapi.get_mprester(api_key=options.mapi_key, endpoint=options.endpoint) as rest:
|
||||
pdr = rest.get_phasediagram_results(elements)
|
||||
pdr.print_dataframes(verbose=options.verbose)
|
||||
pdr.plot(show_unstable=options.show_unstable)
|
||||
# if options.verbose > 1: print("Building phase-diagram for elements:", elements)
|
||||
# with abilab.restapi.get_mprester() as rest:
|
||||
# pdr = rest.get_phasediagram_results(elements)
|
||||
# pdr.print_dataframes(verbose=options.verbose)
|
||||
# pdr.plot(show_unstable=options.show_unstable)
|
||||
|
||||
elif options.command == "mp_ebands":
|
||||
if os.path.exists(options.chemsys_formula_id):
|
||||
mp = abilab.mp_match_structure(options.chemsys_formula_id)
|
||||
for mpid in mp.ids:
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid, api_key=options.mapi_key, endpoint=options.endpoint)
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid)
|
||||
print(ebands)
|
||||
else:
|
||||
if options.chemsys_formula_id.startswith("mp-"):
|
||||
# Assume valid mp identifier.
|
||||
mpid = options.chemsys_formula_id
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid, api_key=options.mapi_key, endpoint=options.endpoint)
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid)
|
||||
print(ebands)
|
||||
else:
|
||||
mp = abilab.mp_search(options.chemsys_formula_id)
|
||||
|
@ -1025,7 +1022,7 @@ def main():
|
|||
if structure is None:
|
||||
cprint("ignoring mpid %s because cannot find structure" % mpid, "red")
|
||||
continue
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid, api_key=options.mapi_key, endpoint=options.endpoint)
|
||||
ebands = abilab.ElectronBands.from_mpid(mpid)
|
||||
if ebands is None:
|
||||
cprint("Cannot get ebands for structure:\n%s" % str(structure), "red")
|
||||
else:
|
||||
|
@ -1058,6 +1055,7 @@ def main():
|
|||
structures = hist.structures
|
||||
|
||||
elif "XDATCAR" in filepath:
|
||||
from pymatgen.io.vasp.outputs import Xdatcar
|
||||
structures = Xdatcar(filepath).structures
|
||||
if not structures:
|
||||
raise RuntimeError("Your Xdatcar contains only one structure. Due to a bug "
|
||||
|
|
|
@ -181,7 +181,7 @@ def oncv_run(options):
|
|||
fr="fully-relativistic")[options.rel]
|
||||
|
||||
# Build Generator and start generation.
|
||||
psgen = OncvGenerator.from_file(in_path, calc_type, workdir=None)
|
||||
psgen = OncvGenerator.from_file(in_path, calc_type, options.use_mgga, workdir=None)
|
||||
|
||||
print(psgen.input_str)
|
||||
print("Using executable:\n\t", psgen.executable)
|
||||
|
@ -209,7 +209,7 @@ def oncv_run(options):
|
|||
# Transfer final output file.
|
||||
shutil.copy(psgen.stdout_path, out_path)
|
||||
|
||||
# Parse the output file
|
||||
# Parse the output file.
|
||||
onc_parser = OncvParser(out_path).scan()
|
||||
if not onc_parser.run_completed:
|
||||
cprint("oncvpsp output is not completed. Exiting", "red")
|
||||
|
@ -332,6 +332,7 @@ def get_parser(with_epilog=False):
|
|||
p_run = subparsers.add_parser('run', parents=[copts_parser, plot_parser], help=oncv_run.__doc__)
|
||||
p_run.add_argument("--rel", default="from_file", help=("Relativistic treatment: `nor` for non-relativistic, "
|
||||
"`sr` for scalar-relativistic, `fr` for fully-relativistic. Default: `from_file` i.e. detected from file"))
|
||||
p_run.add_argument("--use-mgga", action='store_true', default=False, help="Produce mega-gga pseudo with oncvpspm.x")
|
||||
|
||||
# Subparser for print command.
|
||||
p_print = subparsers.add_parser('print', parents=[copts_parser], help=oncv_print.__doc__)
|
||||
|
|
|
@ -85,7 +85,7 @@ def print_doc(function, **kwargs): # pragma: no cover
|
|||
def ipw_listdir(top=".", recurse=True, widget_type="dropdown"): # pragma: no cover
|
||||
"""
|
||||
Return an ipython widget listing all the files located within the directory ``top``
|
||||
that can be inspected with :ref:`abiopen.py`. The user can select the file in the widget
|
||||
that can be inspected with abiopen.py. The user can select the file in the widget
|
||||
and print info on the corresponding file inside the notebook.
|
||||
|
||||
Args:
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e # exit on first error, -v print each command
|
||||
|
||||
# Install conda with travis: https://conda.io/docs/travis.html
|
||||
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
||||
curl -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh;
|
||||
else
|
||||
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||
fi
|
||||
|
||||
bash miniconda.sh -b -p ${HOME}/miniconda
|
||||
export PATH="${HOME}/miniconda/bin:${PATH}"
|
||||
hash -r
|
||||
|
||||
conda config --set always_yes yes --set changeps1 yes
|
||||
conda update -q conda
|
||||
# Useful for debugging any issues with conda
|
||||
conda info -a
|
||||
conda config --add channels conda-forge
|
||||
echo "Installing abinit from abinit channel in abinit-environment..."
|
||||
conda create -q -n abinit-environment python=${TRAVIS_PYTHON_VERSION}
|
||||
source activate abinit-environment
|
||||
#conda install -y -c abinit abinit=${ABINIT_VERSION}
|
||||
conda install -y -c conda-forge abinit=${ABINIT_VERSION}
|
||||
abinit --version
|
||||
abinit --build
|
||||
|
||||
echo "Creating test-environment for python stack..."
|
||||
conda create -q -n test-environment python=${TRAVIS_PYTHON_VERSION}
|
||||
source activate test-environment
|
|
@ -1,17 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e # exit on first error
|
||||
|
||||
echo "Installing bader executable (http://theory.cm.utexas.edu/henkelman/code/bader/) from matsci ..."
|
||||
conda install -y -c matsci bader
|
||||
#conda install -c abinit apscheduler==2.1.0
|
||||
#pip install apscheduler==2.1.0
|
||||
|
||||
echo "Installing requirements listed requirements.txt and requirements-optional.txt ..."
|
||||
# https://github.com/ContinuumIO/anaconda-issues/issues/542
|
||||
conda install -y -c anaconda setuptools
|
||||
conda install nomkl
|
||||
conda install -y --file ./requirements.txt
|
||||
conda install -y --file ./requirements-optional.txt
|
||||
conda install -y -c conda-forge graphviz python-graphviz
|
||||
|
||||
echo "Installation completed"
|
|
@ -21,7 +21,7 @@ embedding Package
|
|||
:show-inheritance:
|
||||
|
||||
:mod:`utils_ifc` Module
|
||||
----------------------
|
||||
-----------------------
|
||||
|
||||
.. automodule:: abipy.embedding.utils_ifc
|
||||
:members:
|
||||
|
|
|
@ -86,7 +86,7 @@ flowtk Package
|
|||
:show-inheritance:
|
||||
|
||||
:mod:`gw_works` Module
|
||||
----------------
|
||||
----------------------
|
||||
|
||||
.. automodule:: abipy.flowtk.gw_works
|
||||
:members:
|
||||
|
|
|
@ -20,6 +20,8 @@ API documentation
|
|||
flowtk_api.rst
|
||||
iotools_api.rst
|
||||
lumi_api.rst
|
||||
ml_api.rst
|
||||
ppcodes_api.rst
|
||||
panels_api.rst
|
||||
tools_api.rst
|
||||
waves_api.rst
|
||||
|
|
|
@ -37,7 +37,7 @@ ml Package
|
|||
|
||||
|
||||
:mod:`ml_phonopy` Package
|
||||
-------------------------------
|
||||
-------------------------
|
||||
|
||||
.. automodule:: abipy.ml.ml_phonopy
|
||||
:members:
|
|
@ -4,7 +4,7 @@
|
|||
Flows How-To
|
||||
************
|
||||
|
||||
This is a list of FAQs about the AbiPy flows and the :ref:`abirun.py` script.
|
||||
This is a list of FAQs about the AbiPy flows and the abirun.py_ script.
|
||||
Feel free to suggest new entries!
|
||||
|
||||
.. important::
|
||||
|
@ -16,7 +16,7 @@ Feel free to suggest new entries!
|
|||
Suggestions:
|
||||
|
||||
* Start with the examples available in examples/flows before embarking on large scale calculations.
|
||||
* Make sure the Abinit executable compiled on the machine can be executed both on the front end
|
||||
* Make sure the Abinit executable compiled on the machine can be executed both on the front end
|
||||
and the compute node (ask your sysadmin)
|
||||
* If you are running on clusters in which the architecture of the compute node is completely different
|
||||
from the one available on the front end, use ``shell_runner``
|
||||
|
@ -25,8 +25,8 @@ Suggestions:
|
|||
Do not:
|
||||
|
||||
* Change manually the input files and the submission scripts
|
||||
* Submit jobs manually when the scheduler is running
|
||||
* Use a too small delay for the scheduler
|
||||
* Submit jobs manually when the scheduler is running
|
||||
* Use a too small delay for the scheduler
|
||||
|
||||
|
||||
.. contents::
|
||||
|
@ -35,7 +35,7 @@ Do not:
|
|||
How to get all the TaskManager options
|
||||
--------------------------------------
|
||||
|
||||
The :ref:`abidoc.py` script provides three commands to get the documentation
|
||||
The abidoc.py_ script provides three commands to get the documentation
|
||||
for the options supported in ``manager.yml`` and ``scheduler.yml``.
|
||||
|
||||
Use::
|
||||
|
@ -84,10 +84,10 @@ Add the following options to scheduler.yml
|
|||
# Maximum number of cores that can be used by the scheduler.
|
||||
max_ncores_used: 4
|
||||
|
||||
How to reduce the number of files produced by the Flow
|
||||
How to reduce the number of files produced by the Flow
|
||||
------------------------------------------------------
|
||||
|
||||
When running many calculations,
|
||||
When running many calculations,
|
||||
Use ``prtwf -1`` to tell Abinit to produce the wavefunction file only
|
||||
if SCF cycle didn't converged so that AbiPy can reuse the file to restart the calculation.
|
||||
|
||||
|
@ -102,14 +102,14 @@ How to extend tasks/works with specialized code
|
|||
-----------------------------------------------
|
||||
|
||||
Remember that pickle_ does not support classes defined inside scripts (`__main__`).
|
||||
This means that `abirun.py` will likely raise an exception when trying to
|
||||
This means that `abirun.py` will likely raise an exception when trying to
|
||||
reconstruct the object from the pickle file:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
AttributeError: Cannot get attribute 'MyWork' on <module '__main__'
|
||||
AttributeError: Cannot get attribute 'MyWork' on <module '__main__'
|
||||
|
||||
If you need to subclass one of the AbiPy Tasks/Works/Flows, define the subclass
|
||||
If you need to subclass one of the AbiPy Tasks/Works/Flows, define the subclass
|
||||
in a separated python module and import the module inside your script.
|
||||
We suggest to create a python module in the AbiPy package e.g. `abipy/flowtk/my_works.py`
|
||||
in order to have an absolute import that allows one to use
|
||||
|
@ -133,12 +133,12 @@ to cancel all jobs of the flow that are in queue and kill the scheduler.
|
|||
Compare multiple output files
|
||||
-----------------------------
|
||||
|
||||
The :ref:`abicomp.py` script
|
||||
The abicomp.py_ script
|
||||
|
||||
Try to understand why a task failed
|
||||
-----------------------------------
|
||||
|
||||
There are several reasons why a task could fail.
|
||||
Some of these reasons could be related to hardware failure, disk quota,
|
||||
Some of these reasons could be related to hardware failure, disk quota,
|
||||
OS errors or resource manager errors.
|
||||
Others are related to Abinit-specific errors.
|
||||
|
|
|
@ -68,8 +68,11 @@
|
|||
|
||||
.. Links to abipy scripts.
|
||||
.. _abiopen.py: https://abinit.github.io/abipy/scripts/abiopen.html
|
||||
.. _abistruct.py: https://abinit.github.io/abipy/scripts/abistruct.html
|
||||
.. _abidoc.py: https://abinit.github.io/abipy/scripts/abidoc.html
|
||||
.. _abiview.py: https://abinit.github.io/abipy/scripts/abiview.html
|
||||
.. _abicomp.py: https://abinit.github.io/abipy/scripts/abicomp.html
|
||||
.. _abinp.py: https://abinit.github.io/abipy/scripts/abinp.html
|
||||
.. _abicheck.py: https://abinit.github.io/abipy/scripts/abicheck.html
|
||||
.. _abips.py: https://abinit.github.io/abipy/scripts/abips.html
|
||||
.. _oncv.py: https://abinit.github.io/abipy/scripts/oncv.html
|
||||
|
@ -167,7 +170,7 @@
|
|||
|
||||
.. |download-with-anaconda| image:: https://anaconda.org/abinit/abipy/badges/installer/conda.svg
|
||||
:alt: Download with Anaconda
|
||||
:target: https://conda.anaconda.org/abinit
|
||||
:target: https://anaconda.org/conda-forge/abinit
|
||||
|
||||
.. |abipy-license| image:: https://img.shields.io/badge/license-GPL-blue.svg
|
||||
:alt: AbiPy license
|
||||
|
|
|
@ -4,26 +4,26 @@
|
|||
Post-processing How-To
|
||||
***********************
|
||||
|
||||
This is a list of FAQs about the usage of the AbiPy scripts.
|
||||
This is a list of FAQs about the usage of the AbiPy scripts.
|
||||
Feel free to suggest new entries!
|
||||
|
||||
.. contents::
|
||||
:backlinks: top
|
||||
|
||||
|
||||
Preliminary considerations
|
||||
Preliminary considerations
|
||||
---------------------------
|
||||
|
||||
The AbiPy scripts detect the file type by looking at the file extension
|
||||
The AbiPy scripts detect the file type by looking at the file extension
|
||||
so **don't change the file extension**.
|
||||
Also, remember that it is possible to get the documentation by just adding
|
||||
Also, remember that it is possible to get the documentation by just adding
|
||||
the ``--help`` option to the command line.
|
||||
For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
abistruct.py --help
|
||||
|
||||
|
||||
gives the documentation and usage examples for the abistruct.py_ script while:
|
||||
|
||||
.. code-block:: shell
|
||||
|
@ -38,7 +38,7 @@ Get information about a generic ``FILE``
|
|||
|
||||
Use::
|
||||
|
||||
abiopen.py FILE --print
|
||||
abiopen.py FILE --print
|
||||
|
||||
to print information about a file inside the terminal or
|
||||
|
||||
|
@ -46,7 +46,7 @@ to print information about a file inside the terminal or
|
|||
|
||||
to generate multiple matplotlib figures depending on FILE.
|
||||
|
||||
Use ``--verbose`` or ``-v`` to increase verbosity level.
|
||||
Use ``--verbose`` or ``-v`` to increase verbosity level.
|
||||
The option can be can be supplied multiple times e.g. ``-vv``.
|
||||
|
||||
Get all file extensions supported by ``abiopen.py``
|
||||
|
@ -59,7 +59,7 @@ Use::
|
|||
.. command-output:: abiopen.py --help
|
||||
|
||||
|
||||
Convert the structure stored in ``FILE`` to a different format
|
||||
Convert the structure stored in ``FILE`` to a different format
|
||||
--------------------------------------------------------------
|
||||
|
||||
Use::
|
||||
|
@ -69,7 +69,7 @@ Use::
|
|||
to read the structure from ``FILE`` and generate a CIF_ file (default behaviour).
|
||||
|
||||
The majority of the netcdf_ files produced by Abinit contain structural information
|
||||
so this command can be used with netcdf output files as well as Abinit input/output
|
||||
so this command can be used with netcdf output files as well as Abinit input/output
|
||||
files and all the other formats supported by pymatgen e.g. POSCAR files.
|
||||
Other formats can be specified with the ``-f`` option.
|
||||
For example::
|
||||
|
@ -97,13 +97,13 @@ First of all, one can use::
|
|||
|
||||
to print the crystalline structure and find the space group with the spglib_ library.
|
||||
|
||||
If the structure looks good, use the :ref:`abinp.py` script with the ``validate`` command as in::
|
||||
If the structure looks good, use the abinp.py_ script with the ``validate`` command as in::
|
||||
|
||||
abinp.py validate run.abi
|
||||
|
||||
abinp.py validate run.abi
|
||||
|
||||
to validate the input file with Abinit (requires ``manager.yml`` and, obviously, Abinit).
|
||||
|
||||
The script provides other options to invoke Abinit
|
||||
The script provides other options to invoke Abinit
|
||||
to get space group information, the list of k-points in the IBZ.
|
||||
the list of atomic perturbations for phonons or the list of autoparal configurations.
|
||||
See ``abinp.py --help`` for further info.
|
||||
|
@ -143,8 +143,8 @@ A similar interface is also available via::
|
|||
Get a quick look to a file
|
||||
--------------------------
|
||||
|
||||
The :ref:`abiview.py` script is especially designed for this task.
|
||||
The syntax is ``abiview.py COMMAND FILE`` where ``COMMAND`` is either
|
||||
The abiview.py_ script is especially designed for this task.
|
||||
The syntax is ``abiview.py COMMAND FILE`` where ``COMMAND`` is either
|
||||
the Abinit file extension (without ``.nc``, if any) or the AbiPy object we want to visualize.
|
||||
|
||||
To get a quick look at the DDB file, use::
|
||||
|
@ -157,9 +157,9 @@ If ``FILE`` contains electronic band energies, use e.g.::
|
|||
|
||||
abiview.py ebands out_GSR.nc
|
||||
|
||||
to plot the KS eigenvalues (the same command works for other files such as ``WFK.nc``, ``DEN.nc`` etc.
|
||||
to plot the KS eigenvalues (the same command works for other files such as ``WFK.nc``, ``DEN.nc`` etc.
|
||||
|
||||
Note that :ref:`abiview.py` uses a predefined logic to visualize the data.
|
||||
Note that abiview.py_ uses a predefined logic to visualize the data.
|
||||
There are options to tune some parameters and/or export data in different formats
|
||||
but exposing the AbiPy API from the command line is not easy.
|
||||
|
||||
|
@ -179,15 +179,15 @@ Visualize a structure
|
|||
---------------------
|
||||
|
||||
The visualization of the structure is delegated to external graphical applications
|
||||
that must be installed on your machine.
|
||||
AbiPy will extract the structure from ``FILE``, convert it to one of the formats
|
||||
that must be installed on your machine.
|
||||
AbiPy will extract the structure from ``FILE``, convert it to one of the formats
|
||||
supported by the graphical application and finally invoke the executable.
|
||||
If you have vesta_ installed in one of the standard
|
||||
If you have vesta_ installed in one of the standard
|
||||
locations of your machine, you can simply execute::
|
||||
|
||||
abistruct.py visualize FILE
|
||||
|
||||
inside the terminal.
|
||||
inside the terminal.
|
||||
Other applications can be specified with the ``--application`` option.
|
||||
At present, AbiPy supports vesta_, ovito_, xcrysden_, avogadro_, and v_sim_.
|
||||
|
||||
|
@ -251,7 +251,7 @@ with Abinit and a tolerance larger that the default value::
|
|||
|
||||
abistruct.py abispg problematic.cif --tolsym=1e-6
|
||||
|
||||
Hopefully, the code will detect the correct spacegroup, will re-symmetrize
|
||||
Hopefully, the code will detect the correct spacegroup, will re-symmetrize
|
||||
the initial lattice vectors and atomic positions and print the new symmetrized structure to terminal.
|
||||
|
||||
|
||||
|
@ -287,7 +287,7 @@ Use::
|
|||
|
||||
abistruct.py mp_search LiF
|
||||
|
||||
to search on the `materials project`_ database for structures corresponding to a
|
||||
to search on the `materials project`_ database for structures corresponding to a
|
||||
chemical system or formula e.g. ``Fe2O3`` or ``Li-Fe-O`` or
|
||||
``Ir-O-*`` for wildcard pattern matching.
|
||||
|
||||
|
@ -314,7 +314,7 @@ The script prints the results to terminal in tabular form:
|
|||
The script will try to connect to the materials project server.
|
||||
You need a ``~/.pmgrc.yaml`` configuration file inside your home directory
|
||||
with the authentication token **PMG_MAPI_KEY**.
|
||||
For further info please refer to the
|
||||
For further info please refer to the
|
||||
`pymatgen documentation <http://pymatgen.org/usage.html#pymatgen-matproj-rest-integration-with-the-materials-project-rest-api>`_
|
||||
|
||||
The script provides other commands to get (experimental) structures from the COD_ database,
|
||||
|
@ -326,7 +326,7 @@ Compare my structure with the Materials Project database
|
|||
|
||||
Let's assume we have performed a structural relaxation and we want
|
||||
to compare our results with the Materials Project data.
|
||||
One can use the :ref:`abicomp.py` structure to extract the structure from the HIST.nc_
|
||||
One can use the abicomp.py_ structure to extract the structure from the HIST.nc_
|
||||
file and compare the data with the database::
|
||||
|
||||
abicomp.py mp_structure ../abipy/data/refs/sic_relax_HIST.nc
|
||||
|
@ -370,23 +370,23 @@ to plot the SCF iterations or the steps of the structural relaxations or the DFP
|
|||
(depending on the content of run.abo).
|
||||
|
||||
Note that one can also use::
|
||||
|
||||
|
||||
abiview.py log run.log
|
||||
|
||||
to print the warnings/comments/errors reported in the Abinit log file ``run.log``.
|
||||
|
||||
Export bands to xmgrace format
|
||||
Export bands to xmgrace format
|
||||
------------------------------
|
||||
|
||||
Both |ElectronBands| and |PhononBands| provide a ``to_xmgrace`` method to produce xmgrace_ files.
|
||||
To export the data to xmgrace, use :ref:`abiview.py` with the ``--xmgrace`` option.
|
||||
To export the data to xmgrace, use abiview.py_ with the ``--xmgrace`` option.
|
||||
For electrons, use::
|
||||
|
||||
abiview.py ebands out_GSR.nc --xmgrace
|
||||
|
||||
and::
|
||||
|
||||
abiview.py phbands out_PHBST.nc -xmgrace
|
||||
abiview.py phbands out_PHBST.nc -xmgrace
|
||||
|
||||
for phonons.
|
||||
|
||||
|
@ -407,7 +407,7 @@ to visualize the Fermi surface with xcrysden_
|
|||
|
||||
.. code-block:: ipython
|
||||
|
||||
abifile.ebands.to_bxsf("mgb2.bxsf")
|
||||
abifile.ebands.to_bxsf("mgb2.bxsf")
|
||||
|
||||
.. important::
|
||||
|
||||
|
@ -416,23 +416,23 @@ to visualize the Fermi surface with xcrysden_
|
|||
Visualize phonon displacements
|
||||
------------------------------
|
||||
|
||||
AbiPy is interfaced with the phononwebsite_ project
|
||||
AbiPy is interfaced with the phononwebsite_ project
|
||||
If you have already installed the python package from `github <https://github.com/henriquemiranda/phononwebsite>`_
|
||||
it's possbile to export the ``PHBST.nc`` to JSON and then load the file via the web-interface.
|
||||
Alternatively, it's possible to automate the entire procedure with the :ref:`abiview.py` script.
|
||||
Alternatively, it's possible to automate the entire procedure with the abiview.py_ script.
|
||||
|
||||
Use::
|
||||
|
||||
abiview.py phbands out_PHBST.nc -web
|
||||
|
||||
to start a local web server and open the HTML page inside the default browser
|
||||
to start a local web server and open the HTML page inside the default browser
|
||||
(the browser can be changed with the ``--browser`` option).
|
||||
|
||||
It is also possible to visualize the phonon modes starting directly from a DDB_ file with::
|
||||
|
||||
abiview.py ddb -web
|
||||
|
||||
In this case, AbiPy will invoke anaddb to produce the ``PHBST.nc`` file on an automatically
|
||||
In this case, AbiPy will invoke anaddb to produce the ``PHBST.nc`` file on an automatically
|
||||
generated q-path and then start the web server.
|
||||
|
||||
Visualize the results of a structural relaxation
|
||||
|
@ -442,10 +442,10 @@ The quickest way is to use::
|
|||
|
||||
abiview hist out_HIST.nc
|
||||
|
||||
to plot the results with matplotlib or::
|
||||
to plot the results with matplotlib or::
|
||||
|
||||
abiopen.py out_HIST.nc -p
|
||||
|
||||
|
||||
to print the most important results to terminal.
|
||||
|
||||
Note that it's possible to generate a ``XDATCAR`` file with::
|
||||
|
@ -484,8 +484,8 @@ the AbiPy scripts are quite handy for a quick analysis of the results.
|
|||
Compare multiple files
|
||||
----------------------
|
||||
|
||||
The :ref:`abicomp.py` script is explicitly designed for this kind of task.
|
||||
It operates on multiple files (usually files with the same extension) and
|
||||
The abicomp.py_ script is explicitly designed for this kind of task.
|
||||
It operates on multiple files (usually files with the same extension) and
|
||||
either produces matplotlib_ plots or creates AbiPy robots providing methods
|
||||
to analyze the results, perform convergence studies and build pandas DataFrames_.
|
||||
|
||||
|
@ -510,10 +510,10 @@ Remember that it is possible to use the shell syntax ``*_GSR.nc`` to select all
|
|||
If you have nested directories, use unix ``find`` to scan the directory tree for files matching a given pattern
|
||||
For example::
|
||||
|
||||
abicomp.py ebands `find . -name *_GSR.nc`
|
||||
abicomp.py ebands `find . -name *_GSR.nc`
|
||||
|
||||
finds all ``GSR.nc`` files contained withing the current working directory.
|
||||
The output of ``find`` is then passed to the :ref:`abicomp.py` script.
|
||||
The output of ``find`` is then passed to the abicomp.py_ script.
|
||||
|
||||
.. note::
|
||||
|
||||
|
@ -523,8 +523,8 @@ The output of ``find`` is then passed to the :ref:`abicomp.py` script.
|
|||
Profile the scripts
|
||||
-------------------
|
||||
|
||||
All AbiPy script can be executed in profile mode by just prepending the ``prof`` keyword
|
||||
to the command line arguments.
|
||||
All AbiPy script can be executed in profile mode by just prepending the ``prof`` keyword
|
||||
to the command line arguments.
|
||||
This option could be useful if the script seems to be slow and you need to understand what's happening.
|
||||
|
||||
Use::
|
||||
|
@ -537,10 +537,10 @@ or::
|
|||
|
||||
if the script requires a ``COMMAND`` argument.
|
||||
|
||||
Get the description of a variable
|
||||
Get the description of a variable
|
||||
---------------------------------
|
||||
|
||||
The :ref:`abidoc.py` script provides a simplified interface to the Abinit documentation.
|
||||
The abidoc.py_ script provides a simplified interface to the Abinit documentation.
|
||||
|
||||
Use::
|
||||
|
||||
|
@ -558,7 +558,7 @@ Avoid transfering files from the cluster to localhost just to use matplotlib
|
|||
----------------------------------------------------------------------------
|
||||
|
||||
Use `SSHFS <https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh>`_
|
||||
to mount the remote file system over SSH.
|
||||
to mount the remote file system over SSH.
|
||||
Now one can execute the AbiPy scripts in a terminal running on the local machine.
|
||||
to open/visualize the files stored on the cluster.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
Computation times
|
||||
=================
|
||||
**01:32.521** total execution time for 109 files **from all galleries**:
|
||||
**01:25.939** total execution time for 109 files **from all galleries**:
|
||||
|
||||
.. container::
|
||||
|
||||
|
@ -33,329 +33,329 @@ Computation times
|
|||
- Time
|
||||
- Mem (MB)
|
||||
* - :ref:`sphx_glr_gallery_plot_qha_vs_qmesh.py` (``../abipy/examples/plot/plot_qha_vs_qmesh.py``)
|
||||
- 00:10.314
|
||||
- 00:10.151
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ddb_asr.py` (``../abipy/examples/plot/plot_ddb_asr.py``)
|
||||
- 00:04.750
|
||||
- 00:04.590
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons_msqd.py` (``../abipy/examples/plot/plot_phonons_msqd.py``)
|
||||
- 00:04.432
|
||||
- 00:03.910
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_mgb2_phonons_nkpt_tsmear.py` (``../abipy/examples/flows/run_mgb2_phonons_nkpt_tsmear.py``)
|
||||
- 00:03.683
|
||||
- 00:03.448
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lumi_1D_nv_center.py` (``../abipy/examples/plot/plot_lumi_1D_nv_center.py``)
|
||||
- 00:03.131
|
||||
- 00:02.743
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gkq.py` (``../abipy/examples/flows/run_gkq.py``)
|
||||
- 00:02.525
|
||||
- 00:02.557
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phbands_nkpt_tsmear.py` (``../abipy/examples/plot/plot_phbands_nkpt_tsmear.py``)
|
||||
- 00:02.431
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eph_pot.py` (``../abipy/examples/flows/run_eph_pot.py``)
|
||||
- 00:01.970
|
||||
- 00:02.362
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eph_mob.py` (``../abipy/examples/flows/run_eph_mob.py``)
|
||||
- 00:01.926
|
||||
- 00:02.255
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_mdf.py` (``../abipy/examples/plot/plot_mdf.py``)
|
||||
- 00:01.924
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eph_al.py` (``../abipy/examples/flows/run_eph_al.py``)
|
||||
- 00:01.857
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonons_wkq.py` (``../abipy/examples/flows/run_phonons_wkq.py``)
|
||||
- 00:01.827
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eph_pot.py` (``../abipy/examples/flows/run_eph_pot.py``)
|
||||
- 00:02.025
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_efatbands_spin.py` (``../abipy/examples/plot/plot_efatbands_spin.py``)
|
||||
- 00:01.774
|
||||
- 00:01.959
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonons.py` (``../abipy/examples/flows/run_phonons.py``)
|
||||
- 00:01.492
|
||||
- 00:01.858
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonons_wkq.py` (``../abipy/examples/flows/run_phonons_wkq.py``)
|
||||
- 00:01.842
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_mdf.py` (``../abipy/examples/plot/plot_mdf.py``)
|
||||
- 00:01.758
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_a2f.py` (``../abipy/examples/plot/plot_a2f.py``)
|
||||
- 00:01.457
|
||||
- 00:01.366
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_efatbands.py` (``../abipy/examples/plot/plot_efatbands.py``)
|
||||
- 00:01.363
|
||||
- 00:01.330
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eph_al.py` (``../abipy/examples/flows/run_eph_al.py``)
|
||||
- 00:01.303
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_lumi_Eu_doped_SLA.py` (``../abipy/examples/flows/run_lumi_Eu_doped_SLA.py``)
|
||||
- 00:01.323
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phbands_grid.py` (``../abipy/examples/plot/plot_phbands_grid.py``)
|
||||
- 00:01.136
|
||||
- 00:01.218
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_conducwork.py` (``../abipy/examples/flows/run_conducwork.py``)
|
||||
- 00:01.104
|
||||
- 00:01.067
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonons_with_quad.py` (``../abipy/examples/flows/run_phonons_with_quad.py``)
|
||||
- 00:01.007
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands.py` (``../abipy/examples/plot/plot_ebands.py``)
|
||||
- 00:00.990
|
||||
* - :ref:`sphx_glr_gallery_plot_phbands_grid.py` (``../abipy/examples/plot/plot_phbands_grid.py``)
|
||||
- 00:01.059
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_becs_and_epsilon_vs_kpts.py` (``../abipy/examples/flows/run_becs_and_epsilon_vs_kpts.py``)
|
||||
- 00:00.986
|
||||
- 00:00.979
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_wannier90_abiwan.py` (``../abipy/examples/plot/plot_wannier90_abiwan.py``)
|
||||
- 00:00.980
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_boxplot.py` (``../abipy/examples/plot/plot_ebands_boxplot.py``)
|
||||
- 00:00.969
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lumi_1D_Eu_doped.py` (``../abipy/examples/plot/plot_lumi_1D_Eu_doped.py``)
|
||||
- 00:00.922
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_si_ebands.py` (``../abipy/examples/flows/run_si_ebands.py``)
|
||||
- 00:00.920
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonons_with_quad.py` (``../abipy/examples/flows/run_phonons_with_quad.py``)
|
||||
- 00:00.966
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_flexoelectric.py` (``../abipy/examples/flows/run_flexoelectric.py``)
|
||||
- 00:00.908
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_speed_of_sound.py` (``../abipy/examples/plot/plot_speed_of_sound.py``)
|
||||
- 00:00.831
|
||||
- 00:00.869
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_raman_optic.py` (``../abipy/examples/flows/run_raman_optic.py``)
|
||||
- 00:00.826
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_optic.py` (``../abipy/examples/flows/run_optic.py``)
|
||||
- 00:00.819
|
||||
- 00:00.827
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qpbands_with_interpolation.py` (``../abipy/examples/plot/plot_qpbands_with_interpolation.py``)
|
||||
- 00:00.818
|
||||
- 00:00.814
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_spin.py` (``../abipy/examples/plot/plot_ebands_spin.py``)
|
||||
- 00:00.792
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_grid.py` (``../abipy/examples/plot/plot_ebands_grid.py``)
|
||||
- 00:00.778
|
||||
* - :ref:`sphx_glr_flow_gallery_run_optic.py` (``../abipy/examples/flows/run_optic.py``)
|
||||
- 00:00.793
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_elastic.py` (``../abipy/examples/flows/run_elastic.py``)
|
||||
- 00:00.770
|
||||
- 00:00.773
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gwconv_ecuteps.py` (``../abipy/examples/flows/run_gwconv_ecuteps.py``)
|
||||
- 00:00.763
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_spin.py` (``../abipy/examples/plot/plot_ebands_spin.py``)
|
||||
- 00:00.738
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_speed_of_sound.py` (``../abipy/examples/plot/plot_speed_of_sound.py``)
|
||||
- 00:00.717
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_nonlinear.py` (``../abipy/examples/flows/run_nonlinear.py``)
|
||||
- 00:00.726
|
||||
- 00:00.713
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qha.py` (``../abipy/examples/plot/plot_qha.py``)
|
||||
- 00:00.716
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_grid.py` (``../abipy/examples/plot/plot_ebands_grid.py``)
|
||||
- 00:00.703
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lumi_1D_Eu_doped.py` (``../abipy/examples/plot/plot_lumi_1D_Eu_doped.py``)
|
||||
- 00:00.689
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax_vs_kpts_tsmear.py` (``../abipy/examples/flows/run_relax_vs_kpts_tsmear.py``)
|
||||
- 00:00.692
|
||||
- 00:00.676
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_lumi_NV_center.py` (``../abipy/examples/flows/run_lumi_NV_center.py``)
|
||||
- 00:00.680
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gwconv_ecuteps.py` (``../abipy/examples/flows/run_gwconv_ecuteps.py``)
|
||||
- 00:00.665
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons_infrared.py` (``../abipy/examples/plot/plot_phonons_infrared.py``)
|
||||
- 00:00.675
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_frohlich_zpr.py` (``../abipy/examples/flows/run_frohlich_zpr.py``)
|
||||
- 00:00.661
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_effmass_dfpt.py` (``../abipy/examples/flows/run_effmass_dfpt.py``)
|
||||
- 00:00.656
|
||||
* - :ref:`sphx_glr_gallery_plot_qha.py` (``../abipy/examples/plot/plot_qha.py``)
|
||||
- 00:00.663
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_screening.py` (``../abipy/examples/flows/run_screening.py``)
|
||||
- 00:00.648
|
||||
- 00:00.649
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qpbands_with_scissor.py` (``../abipy/examples/plot/plot_qpbands_with_scissor.py``)
|
||||
- 00:00.620
|
||||
* - :ref:`sphx_glr_flow_gallery_run_lumi_NV_center.py` (``../abipy/examples/flows/run_lumi_NV_center.py``)
|
||||
- 00:00.640
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_gruneisen.py` (``../abipy/examples/plot/plot_gruneisen.py``)
|
||||
- 00:00.618
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons_infrared.py` (``../abipy/examples/plot/plot_phonons_infrared.py``)
|
||||
- 00:00.621
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_raman_bse.py` (``../abipy/examples/flows/run_raman_bse.py``)
|
||||
- 00:00.615
|
||||
- 00:00.616
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phfrozen_ebands.py` (``../abipy/examples/flows/run_phfrozen_ebands.py``)
|
||||
- 00:00.606
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_efatbands_lm.py` (``../abipy/examples/plot/plot_efatbands_lm.py``)
|
||||
- 00:00.569
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eos.py` (``../abipy/examples/flows/run_eos.py``)
|
||||
- 00:00.566
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ldaus.py` (``../abipy/examples/flows/run_ldaus.py``)
|
||||
- 00:00.553
|
||||
* - :ref:`sphx_glr_flow_gallery_run_frohlich_zpr.py` (``../abipy/examples/flows/run_frohlich_zpr.py``)
|
||||
- 00:00.594
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_si_g0w0.py` (``../abipy/examples/flows/run_si_g0w0.py``)
|
||||
- 00:00.551
|
||||
- 00:00.591
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_fe_ebands.py` (``../abipy/examples/flows/run_fe_ebands.py``)
|
||||
- 00:00.515
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qps.py` (``../abipy/examples/plot/plot_qps.py``)
|
||||
- 00:00.514
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_mgb2_edoses.py` (``../abipy/examples/flows/run_mgb2_edoses.py``)
|
||||
- 00:00.509
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_edos.py` (``../abipy/examples/plot/plot_ebands_edos.py``)
|
||||
- 00:00.504
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonon_fatbands.py` (``../abipy/examples/plot/plot_phonon_fatbands.py``)
|
||||
- 00:00.498
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_frohlich_zpr_from_ddb.py` (``../abipy/examples/flows/run_frohlich_zpr_from_ddb.py``)
|
||||
- 00:00.488
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gs_vs_kpts.py` (``../abipy/examples/flows/run_gs_vs_kpts.py``)
|
||||
- 00:00.486
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_effmass_finitediff.py` (``../abipy/examples/flows/run_effmass_finitediff.py``)
|
||||
- 00:00.481
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_g0w0ppm.py` (``../abipy/examples/flows/run_ht_si_g0w0ppm.py``)
|
||||
- 00:00.481
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gwr_g0w0.py` (``../abipy/examples/flows/run_gwr_g0w0.py``)
|
||||
- 00:00.478
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_ebands.py` (``../abipy/examples/flows/run_ht_si_ebands.py``)
|
||||
- 00:00.472
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qpconvergence.py` (``../abipy/examples/plot/plot_qpconvergence.py``)
|
||||
- 00:00.464
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gaas_ebands_soc.py` (``../abipy/examples/flows/run_gaas_ebands_soc.py``)
|
||||
- 00:00.462
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax_and_ebands.py` (``../abipy/examples/flows/run_relax_and_ebands.py``)
|
||||
- 00:00.460
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax_vs_kpts.py` (``../abipy/examples/flows/run_relax_vs_kpts.py``)
|
||||
- 00:00.453
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_bsemdf.py` (``../abipy/examples/flows/run_ht_si_bsemdf.py``)
|
||||
- 00:00.451
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax.py` (``../abipy/examples/flows/run_relax.py``)
|
||||
- 00:00.432
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonopy_si.py` (``../abipy/examples/flows/run_phonopy_si.py``)
|
||||
- 00:00.428
|
||||
* - :ref:`sphx_glr_gallery_plot_qpbands_with_scissor.py` (``../abipy/examples/plot/plot_qpbands_with_scissor.py``)
|
||||
- 00:00.589
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ifcs.py` (``../abipy/examples/plot/plot_ifcs.py``)
|
||||
- 00:00.582
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_effmass_dfpt.py` (``../abipy/examples/flows/run_effmass_dfpt.py``)
|
||||
- 00:00.576
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_gruneisen.py` (``../abipy/examples/plot/plot_gruneisen.py``)
|
||||
- 00:00.572
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_eos.py` (``../abipy/examples/flows/run_eos.py``)
|
||||
- 00:00.545
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_efatbands_lm.py` (``../abipy/examples/plot/plot_efatbands_lm.py``)
|
||||
- 00:00.531
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ldaus.py` (``../abipy/examples/flows/run_ldaus.py``)
|
||||
- 00:00.520
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qps.py` (``../abipy/examples/plot/plot_qps.py``)
|
||||
- 00:00.496
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax_vs_kpts.py` (``../abipy/examples/flows/run_relax_vs_kpts.py``)
|
||||
- 00:00.487
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_fe_ebands.py` (``../abipy/examples/flows/run_fe_ebands.py``)
|
||||
- 00:00.485
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_frohlich_zpr_from_ddb.py` (``../abipy/examples/flows/run_frohlich_zpr_from_ddb.py``)
|
||||
- 00:00.482
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonon_fatbands.py` (``../abipy/examples/plot/plot_phonon_fatbands.py``)
|
||||
- 00:00.481
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_mgb2_edoses.py` (``../abipy/examples/flows/run_mgb2_edoses.py``)
|
||||
- 00:00.481
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gs_vs_kpts.py` (``../abipy/examples/flows/run_gs_vs_kpts.py``)
|
||||
- 00:00.466
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_g0w0ppm.py` (``../abipy/examples/flows/run_ht_si_g0w0ppm.py``)
|
||||
- 00:00.466
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_effmass_finitediff.py` (``../abipy/examples/flows/run_effmass_finitediff.py``)
|
||||
- 00:00.464
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_ebands.py` (``../abipy/examples/flows/run_ht_si_ebands.py``)
|
||||
- 00:00.454
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax_and_ebands.py` (``../abipy/examples/flows/run_relax_and_ebands.py``)
|
||||
- 00:00.452
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_ht_si_bsemdf.py` (``../abipy/examples/flows/run_ht_si_bsemdf.py``)
|
||||
- 00:00.432
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_si_ebands.py` (``../abipy/examples/flows/run_si_ebands.py``)
|
||||
- 00:00.427
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gwr_g0w0.py` (``../abipy/examples/flows/run_gwr_g0w0.py``)
|
||||
- 00:00.421
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_relax.py` (``../abipy/examples/flows/run_relax.py``)
|
||||
- 00:00.417
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gaas_ebands_soc.py` (``../abipy/examples/flows/run_gaas_ebands_soc.py``)
|
||||
- 00:00.415
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_qpconvergence.py` (``../abipy/examples/plot/plot_qpconvergence.py``)
|
||||
- 00:00.413
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_phonopy_si.py` (``../abipy/examples/flows/run_phonopy_si.py``)
|
||||
- 00:00.412
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_from_files.py` (``../abipy/examples/flows/run_from_files.py``)
|
||||
- 00:00.399
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_kpath_from_ibz.py` (``../abipy/examples/plot/plot_kpath_from_ibz.py``)
|
||||
- 00:00.395
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_sic_relax.py` (``../abipy/examples/flows/run_sic_relax.py``)
|
||||
- 00:00.386
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons.py` (``../abipy/examples/plot/plot_phonons.py``)
|
||||
- 00:00.381
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos_vs_broad.py` (``../abipy/examples/plot/plot_edos_vs_broad.py``)
|
||||
- 00:00.358
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phbands_and_dos.py` (``../abipy/examples/plot/plot_phbands_and_dos.py``)
|
||||
- 00:00.352
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_multiple_mdf.py` (``../abipy/examples/plot/plot_multiple_mdf.py``)
|
||||
- 00:00.350
|
||||
- 00:00.383
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_optic.py` (``../abipy/examples/plot/plot_optic.py``)
|
||||
- 00:00.349
|
||||
- 00:00.382
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_kpath_from_ibz.py` (``../abipy/examples/plot/plot_kpath_from_ibz.py``)
|
||||
- 00:00.372
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_sic_relax.py` (``../abipy/examples/flows/run_sic_relax.py``)
|
||||
- 00:00.371
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands.py` (``../abipy/examples/plot/plot_ebands.py``)
|
||||
- 00:00.364
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos_vs_broad.py` (``../abipy/examples/plot/plot_edos_vs_broad.py``)
|
||||
- 00:00.336
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phbands_and_dos.py` (``../abipy/examples/plot/plot_phbands_and_dos.py``)
|
||||
- 00:00.333
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_scqpgw.py` (``../abipy/examples/plot/plot_scqpgw.py``)
|
||||
- 00:00.348
|
||||
- 00:00.330
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_multiple_mdf.py` (``../abipy/examples/plot/plot_multiple_mdf.py``)
|
||||
- 00:00.322
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_wannier90_abiwan.py` (``../abipy/examples/plot/plot_wannier90_abiwan.py``)
|
||||
- 00:00.312
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_convergence.py` (``../abipy/examples/plot/plot_convergence.py``)
|
||||
- 00:00.314
|
||||
- 00:00.293
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ejdos.py` (``../abipy/examples/plot/plot_ejdos.py``)
|
||||
- 00:00.309
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_scr_matrix.py` (``../abipy/examples/plot/plot_scr_matrix.py``)
|
||||
- 00:00.301
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_den.py` (``../abipy/examples/plot/plot_den.py``)
|
||||
- 00:00.300
|
||||
- 00:00.283
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_multiple_hist.py` (``../abipy/examples/plot/plot_multiple_hist.py``)
|
||||
- 00:00.290
|
||||
- 00:00.272
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_den.py` (``../abipy/examples/plot/plot_den.py``)
|
||||
- 00:00.267
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_scr_matrix.py` (``../abipy/examples/plot/plot_scr_matrix.py``)
|
||||
- 00:00.263
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_dfpt_cycle.py` (``../abipy/examples/plot/plot_dfpt_cycle.py``)
|
||||
- 00:00.270
|
||||
- 00:00.258
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_edos.py` (``../abipy/examples/plot/plot_ebands_edos.py``)
|
||||
- 00:00.254
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons.py` (``../abipy/examples/plot/plot_phonons.py``)
|
||||
- 00:00.249
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_wfk.py` (``../abipy/examples/plot/plot_wfk.py``)
|
||||
- 00:00.262
|
||||
- 00:00.243
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lobster_files.py` (``../abipy/examples/plot/plot_lobster_files.py``)
|
||||
- 00:00.259
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons_lo_to.py` (``../abipy/examples/plot/plot_phonons_lo_to.py``)
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_boxplot.py` (``../abipy/examples/plot/plot_ebands_boxplot.py``)
|
||||
- 00:00.240
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_potentials.py` (``../abipy/examples/plot/plot_potentials.py``)
|
||||
- 00:00.227
|
||||
* - :ref:`sphx_glr_gallery_plot_lobster_files.py` (``../abipy/examples/plot/plot_lobster_files.py``)
|
||||
- 00:00.220
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonons_lo_to.py` (``../abipy/examples/plot/plot_phonons_lo_to.py``)
|
||||
- 00:00.213
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lobster_cohp.py` (``../abipy/examples/plot/plot_lobster_cohp.py``)
|
||||
- 00:00.225
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_hist.py` (``../abipy/examples/plot/plot_hist.py``)
|
||||
- 00:00.224
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_scatter3d.py` (``../abipy/examples/plot/plot_ebands_scatter3d.py``)
|
||||
- 00:00.210
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_hist.py` (``../abipy/examples/plot/plot_hist.py``)
|
||||
- 00:00.207
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_ebands_scatter3d.py` (``../abipy/examples/plot/plot_ebands_scatter3d.py``)
|
||||
- 00:00.201
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_potentials.py` (``../abipy/examples/plot/plot_potentials.py``)
|
||||
- 00:00.186
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phonon_pjdos.py` (``../abipy/examples/plot/plot_phonon_pjdos.py``)
|
||||
- 00:00.191
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_gw_spectral_functions.py` (``../abipy/examples/plot/plot_gw_spectral_functions.py``)
|
||||
- 00:00.179
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_bz.py` (``../abipy/examples/plot/plot_bz.py``)
|
||||
- 00:00.179
|
||||
- 00:00.183
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plotly_phbands_and_dos.py` (``../abipy/examples/plot/plotly_phbands_and_dos.py``)
|
||||
- 00:00.175
|
||||
- 00:00.164
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_scr.py` (``../abipy/examples/plot/plot_scr.py``)
|
||||
* - :ref:`sphx_glr_gallery_plot_gw_spectral_functions.py` (``../abipy/examples/plot/plot_gw_spectral_functions.py``)
|
||||
- 00:00.158
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_scr.py` (``../abipy/examples/plot/plot_scr.py``)
|
||||
- 00:00.138
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_effmass.py` (``../abipy/examples/plot/plot_effmass.py``)
|
||||
- 00:00.153
|
||||
- 00:00.137
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_wannier90_wout.py` (``../abipy/examples/plot/plot_wannier90_wout.py``)
|
||||
- 00:00.149
|
||||
- 00:00.136
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_fold2bloch.py` (``../abipy/examples/plot/plot_fold2bloch.py``)
|
||||
- 00:00.145
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos_grid.py` (``../abipy/examples/plot/plot_edos_grid.py``)
|
||||
- 00:00.130
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_lruj.py` (``../abipy/examples/plot/plot_lruj.py``)
|
||||
- 00:00.121
|
||||
- 00:00.109
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos.py` (``../abipy/examples/plot/plot_edos.py``)
|
||||
- 00:00.115
|
||||
* - :ref:`sphx_glr_gallery_plot_bz.py` (``../abipy/examples/plot/plot_bz.py``)
|
||||
- 00:00.103
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_gscycle.py` (``../abipy/examples/plot/plot_gscycle.py``)
|
||||
- 00:00.111
|
||||
- 00:00.095
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos.py` (``../abipy/examples/plot/plot_edos.py``)
|
||||
- 00:00.092
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phthermo.py` (``../abipy/examples/plot/plot_phthermo.py``)
|
||||
- 00:00.097
|
||||
- 00:00.090
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_edos_grid.py` (``../abipy/examples/plot/plot_edos_grid.py``)
|
||||
- 00:00.075
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_phdos_grid.py` (``../abipy/examples/plot/plot_phdos_grid.py``)
|
||||
- 00:00.078
|
||||
- 00:00.074
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_xrd.py` (``../abipy/examples/plot/plot_xrd.py``)
|
||||
- 00:00.071
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_gallery_plot_funcs.py` (``../abipy/examples/plot/plot_funcs.py``)
|
||||
- 00:00.046
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gruneisen_abinit.py` (``../abipy/examples/flows/run_gruneisen_abinit.py``)
|
||||
- 00:00.036
|
||||
* - :ref:`sphx_glr_gallery_plot_funcs.py` (``../abipy/examples/plot/plot_funcs.py``)
|
||||
- 00:00.042
|
||||
- 0.0
|
||||
* - :ref:`sphx_glr_flow_gallery_run_gruneisen_abinit.py` (``../abipy/examples/flows/run_gruneisen_abinit.py``)
|
||||
- 00:00.035
|
||||
- 0.0
|
||||
|
|
|
@ -45,6 +45,34 @@ Dragon1
|
|||
job: *job
|
||||
|
||||
|
||||
Gh
|
||||
--
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
||||
# Manager used for github actions.
|
||||
qadapters:
|
||||
-
|
||||
priority: 1
|
||||
queue:
|
||||
qname: github
|
||||
qtype: shell
|
||||
job:
|
||||
mpi_runner: mpirun
|
||||
pre_run:
|
||||
- conda activate abipy
|
||||
limits:
|
||||
min_cores: 1
|
||||
max_cores: 2
|
||||
timelimit: 0:10:0
|
||||
hardware:
|
||||
num_nodes: 1
|
||||
sockets_per_node: 1
|
||||
cores_per_socket: 2
|
||||
mem_per_node: 4 GB
|
||||
|
||||
|
||||
Gmac
|
||||
----
|
||||
|
||||
|
@ -582,33 +610,6 @@ Shell_nompi
|
|||
mem_per_node: 4 GB
|
||||
|
||||
|
||||
Travis
|
||||
------
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
||||
qadapters:
|
||||
-
|
||||
priority: 1
|
||||
queue:
|
||||
qname: travis
|
||||
qtype: shell
|
||||
job:
|
||||
mpi_runner: mpirun
|
||||
pre_run:
|
||||
- conda activate abipy
|
||||
limits:
|
||||
min_cores: 1
|
||||
max_cores: 2
|
||||
timelimit: 0:10:0
|
||||
hardware:
|
||||
num_nodes: 1
|
||||
sockets_per_node: 1
|
||||
cores_per_socket: 2
|
||||
mem_per_node: 4 GB
|
||||
|
||||
|
||||
Ubu
|
||||
---
|
||||
|
||||
|
|
|
@ -7,11 +7,11 @@ tqdm
|
|||
pyyaml>=3.11
|
||||
ruamel.yaml>=0.16.12
|
||||
pandas
|
||||
#numpy
|
||||
numpy<2.0.0
|
||||
scipy
|
||||
sympy
|
||||
spglib
|
||||
pymatgen==2023.7.17
|
||||
pymatgen
|
||||
netCDF4
|
||||
matplotlib
|
||||
seaborn
|
||||
|
|
Loading…
Reference in New Issue