File size: 2,297 Bytes
1c703f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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'])