This issue is a result of a Codex global repository scan.
Several Python STRU parsers check for a LATTICE_PARAMETER block but then read blocks['LATTICE_PARAMETERS'] with an extra S. STRU files that use LATTICE_PARAMETER instead of LATTICE_VECTORS therefore raise KeyError instead of being parsed.
ASE interface parser:
|
stru['lat'] = {'const': float(blocks['LATTICE_CONSTANT'][0])} |
|
if 'LATTICE_VECTORS' in blocks: |
|
stru['lat']['vec'] = [[float(x) for x in line.split()] |
|
for line in blocks['LATTICE_VECTORS']] |
|
elif 'LATTICE_PARAMETER' in blocks: |
|
stru['lat']['param'] = [float(x) |
|
for x in blocks['LATTICE_PARAMETERS'].split()] |
Multiwfn interface parser:
|
stru['lat'] = {'const': float(blocks['LATTICE_CONSTANT'][0])} |
|
if 'LATTICE_VECTORS' in blocks: |
|
stru['lat']['vec'] = [[float(x) for x in line.split()] for line in blocks['LATTICE_VECTORS']] |
|
elif 'LATTICE_PARAMETER' in blocks: |
|
stru['lat']['param'] = [float(x) for x in blocks['LATTICE_PARAMETERS'].split()] |
PyABACUS parser:
|
stru['lat'] = {'const': float(blocks['LATTICE_CONSTANT'][0])} |
|
if 'LATTICE_VECTORS' in blocks: |
|
stru['lat']['vec'] = [[float(x) for x in line.split()] |
|
for line in blocks['LATTICE_VECTORS']] |
|
elif 'LATTICE_PARAMETER' in blocks: |
|
stru['lat']['param'] = [float(x) |
|
for x in blocks['LATTICE_PARAMETERS'].split()] |
Relevant pattern:
elif 'LATTICE_PARAMETER' in blocks:
stru['lat']['param'] = [float(x)
for x in blocks['LATTICE_PARAMETERS'].split()]
Suggested fix:
Read from blocks['LATTICE_PARAMETER'] and account for the fact that block values are stored as a list of lines, for example blocks['LATTICE_PARAMETER'][0].split(). Add coverage for STRU files that contain LATTICE_PARAMETER without LATTICE_VECTORS.
This issue is a result of a Codex global repository scan.
Several Python STRU parsers check for a
LATTICE_PARAMETERblock but then readblocks['LATTICE_PARAMETERS']with an extraS. STRU files that useLATTICE_PARAMETERinstead ofLATTICE_VECTORStherefore raiseKeyErrorinstead of being parsed.ASE interface parser:
abacus-develop/interfaces/ASE_interface/abacuslite/io/generalio.py
Lines 464 to 470 in 84ca04b
Multiwfn interface parser:
abacus-develop/interfaces/Multiwfn_interface/molden.py
Lines 840 to 844 in 84ca04b
PyABACUS parser:
abacus-develop/python/pyabacus/src/pyabacus/io/stru.py
Lines 131 to 137 in 84ca04b
Relevant pattern:
Suggested fix:
Read from
blocks['LATTICE_PARAMETER']and account for the fact that block values are stored as a list of lines, for exampleblocks['LATTICE_PARAMETER'][0].split(). Add coverage for STRU files that containLATTICE_PARAMETERwithoutLATTICE_VECTORS.