Skip to content

KeyError happened when use Cp2kBaseWorkChain to do a NEB calculation #107

@xjf729

Description

@xjf729

Environment

aiida-core version 1.2.1
aiida-cp2k version 1.1.0

Error Report

When I use Cp2kBaseWorkChain for a NEB calculation, error happened in parse step.

*** 1 LOG MESSAGES:
+-> REPORT at 2020-06-04 03:17:35.625606+00:00
 | [1474|Cp2kCalculation|on_except]: Traceback (most recent call last):
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/plumpy/process_states.py", line 220, in execute
 |     result = self.run_fn(*self.args, **self.kwargs)
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/aiida/engine/processes/calcjobs/calcjob.py", line 263, in parse
 |     exit_code = execmanager.parse_results(self, retrieved_temporary_folder)
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/aiida/engine/daemon/execmanager.py", line 439, in parse_results
 |     exit_code = parser.parse(**parse_kwargs)
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/aiida_cp2k/parsers/__init__.py", line 39, in parse
 |     returned = self._parse_trajectory()
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/aiida_cp2k/parsers/__init__.py", line 91, in _parse_trajectory
 |     return StructureData(ase=Atoms(**parse_cp2k_trajectory(output_string)))
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/ase/atoms.py", line 208, in __init__
 |     self.new_array('numbers', symbols2numbers(symbols), int)
 |   File "/anaconda3/envs/aiidav1/lib/python3.7/site-packages/ase/symbols.py", line 20, in symbols2numbers
 |     numbers.append(atomic_numbers[s])
 | KeyError: '.E+'

Possible Reason

I think the reason maybe in def parse_cp2k_trajectory code.

Because you parse the COORD section in *-1.restart file, however, the COORD section in *-1.restart of NEB don't have information of chemical symbols, then E+ is regarded as chemical symbol. The COORD section in *-1.restart of NEB like follows.

&COORD
    6.7740185951757121E+00    5.9999999787312079E+00    6.2143687594147634E+00
    5.2259808444671396E+00    6.0000000393828854E+00    6.2143688063089808E+00
    4.8129448743603360E+00    5.9999999500883883E+00    5.1990521657080473E+00
    4.8126645585662970E+00    6.8792360991874624E+00    6.7218712281724748E+00
    4.8126646095750898E+00    5.1207639721373717E+00    6.7218712678906591E+00
    7.1870544024378509E+00    5.9999999775529664E+00    5.1990520561417144E+00
    7.1873347582418425E+00    6.8792360937843435E+00    6.7218711966487747E+00
    7.1873347372392553E+00    5.1207638983179260E+00    6.7218712597601877E+00
&END COORD

I think parse the last frame of *-pos-1.xyz file maybe a better choice.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions