Hi Matt,

  A Python dictionary is not ordered.  So positions.keys() can return the values in any order and it can and does change order as more positions are added (because it is a hash map which reallocates as the size grows).  So if you want them ordered then you order them yourself, for instance alphabetically:

pnames = list(positions.keys())
pnames.sort()

  Tom


On Jun 3, 2015, at 6:07 AM, Dougherty, Matthew T wrote:

Hi, 

I have been automating the creation of positions using python scripts.  Something relatively simple like p001, p002, etc.

When I examine the positions using the python commands
from Midas import positions
pnames = positions.keys()

at first things appear as I would expect, but later the sequence changes relative to the index, why is that?

for example, using this to print the positions

        pnames = positions.keys()
        i=0
        for pname in pnames:
          print i,pnames[i]
          i=i+1




I get these results:

savepos p000
savepos p001
0 p000
1 p001
(as expected)

savepos p002
0 p000
1 p001
2 p002
(as expected)

savepos p003
0 p000
1 p001
2 p002
3 p003
(as expected)

savepos p004
0 p004
1 p000
2 p001
3 p002
4 p003
(not as expected)

savepos p005
0 p004
1 p005
2 p000
3 p001
4 p002
5 p003
(not as expected)


I would expect pnames[0] to correspond to the first position created, pnames[1] to the second posiiton created, etc., assuming no ~savepos used. 

Want to create a situation where the default names would be pxxx, but could later be altered to more meaningful names but maintain the order of creation, or getting a session file from someone I would use their position names and tack on my default names to the end of the position list.



Matthew Dougherty
National Center for Macromolecular Imaging
Baylor College of Medicine
===========================================================================
_______________________________________________
Chimera-users mailing list
Chimera-users@cgl.ucsf.edu
http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users