mdanalysis icon indicating copy to clipboard operation
mdanalysis copied to clipboard

LAMMPS DumpReader returns incorrect coordinate transform

Open wjq1228 opened this issue 1 year ago • 6 comments

Expected behavior

The coordinate transform of "scaled" LAMMPS trajectory should be imported correctly.

Actual behavior

The MDAnalysis calculated incorrectly coordinates from scaled to unscaled. Calculation method of “scaled” is xs = (x-xlo)/(xhi-xlo). So, when coordinate transform, the coordinate can be calculated by x = (xhi-xlo)*xs + xlo. However, the LAMMPS DumpReader returns incorrect coordinate transform. For example, the scaled coordinate in my dump is

ITEM: TIMESTEP
0
ITEM: NUMBER OF ATOMS
6024
ITEM: BOX BOUNDS pp pp pp
3.3501000000000003e-02 6.2616999999999997e+01
-5.2700000000000002e-01 2.8887000000000000e+01
-1.5000000000000000e+01 4.0000000000000000e+01
ITEM: ATOMS id type xs ys zs
2608 2 0.0407033 0.457803 0.384662

The real coordinate of atom 2608 is [2.58086, 12.9388, 6.15641]. However, the coordinate calculated by DumpReader is [2.513854, 13.992818, 36.15641]. Calculation method of DumpReader seem to be x = (xhi-xlo)*xs - xlo. Other atoms are tested and the same error happened.

Code to reproduce the behavior

import numpy as np
import MDAnalysis as mda
from MDAnalysis.analysis.hydrogenbonds import HydrogenBondAnalysis
from MDAnalysis.analysis import hydrogenbonds

# load system
u = mda.Universe("carbonice3nm.data", "ice.lammpstrj", format="LAMMPSDUMP", lammps_coordinate_convention="scaled", dt=10)

O = u.select_atoms('id 2608')
print(O.positions)

## Current version of MDAnalysis ##

- Which version are you using? (2.8.0)
- Which version of Python? (3.10.0)
- Which operating system? (Windows)
- LAMMPS version 2 Aug 2023

wjq1228 avatar Nov 13 '24 02:11 wjq1228

If the coordinate transformation is indeed incorrect, you can manually calculate the coordinates using the correct formula as a workaround until an update is available. mdsimulation.txt

i have attached the file here see if it works

samkenzo avatar Nov 13 '24 14:11 samkenzo

Very thanks! Looking forward to updates soon!

wjq1228 avatar Nov 14 '24 00:11 wjq1228

appreciate it !

samkenzo avatar Nov 14 '24 10:11 samkenzo

@wjq1228 do you have a reference (eg from the LAMMPS docs) that defines the scaled coordinate transformation?

orbeckst avatar Nov 20 '24 22:11 orbeckst

We will look into this, concerning if correct.

hmacdope avatar Nov 21 '24 09:11 hmacdope

I don't think this is an issue. MDAnalysis transforms all coordinates to have a low value at the origin and a high of the both length because only the box lengths are stored. The coordinate values aren't what you expected because all of the coordinates where shifted so that xlo, ylo, and zlo are 0, however the location of the atoms in the box relative to each other are unchanged from your expectation.

jaclark5 avatar Oct 16 '25 00:10 jaclark5