Skip to content

Commit b479819

Browse files
committed
Account recent updates
1 parent 78a0811 commit b479819

File tree

6 files changed

+47
-25
lines changed

6 files changed

+47
-25
lines changed

mpds_aiida/workflows/cif.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
The MPDS workflow using structure from CIF file
44
"""
55
from aiida_crystal_dft.utils import get_data_class
6+
7+
from metis_backend.datasources.fmt import detect_format
8+
from metis_backend.structures.cif_utils import cif_to_ase
9+
610
from .crystal import MPDSCrystalWorkChain
7-
from mpds_ml_labs.struct_utils import detect_format
8-
from mpds_ml_labs.cif_utils import cif_to_ase
911

1012

1113
class CIFStructureWorkChain(MPDSCrystalWorkChain):

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ reentry >= 1.3.1
22
six >= 1.16.0
33
numpy >= 1.17.5
44
ase >= 3.19
5-
mpds-ml-labs @ git+https://github.com/mpds-io/mpds-ml-labs
65
aiida-crystal-dft @ git+https://github.com/tilde-lab/aiida-crystal-dft
76
yascheduler >= 1.0.12
7+
metis-backend @ git+https://github.com/basf/metis-backend

scripts/aiida_submit_cif.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99

1010
import spglib
1111

12-
from mpds_ml_labs.struct_utils import detect_format, refine, get_formula
13-
from mpds_ml_labs.cif_utils import cif_to_ase
12+
from metis_backend.datasources.fmt import detect_format
13+
from metis_backend.structures.struct_utils import refine, get_formula
14+
from metis_backend.structures.cif_utils import cif_to_ase
1415

1516

1617
load_profile()

scripts/aiida_submit_ht_test.py

+4-11
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,20 @@
66
from aiida.plugins import DataFactory
77
from aiida.orm import Code
88
from aiida.engine import submit
9-
from mpds_aiida.workflows.crystal import MPDSCrystalWorkchain
9+
from mpds_aiida.workflows.mpds import MPDSStructureWorkChain
1010

1111
from mpds_client import MPDSDataRetrieval
12-
from mpds_aiida.common import get_template, get_mpds_phases
12+
from mpds_aiida.common import get_mpds_phases
1313

1414

1515
ela = ['Li', 'Na', 'K']
1616
elb = ['F', 'Cl', 'Br']
1717

1818
client = MPDSDataRetrieval()
1919

20-
calc_setup = get_template()
21-
2220
load_profile()
2321

24-
inputs = MPDSCrystalWorkchain.get_builder()
25-
inputs.crystal_code = Code.get_from_string('{}@{}'.format(calc_setup['codes'][0], calc_setup['cluster']))
26-
inputs.crystal_parameters = DataFactory('dict')(dict=calc_setup['parameters']['crystal'])
27-
28-
inputs.basis_family, _ = DataFactory('crystal_dft.basis_family').get_or_create(calc_setup['basis_family'])
29-
inputs.options = DataFactory('dict')(dict=calc_setup['options'])
22+
inputs = MPDSStructureWorkChain.get_builder()
3023

3124
for elem_pair in product(ela, elb):
3225
print(elem_pair)
@@ -36,5 +29,5 @@
3629
formula, sgs, pearson = phase.split('/')
3730
inputs.metadata = {'label': phase}
3831
inputs.mpds_query = DataFactory('dict')(dict={'formulae': formula, 'sgs': int(sgs)})
39-
wc = submit(MPDSCrystalWorkchain, **inputs)
32+
wc = submit(MPDSStructureWorkChain, **inputs)
4033
print("Submitted WorkChain %s for %s" % (wc.pk, phase))

scripts/run_properties.py

+26-4
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
#!/usr/bin/env python3
22

33
import os, sys
4+
from io import BytesIO
45
import json
56
#from pprint import pprint
67

78
import numpy as np
89
import matplotlib.pyplot as plt
910

11+
from PIL import Image
12+
from ase.data import chemical_symbols
13+
1014
from aiida import load_profile
1115
from aiida_crystal_dft.io.f9 import Fort9
12-
from mpds_aiida.common import get_template
13-
from mpds_aiida.properties import properties_run_direct, properties_export
16+
from aiida_crystal_dft.utils.dos import get_dos_projections_atoms
17+
18+
from mpds_aiida.common import get_template, fix_label_names, formula_to_latex
19+
from mpds_aiida.properties import properties_run_direct, properties_export, dos_colors
1420

1521

1622
load_profile()
@@ -50,6 +56,7 @@
5056
f.close()
5157

5258
print("Writing e_props.png")
59+
bands.attributes['labels'] = fix_label_names(bands.attributes['labels'])
5360

5461
fig, (ax0, ax1) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1]}, figsize=(10, 8))
5562
x = np.arange(bands.get_array('kpoints').shape[0])
@@ -61,11 +68,26 @@
6168

6269
ax1.set_xlim(0, 2000)
6370
ax1.set_ylim(-10, 20)
71+
ax1.set_prop_cycle(color=dos_colors)
6472
ax1.plot(dos['dos_up'].T, (dos['e'] - dos['e_fermi']))
6573

66-
fig.suptitle(wf.get_ase().get_chemical_formula(empirical=True))
74+
atsymbs = [chemical_symbols[x] for x in wf.get_atomic_numbers()]
75+
count, padding = 0, 70
76+
for proj in get_dos_projections_atoms(wf.get_atomic_numbers()):
77+
ax1.annotate(atsymbs[proj[0] - 1], xy=(count * padding, -150), xycoords='axes pixels', size=7, c=dos_colors[count])
78+
count += 1
79+
ax1.annotate('Total', xy=(count * padding, -150), xycoords='axes pixels', size=7, c=dos_colors[count])
80+
81+
fig.suptitle(formula_to_latex(wf.get_ase().get_chemical_formula(empirical=True)))
6782
plt.margins(0.2)
6883
plt.subplots_adjust(bottom=0.15)
69-
plt.savefig('e_props.png', dpi=250)
84+
#plt.savefig('e_props.png', dpi=250)
85+
86+
mem = BytesIO()
87+
plt.savefig(mem, format='png', dpi=250)
88+
mem.seek(0)
89+
im = Image.open(mem)
90+
im2 = im.convert('RGB').convert('P', palette=Image.ADAPTIVE)
91+
im2.save('e_props.png')
7092

7193
print('E_dir, E_ind = ', result['direct_gap'], result['indirect_gap'])

scripts/ya_submit_ht_test.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,24 @@
33
import sys
44
import random
55
from itertools import product
6+
from configparser import ConfigParser
67

78
import numpy as np
89
from aiida_crystal_dft.io.f34 import Fort34
910

10-
from yascheduler import Yascheduler
11+
from yascheduler import CONFIG_FILE
12+
from yascheduler.scheduler import Yascheduler
1113

1214
from mpds_client import MPDSDataRetrieval
1315
from mpds_aiida.common import get_template, get_basis_sets, get_mpds_structures, get_input
1416

1517

16-
ela = ['Li', 'Na', 'K', 'Rb', 'Be', 'Mg']
17-
elb = ['F', 'Cl', 'Br', 'I', 'O', 'S']
18+
ela = ['Li', 'Na', 'K']
19+
elb = ['F', 'Cl', 'Br']
1820

19-
yac = Yascheduler()
21+
config = ConfigParser()
22+
config.read(CONFIG_FILE)
23+
yac = Yascheduler(config)
2024

2125
client = MPDSDataRetrieval()
2226

@@ -59,5 +63,5 @@
5963
struct_input = str(struct_input)
6064
setup_input = str(setup_input)
6165

62-
yac.queue_submit_task(target_obj.info['phase'], {"fort.34": struct_input, "INPUT": setup_input}, "pcrystal")
66+
yac.queue_submit_task(target_obj.info['phase'], dict(structure=struct_input, input=setup_input))
6367
counter += 1

0 commit comments

Comments
 (0)