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'])