Natural Orbital Analysis in PSI4

Hi PSI4 users,

I have tried calling NO analysis with the command

property(“scf”, properties=[‘no_occupations’])

But I had the error message:

An error has occurred Py-side
Traceback:
<type ‘exceptions.NameError’>: global name ‘lowername’ is not defined: File “”, line 32, in

File “/home/chester/miniconda2/share/psi4/python/driver.py”, line 960, in property
wfn = procedures[‘property’][lowername](lowername, **kwargs)

File “/home/chester/miniconda2/share/psi4/python/proc.py”, line 1913, in run_scf_property
if lowername == ‘hf’:

I tried to find what “lowername” is, but with no luck. I wonder where went wrong with this.

Thanks,
Chester

What are you trying to do? Is this a UHF-NO computation?

Hi Crawdad,

I think what I want to ask is how to correctly invoke a property calculation with SCF, not just for NO analysis. For example,
property('cc2', properties=['rotation'])
is correct while
property('scf', properties=['rotation'])
is not. I wonder where the problem is.

Thanks,
Chester

The property keyword is under discussion right now, I believe (am I correct, @loriab, @dgasmith?). It was, as you’ve seen, originally constructed for use with the CC codes, but we don’t yet have properties like polarizabilities or optical rotations working at the Hartree-Fock or DFT levels.

Yes, how properties are handled in Psi4 is on our TODO list. You can view all available properties for each method here.

Hi dgasmith,

I have checked that löwdin charge computation should be supported by scf; but when I use
property (‘scf’, properties = [‘lowdin_charges’]
the output is still an error. So I wonder where the problem is.

Thanks,
Chester

To circumvent the first problem you cannot have a space between properties and (. The call must be:

property('scf', properties = ['lowdin_charges'])

That being said, it looks like SCF was never setup correctly to work with OEProp. You can either have a line that looks like set print 3 to increase the print level, or you can execute the following small script:

scf_e, scf_wfn = energy('scf', return_wfn=True)

oeprop = psi4.OEProp(scf_wfn)
oeprop.add("LOWDIN_CHARGES")
oeprop.compute()