Skip to content

[Code scan] Convert atom-type arrays to scalars in feature_to_block #39

Description

@njzjz

This issue comes from a Codex global repository scan.

Problem

feature_to_block() indexes ase.data.chemical_symbols with the ndarray returned by idp.untransform(...):

symbol = ase.data.chemical_symbols[idp.untransform(data[_keys.ATOM_TYPE_KEY][atom].reshape(-1))]

The same pattern appears for edge atoms:

symbol_i = ase.data.chemical_symbols[idp.untransform(data[_keys.ATOM_TYPE_KEY][atom_i].reshape(-1))]
symbol_j = ase.data.chemical_symbols[idp.untransform(data[_keys.ATOM_TYPE_KEY][atom_j].reshape(-1))]

When atom types are shaped like (N, 1), idp.untransform(data[_keys.ATOM_TYPE_KEY][atom].reshape(-1)) returns an array such as array([14]), and list indexing with that ndarray raises TypeError.

Suggested fix

Convert the untransformed result to a scalar before indexing:

atomic_number = int(np.asarray(idp.untransform(...)).reshape(-1)[0])
symbol = ase.data.chemical_symbols[atomic_number]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions