[ase-users] bug in read traj file

Jens Jørgen Mortensen jjmo at dtu.dk
Thu Nov 21 09:40:40 CET 2019


Den 18.11.2019 kl. 18.07 skrev GENG SUN via ase-users:
> Dear ASE users,
> 
> I encounter a problem when read the traj file generated by two different 
> versions of python ase.
> 
> The struct.traj is generated by python-3.7.3 and ase-3.19.0b1 ( I don't 
> know why conda installed this version for me).
> 
> Then when I move the file "struct.traj" to another computer (which has 
> python3.6 and ase 3.18.1 installed), and try to read it by simply:

I can reproduce that.  We should fix this before releasing 3.19.

Thanks for letting us know.

Jens Jørgen

> 
> from ase.io <http://ase.io> import read
> atoms=read("struct.traj")
> 
> The line complains that:
> 
> Traceback (most recent call last):
>    File "read_traj.py", line 2, in <module>
>      atoms=read("struct.traj")
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/formats.py", 
> line 498, in read
>      parallel=parallel, **kwargs))
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/formats.py", 
> line 556, in _iread
>      for dct in io.read(fd, *args, **kwargs):
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/trajectory.py", 
> line 356, in read_traj
>      yield trj[i]
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/trajectory.py", 
> line 256, in __getitem__
>      atoms = read_atoms(b)
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/trajectory.py", 
> line 319, in read_atoms
>      for d in decode(constraints)],
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/io/trajectory.py", 
> line 319, in <listcomp>
>      for d in decode(constraints)],
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/constraints.py", 
> line 20, in dict2constraint
>      return globals()[dct['name']](**dct['kwargs'])
> *File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/ase/constraints.py", 
> line 138, in __init__
>      srt = np.sort(indices)*
>    File "<__array_function__ internals>", line 6, in sort
>    File 
> "/home/gengsun/anaconda3/envs/py36/lib/python3.6/site-packages/numpy/core/fromnumeric.py", 
> line 970, in sort
>      a.sort(axis=axis, kind=kind, order=order)
> 
> 
> Then I print the "indices" before the line of "srt=np.sort(indices)"
> and I found that the value of "indices" are:
> 
> {'__ndarray__': [array([120]), 'int64', array([  0,   1,   2,   3,   4, 
>    5,   6,   7,   8,   9,  10,  11,  17,
>          16,  15,  14,  13,  12,  18,  19,  20,  21,  22,  23,  35,  33,
>          32,  31,  30,  34,  28,  27,  26,  25,  29,  24,  47,  46,  45,
>          44,  43,  42,  41,  40,  39,  38,  37,  36,  58,  59,  57,  56,
>          55,  54,  49,  52,  51,  50,  48,  53,  60,  61,  62,  63,  64,
>          65,  70,  71,  69,  67,  66,  68,  82,  72,  73,  74,  75,  76,
>          77,  78,  79,  80,  81,  83,  89,  87,  88,  85,  84,  86,  97,
>         101,  99,  98,  96, 100,  94,  93,  92,  91,  90,  95, 113, 109,
>         112, 111, 110, 108, 102, 106, 105, 104, 103, 107, 118, 117, 119,
>         115, 114, 116])]}
> 
> It seems that "indices" here is a dictionary rather than a numpy array.
> 
> I wonder how to fix this problem?
> Since I already have quite a lot of data from the ase 3.19.0b1, hence I 
> would like to find a method to make them compatible.
> 
> 
> Thanks so much.
> 
> Best,
> 
> Geng
> 
> 
> 
> 
> _______________________________________________
> ase-users mailing list
> ase-users at listserv.fysik.dtu.dk
> https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users
> 



More information about the ase-users mailing list