1- from typing import Callable , Union
1+ from typing import Callable
22
33from pint import UnitRegistry
44
5- from pyiron_dataclasses .v1 .atomistic import (
5+ from pyiron_dataclasses .v1 .jobs . atomistic import (
66 Cell ,
77 GenericInput ,
88 GenericOutput ,
99 Structure ,
1010 Units ,
1111)
12- from pyiron_dataclasses .v1 .dft import (
12+ from pyiron_dataclasses .v1 .jobs . dft import (
1313 ChargeDensity ,
1414 DensityOfStates ,
1515 ElectronicStructure ,
1616 OutputGenericDFT ,
1717)
18- from pyiron_dataclasses .v1 .job import (
18+ from pyiron_dataclasses .v1 .jobs . generic import (
1919 Executable ,
2020 GenericDict ,
2121 Interactive ,
2222 Server ,
2323)
24- from pyiron_dataclasses .v1 .lammps import (
24+ from pyiron_dataclasses .v1 .jobs . lammps import (
2525 LammpsInput ,
2626 LammpsInputFiles ,
2727 LammpsJob ,
2828 LammpsOutput ,
2929 LammpsPotential ,
3030)
31- from pyiron_dataclasses .v1 .murn import (
31+ from pyiron_dataclasses .v1 .jobs . murn import (
3232 MurnaghanInput ,
3333 MurnaghanJob ,
3434 MurnaghanOutput ,
3535)
36- from pyiron_dataclasses .v1 .sphinx import (
36+ from pyiron_dataclasses .v1 .jobs . sphinx import (
3737 BornOppenheimer ,
3838 PawPot ,
3939 ScfDiag ,
5858 SphinxStructure ,
5959 SphinxWaves ,
6060)
61- from pyiron_dataclasses .v1 .vasp import (
61+ from pyiron_dataclasses .v1 .jobs . vasp import (
6262 OutCar ,
6363 PotCar ,
6464 VaspInput ,
6565 VaspJob ,
6666 VaspOutput ,
6767 VaspResources ,
6868)
69+ from pyiron_dataclasses .v1 .shared import (
70+ convert_datacontainer_to_dictionary ,
71+ convert_generic_parameters_to_dictionary ,
72+ convert_generic_parameters_to_string ,
73+ )
6974
7075
7176def get_dataclass (job_dict : dict ) -> Callable :
@@ -80,13 +85,13 @@ def get_dataclass(job_dict: dict) -> Callable:
8085
8186def _convert_sphinx_job_dict (job_dict : dict ) -> SphinxJob :
8287 ureg = UnitRegistry ()
83- sphinx_input_parameter_dict = _convert_datacontainer_to_dictionary (
88+ sphinx_input_parameter_dict = convert_datacontainer_to_dictionary (
8489 data_container_dict = job_dict ["input" ]["parameters" ]
8590 )
86- generic_input_dict = _convert_generic_parameters_to_dictionary (
91+ generic_input_dict = convert_generic_parameters_to_dictionary (
8792 generic_parameter_dict = job_dict ["input" ]["generic" ],
8893 )
89- output_dict = _convert_datacontainer_to_dictionary (
94+ output_dict = convert_datacontainer_to_dictionary (
9095 data_container_dict = job_dict ["output" ]["generic" ]
9196 )
9297 if "ricQN" in sphinx_input_parameter_dict ["sphinx" ]["main" ]:
@@ -478,7 +483,7 @@ def _convert_sphinx_job_dict(job_dict: dict) -> SphinxJob:
478483
479484def _convert_lammps_job_dict (job_dict : dict ) -> LammpsJob :
480485 ureg = UnitRegistry ()
481- generic_input_dict = _convert_generic_parameters_to_dictionary (
486+ generic_input_dict = convert_generic_parameters_to_dictionary (
482487 generic_parameter_dict = job_dict ["input" ]["generic" ],
483488 )
484489 return LammpsJob (
@@ -556,10 +561,10 @@ def _convert_lammps_job_dict(job_dict: dict) -> LammpsJob:
556561 species = job_dict ["input" ]["potential_inp" ]["potential" ]["Species" ],
557562 ),
558563 input_files = LammpsInputFiles (
559- control_inp = _convert_generic_parameters_to_string (
564+ control_inp = convert_generic_parameters_to_string (
560565 generic_parameter_dict = job_dict ["input" ]["control_inp" ]
561566 ),
562- potential_inp = _convert_generic_parameters_to_string (
567+ potential_inp = convert_generic_parameters_to_string (
563568 generic_parameter_dict = job_dict ["input" ]["potential_inp" ]
564569 ),
565570 ),
@@ -622,7 +627,7 @@ def _convert_lammps_job_dict(job_dict: dict) -> LammpsJob:
622627
623628def _convert_vasp_job_dict (job_dict ):
624629 ureg = UnitRegistry ()
625- generic_input_dict = _convert_generic_parameters_to_dictionary (
630+ generic_input_dict = convert_generic_parameters_to_dictionary (
626631 generic_parameter_dict = job_dict ["input" ]["generic" ],
627632 )
628633 return VaspJob (
@@ -704,14 +709,14 @@ def _convert_vasp_job_dict(job_dict):
704709 fix_spin_constraint = generic_input_dict .get ("fix_spin_constraint" , None ),
705710 max_iter = generic_input_dict .get ("max_iter" , None ),
706711 ),
707- incar = _convert_generic_parameters_to_string (
712+ incar = convert_generic_parameters_to_string (
708713 generic_parameter_dict = job_dict ["input" ]["incar" ]
709714 ),
710- kpoints = _convert_generic_parameters_to_string (
715+ kpoints = convert_generic_parameters_to_string (
711716 generic_parameter_dict = job_dict ["input" ]["kpoints" ]
712717 ),
713718 potcar = PotCar (
714- xc = _convert_generic_parameters_to_dictionary (
719+ xc = convert_generic_parameters_to_dictionary (
715720 generic_parameter_dict = job_dict ["input" ]["potcar" ]
716721 )["xc" ]
717722 ),
@@ -927,7 +932,7 @@ def _convert_vasp_job_dict(job_dict):
927932
928933
929934def _convert_murnaghan_job_dict (job_dict ):
930- input_dict = _convert_generic_parameters_to_dictionary (
935+ input_dict = convert_generic_parameters_to_dictionary (
931936 generic_parameter_dict = job_dict ["input" ]["parameters" ]
932937 )
933938 return MurnaghanJob (
@@ -967,91 +972,3 @@ def _convert_murnaghan_job_dict(job_dict):
967972 structure = job_dict ["output" ]["structure" ],
968973 ),
969974 )
970-
971-
972- def _convert_generic_parameters_to_string (generic_parameter_dict : dict ) -> str :
973- output_str = ""
974- for p , v in zip (
975- generic_parameter_dict ["data_dict" ]["Parameter" ],
976- generic_parameter_dict ["data_dict" ]["Value" ],
977- ):
978- output_str += p .replace ("___" , " " ) + " " + str (v ) + "\n "
979- return output_str [:- 1 ]
980-
981-
982- def _convert_generic_parameters_to_dictionary (generic_parameter_dict : dict ) -> dict :
983- return {
984- p : v
985- for p , v in zip (
986- generic_parameter_dict ["data_dict" ]["Parameter" ],
987- generic_parameter_dict ["data_dict" ]["Value" ],
988- )
989- }
990-
991-
992- def _filter_dict (input_dict : dict , remove_keys_lst : list ) -> dict :
993- def recursive_filter (input_value : dict , remove_keys_lst : list ) -> dict :
994- if isinstance (input_value , dict ):
995- return _filter_dict (input_dict = input_value , remove_keys_lst = remove_keys_lst )
996- else :
997- return input_value
998-
999- return {
1000- k : recursive_filter (input_value = v , remove_keys_lst = remove_keys_lst )
1001- for k , v in input_dict .items ()
1002- if k not in remove_keys_lst
1003- }
1004-
1005-
1006- def _sort_dictionary_from_datacontainer (input_dict : dict ) -> Union [dict , list ]:
1007- def recursive_sort (input_value : dict ) -> Union [dict , list ]:
1008- if isinstance (input_value , dict ):
1009- return _sort_dictionary_from_datacontainer (input_dict = input_value )
1010- else :
1011- return input_value
1012-
1013- ind_dict , content_dict = {}, {}
1014- content_lst_flag = False
1015- for k , v in input_dict .items ():
1016- if "__index_" in k :
1017- key , ind = k .split ("__index_" )
1018- if key == "" :
1019- content_lst_flag = True
1020- ind_dict [int (ind )] = recursive_sort (input_value = v )
1021- else :
1022- ind_dict [int (ind )] = key
1023- content_dict [key ] = recursive_sort (input_value = v )
1024- else :
1025- content_dict [k ] = recursive_sort (input_value = v )
1026- if content_lst_flag :
1027- return [ind_dict [ind ] for ind in sorted (list (ind_dict .keys ()))]
1028- elif len (ind_dict ) == len (content_dict ):
1029- return {
1030- ind_dict [ind ]: content_dict [ind_dict [ind ]]
1031- for ind in sorted (list (ind_dict .keys ()))
1032- }
1033- elif len (ind_dict ) == 0 :
1034- return content_dict
1035- else :
1036- raise KeyError (ind_dict , content_dict )
1037-
1038-
1039- def _convert_datacontainer_to_dictionary (data_container_dict : dict ) -> dict :
1040- output_dict = _sort_dictionary_from_datacontainer (
1041- input_dict = _filter_dict (
1042- input_dict = data_container_dict ,
1043- remove_keys_lst = [
1044- "NAME" ,
1045- "TYPE" ,
1046- "OBJECT" ,
1047- "DICT_VERSION" ,
1048- "HDF_VERSION" ,
1049- "READ_ONLY" ,
1050- "VERSION" ,
1051- ],
1052- )
1053- )
1054- if isinstance (output_dict , dict ):
1055- return output_dict
1056- else :
1057- raise TypeError ("datacontainer was not converted to a dictionary." )
0 commit comments