Skip to content

[Code scan] Preserve global dipole and polarizability in raw_to_set.sh #5692

Description

@njzjz

This issue comes from a Codex global scan of deepmodeling/deepmd-kit at commit 73de44b1f94471b2e3bdb6b11f57b34d7bc791bb.

Problem

data/raw/raw_to_set.sh splits global dipole.raw and polarizability.raw files:

test -f dipole.raw && split dipole.raw -l $nline_per_set -d -a 3 dipole.raw
test -f polarizability.raw && split polarizability.raw -l $nline_per_set -d -a 3 polarizability.raw

Later, each set directory tries to convert dipole.raw and polarizability.raw if those files exist inside the set:

python -c \
'import numpy as np; import os.path;
if os.path.isfile("dipole.raw"):
data = np.loadtxt("dipole.raw", ndmin = 2);
data = data.astype (np.float64);
np.save ("dipole", data)
'
python -c \
'import numpy as np; import os.path;
if os.path.isfile("polarizability.raw"):
data = np.loadtxt("polarizability.raw", ndmin = 2);
data = data.astype (np.float64);
np.save ("polarizability", data)

However, the move block only moves atomic_dipole.raw$pi and atomic_polarizability.raw$pi; it omits the split global files dipole.raw$pi and polarizability.raw$pi:

mv box.raw$pi set.$pi/box.raw
mv coord.raw$pi set.$pi/coord.raw
test -f energy.raw$pi && mv energy.raw$pi set.$pi/energy.raw
test -f force.raw$pi && mv force.raw$pi set.$pi/force.raw
test -f virial.raw$pi && mv virial.raw$pi set.$pi/virial.raw
test -f atom_ener.raw$pi && mv atom_ener.raw$pi set.$pi/atom_ener.raw
test -f fparam.raw$pi && mv fparam.raw$pi set.$pi/fparam.raw
test -f atomic_dipole.raw$pi && mv atomic_dipole.raw$pi set.$pi/atomic_dipole.raw
test -f atomic_polarizability.raw$pi && mv atomic_polarizability.raw$pi set.$pi/atomic_polarizability.raw

Impact

Datasets containing global dipole or polarizability labels silently lose those labels during conversion. The split files remain in the raw directory instead of being moved into set.*/, so dipole.npy and polarizability.npy are never generated.

Suggested fix

Move dipole.raw$pi to set.$pi/dipole.raw and polarizability.raw$pi to set.$pi/polarizability.raw before entering the set directory, matching the existing conversion blocks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions