latmatcher / backend /db_utils /parse_c2db.py
AndreiVoicuT's picture
Upload 85 files
1c703f0 verified
raw
history blame
2.3 kB
import json
import periodictable
from collections import Counter
from .utils import ndarray_decoder
from .structure_propriety import DBPropriety, Source
def read_c2db_json(file_name):
with open(file_name, 'r') as file:
data = json.load(file, object_hook=ndarray_decoder)
return data
def from_c2db_unique_id(c2db_instance_structure):
return c2db_instance_structure["1"]["unique_id"]
def from_c2db_formula(c2db_instance_structure):
structure_data = c2db_instance_structure.get('1', {})
atoms = structure_data.get('numbers')
element_counts = Counter(atoms)
formula = ''.join(f'{periodictable.elements[number].symbol}{count if count > 1 else ""}'
for number, count in element_counts.items())
return formula
pass
def from_c2db_structure(c2db_instance_structure):
structure_data = c2db_instance_structure.get('1', {})
structure = {
'cell': structure_data.get('cell', {}).get('array').T,
'atoms': structure_data.get('numbers'),
'positions': structure_data.get('positions'),
'pbc': structure_data.get('pbc')
}
return structure
def from_c2db_energy(c2db_instance_structure):
structure_data = c2db_instance_structure.get('1', {})
energy_value = structure_data["energy"]
source = Source(tipe="computation",
author_id="C2DB",
description={"calculator": structure_data['calculator'],
"calculator_parameters": structure_data['calculator_parameters'], },
cite="DOI 10.1088/2053-1583/aacfc1")
energy = DBPropriety(name="energy",
value=energy_value,
source=source)
return energy
def from_c2db_band_gap(c2db_instance):
return None
def from_c2db_band_structure(c2db_instance):
return None
def from_c2db_density_of_states(c2db_instance):
return None
# c2 = read_c2db_json("/Users/voicutomut/Desktop/WS2-64090c9845f8_data.json")
# print(c2.keys())
# print(c2['structure.json'])
# print("\nresults-asr.bandstructure.json", c2['results-asr.bandstructure.json'])
#
# print("\nresults-asr.bandstructure.json", c2['results-asr.bandstructure.json'].keys())
# print(c2['results-asr.bandstructure.json']['kwargs'])