contrib/python: scan input() -- relationship between reported and actual geometries?


Click here for full thread
Gets Around
The situation:
Running e.g.
scratch_dir /scratch
Title "meoh_pes"
Start  meoh_pes
echo
charge 0
geometry autosym units angstrom
 C     0.0351714     0.00548884     0.0351714
 H     -0.617781     -0.634073     0.667983
 H     0.667983     -0.634073     -0.617781
 H     -0.605139     0.646470     -0.605139
 O     0.839603     0.818768     0.839603
 H     1.38912     0.201564     1.38912
end
ecce_print ecce.out
basis "ao basis" cartesian print
  H library "3-21G"
  O library "3-21G"
  C library "3-21G"
END
dft
  mult 1
  direct
  XC b3lyp
  grid fine
  iterations 99
  mulliken
end
driver
  default
end
python
from nwgeom import *
geom = ''' 
    geometry adjust
        zcoord
            bond 1 5 %f cccc constant
        end
    end 
'''
results=scan_input(geom,[1.398],[3.398],19,'dft',task_optimize)


for i in range(0,len(results)):
    print results[i][0][0],results[i][1]
end

task python

works fine and generates a series of energies for the relaxed PES scan. However, the printed results (via python) are of the form
Scanning NWChem input - results from step  1
 
(-115.07289919583619, [-0.0013504849478134656, 0.018005190622919345, 0.0, 5.579142471789922e-06, -7.262063278778985e-07, 1.369338144779908e-05, 5.579142471789922e-06, -7.262063278778985e-07, -1.369338144779908e-05, -1.8163470062615428e-05, -2.4371896595737352e-06, 0.0, 0.0013598078343054765, -0.018000708280353828, 0.0, -2.3177013348807396e-06, -5.92740248682444e-07, 0.0])
 
Scanning NWChem input - step 2 of 19 

If I clean it up the coordinates look like this:
C	-0.0013504849478134656	 0.018005190622919345	 0.0
H	5.579142471789922e-06	 -7.262063278778985e-07	 1.369338144779908e-05
H	5.579142471789922e-06	 -7.262063278778985e-07	 -1.369338144779908e-05
H	-1.8163470062615428e-05	 -2.4371896595737352e-06	 0.0
O	0.0013598078343054765	 -0.018000708280353828	 0.0
H	-2.3177013348807396e-06	 -5.92740248682444e-07	 0.0


whereas the coordinates are given (in Å) by nwchem as
  No.       Tag          Charge          X              Y              Z
 ---- ---------------- ---------- -------------- -------------- --------------
    1 C                    6.0000    -0.00618375     0.68819272     0.00000000
    2 H                    1.0000    -0.51476781     1.07380349     0.89423057
    3 H                    1.0000    -0.51476781     1.07380349    -0.89423057
    4 H                    1.0000     1.02323844     1.04933621     0.00000000
    5 O                    8.0000     0.10645828    -0.80556622     0.00000000
    6 H                    1.0000    -0.82908766    -1.14932968     0.00000000


The question:
How do I use the coordinates given by the python output? Due to the single-line format they are very easy to extract using sed and gawk, but I can't figure out how to turn them into proper cartesian coordinates with reasonable units. Just to clarify -- I can extract the coordinates as given by scan_input and I can turn them into properly formatted xyz files, but there's something fishy about the magnitudes.

While there are similarities (e.g. look at the z column) the coordinates aren't related by simple scaling. I also looked at the distances between the coordinates, e.g. in the python output the C(1)-H(2) and the O(5)-C(1) distances are
sqrt((-0.0013504849478134656-5.579142471789922e-06)^2+(0.018005190622919345+7.262063278778985e-07)^2+(0-1.369338144779908e-05)^2)=0.018057
sqrt((0.0013598078343054765+0.0013504849478134656)^2+(-0.018000708280353828-0.018005190622919345)^2+(0-0)^2)=0.036108

while in the nwchem coordinates the distances are
sqrt((-0.00618375+0.51476781)^2+(0.68819272-1.07380349)^2+(0-0.89423057)^2)=1.0986
sqrt((0.10645828+0.00618375)^2+(-0.80556622-0.68819272)^2+(0-0)^2)=1.4980


1.0986/0.018057=60.841
1.4980/0.036108=41.487

The python output doesn't seem to be the change in coordinates either.

Am I missing something obvious here? Everything looks fine in ecce and the geometries are correctly given there, but it would be nice to be able to extract it from the nwchem output.