@@ -101,6 +101,8 @@ def write_to_archive(self) -> None:
101101 data_parser .annotation_key = vasp .XML2_KEY
102102 xml_parser .convert (data_parser )
103103
104+ self .archive .data = data_parser .data_object
105+
104106 # Fifth pass: PP_OUT to extend with OUTCAR pseudopotential metadata
105107 # This allows OUTCAR to supplement vasprun.xml pseudopotentials with
106108 # detailed metadata (SHA256, LPAW, LULTRA, etc.)
@@ -125,31 +127,40 @@ def write_to_archive(self) -> None:
125127 ]
126128 )
127129
128- outcar_parser = MappingTextParser (filepath = outcar_path )
129- outcar_parser .text_parser = outcar_supplement_parser
130+ from .outcar_parser import OutcarParser , OutcarTextParser
131+
132+ outcar_parser = OutcarParser (filepath = outcar_path )
133+ outcar_parser .text_parser = OutcarTextParser ()
134+
135+ pseudopot_parser = VASPMetainfoParser ()
136+ pseudopot_parser .annotation_key = vasp .PP_OUT
137+ pseudopot_parser .data_object = vasp .Pseudopotential ()
138+ outcar_parser .convert (pseudopot_parser )
139+ print (pseudopot_parser )
140+ self .archive .data .model_method [0 ].numerical_settings .append (pseudopot_parser .data_object )
130141
131- data_parser .annotation_key = vasp .PP_OUT
132142 # Merge by index position: OUTCAR PP[0] extends XML PP[0], etc.
133143 # This preserves XML structure while adding OUTCAR's detailed metadata
134- outcar_parser .convert (data_parser , update_mode = 'merge' )
144+ # outcar_parser.convert(data_parser, update_mode='merge')
145+
135146
136147 # Clean up duplicate pseudopotentials created by type mismatch
137148 # When PP_OUT merges at index 0 but finds KSpace, creates new PP
138- model_method = data_parser .data_object .model_method [0 ]
139- seen_pp_names = set ()
140- deduplicated_ns = []
141- for ns in model_method .numerical_settings :
142- if ns .m_def .name == 'Pseudopotential' :
143- pp_name = getattr (ns , 'name' , None )
144- if pp_name and pp_name in seen_pp_names :
145- LOGGER .debug (f'Removed duplicate Pseudopotential: { pp_name } ' )
146- continue
147- if pp_name :
148- seen_pp_names .add (pp_name )
149- deduplicated_ns .append (ns )
150-
151- # Replace with deduplicated list
152- model_method .numerical_settings = deduplicated_ns
149+ # model_method = data_parser.data_object.model_method[0]
150+ # seen_pp_names = set()
151+ # deduplicated_ns = []
152+ # for ns in model_method.numerical_settings:
153+ # if ns.m_def.name == 'Pseudopotential':
154+ # pp_name = getattr(ns, 'name', None)
155+ # if pp_name and pp_name in seen_pp_names:
156+ # LOGGER.debug(f'Removed duplicate Pseudopotential: {pp_name}')
157+ # continue
158+ # if pp_name:
159+ # seen_pp_names.add(pp_name)
160+ # deduplicated_ns.append(ns)
161+
162+ # # Replace with deduplicated list
163+ # model_method.numerical_settings = deduplicated_ns
153164
154165 outcar_parser .close ()
155166
0 commit comments