Source code for aiida_quantumespresso.parsers.q2r

# -*- coding: utf-8 -*-
from aiida.orm import Dict

from aiida_quantumespresso.data.force_constants import ForceConstantsData
from aiida_quantumespresso.utils.mapping import get_logging_container

from .base import BaseParser


[docs]class Q2rParser(BaseParser): """``Parser`` implementation for the ``Q2rCalculation`` calculation job class."""
[docs] def parse(self, **kwargs): """Parse the retrieved files of a ``Q2rCalculation`` into output nodes.""" logs = get_logging_container() _, parsed_data, logs = self.parse_stdout_from_retrieved(logs) base_exit_code = self.check_base_errors(logs) if base_exit_code: return self.exit(base_exit_code, logs) self.out('output_parameters', Dict(parsed_data)) if 'ERROR_OUTPUT_STDOUT_INCOMPLETE'in logs.error: return self.exit(self.exit_codes.ERROR_OUTPUT_STDOUT_INCOMPLETE, logs) filename_force_constants = self.node.process_class._FORCE_CONSTANTS_NAME if filename_force_constants not in self.retrieved.base.repository.list_object_names(): return self.exit(self.exit_codes.ERROR_READING_FORCE_CONSTANTS_FILE, logs) with self.retrieved.base.repository.open(filename_force_constants, 'rb') as handle: self.out('force_constants', ForceConstantsData(file=handle)) return self.exit(logs=logs)