Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AttributeError: module 'ChiantiPy.tools.data' has no attribute 'Abundance' #314

Open
awalker4314 opened this issue May 29, 2021 · 27 comments

Comments

@awalker4314
Copy link

Hi, I just installed Chianti on Windows (I'm using Anaconda). When I try to run ch.ion, I get the error message

"AttributeError: module 'ChiantiPy.tools.data' has no attribute 'Abundance'"

What's tripping it up seems to be line 134 in [HOME]\anaconda3\lib\site-packages\ChiantiPy\core\Ion.py, which is

self.Abundance = chdata.Abundance[self.AbundanceName]['abundance'][self.Z-1]

I'm not sure how to fix this, and I haven't been able to find a solution for this problem anywhere else

@kdere
Copy link
Contributor

kdere commented May 29, 2021

Hi,

could you show me how you initiate your ion?

I am not able to duplicate your error.

Ken

@awalker4314
Copy link
Author

Thanks for the quick reply! Here's the block of code I'm using for this. Admittedly I'm not particularly experienced with Python, but I'm using essentially the same block of code that worked fine on a different laptop, which makes me think it could be an installation issue. Please let me know if you need anything else!

`import ChiantiPy.core as ch

T = [53420., 53420., 53420., 16320.]
logne = list(np.linspace(2.5, 6.6, 500))
ne = 10.**np.array(logne)
statename = ['o_5','ca_8','ca_7','o_4']
state = [[2,1],[1,0],[1,0],[1,0]]

ions, popion_numer, popion_denom = [], [], []
for i in range(len(statename)):
ions.append(ch.ion(statename[i],temperature=T[i],eDensity=ne))
ions[i].populate()
popion_numer.append(ions[i].Population['population'][:,state[i][0]])
popion_denom.append(ions[i].Population['population'][:,state[i][1]])`

@kdere
Copy link
Contributor

kdere commented May 30, 2021

I have coded this up and it all works.

One thing you might try is
import ChiantiPy.tools.data as chdata chdata.Abundance

this should give you a dictionary of all of the abundance data files

or
c4=ch.ion(T, ne) c4.Abundance

should give you the abundance of Carbon.

let me know how it goes

Ken

@kdere
Copy link
Contributor

kdere commented May 30, 2021

sorry, the code needs to have a single line turned into 2 lines

@awalker4314
Copy link
Author

So, I tried these, but they both give the same error as before

@kdere
Copy link
Contributor

kdere commented May 30, 2021

what happens when you do

import ChiantiPy.tools.data as chdata

chdata.Abundance

are you working in straight interactive Python, an ipython shell, or a jupyter notebook?

Ken

@awalker4314
Copy link
Author

Inputting just the first line goes smoothly, but the second line returns the error I had before. I'm using Spyder for this

@kdere
Copy link
Contributor

kdere commented May 30, 2021

after importing chdata,
try:

hasattr(chdata,'Abundance')

hopefully this returns True

Ken

@awalker4314
Copy link
Author

Putting that in returns false

@kdere
Copy link
Contributor

kdere commented May 30, 2021

or:
dir(chdata)

@kdere
Copy link
Contributor

kdere commented May 30, 2021

sounds like you are not reading anything.
try
os.environ('XUVTOP')

to see if it is pointing to the top of the CHIANTI directory

@awalker4314
Copy link
Author

dir(chdata) returns ['Defaults', 'Xuvtop', 'builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'spec', warningregistry', 'chio', 'glob', 'klnames', 'os', 'traceback', 'warnings']

os.environ['XUVTOP'] returns 'C:\Users\15405\ChiantiPy\dbase', as I set that manually in the line above the import line

@kdere
Copy link
Contributor

kdere commented May 31, 2021

what I get is:
dir(chdata) ['Abundance', 'AbundanceDefault', 'AbundanceList', 'ChiantiVersion', 'Defaults', 'GrndLevels', 'IoneqAll', 'Ip', 'Klgbfn', 'MasterList', 'Xuvtop', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'aname', 'chio', 'filename', 'fname', 'glob', 'keywordArgs', 'kl', 'klnames', 'os', 'traceback', 'warnings']

and this is quite different

try:
import ChiantiPy.tools.io as chio elvlc = chio.elvlcRead('c_4')

this should give you a dictionary of the energy levels of c_4 with the following keys:

dict_keys(['lvl', 'conf', 'term', 'label', 'spin', 'spd', 'l', 'j', 'mult', 'ecm', 'eryd', 'erydth', 'ecmth', 'ref', 'pretty', 'status', 'filename'])

somehow I don't think you are reading the database correctly

Ken

@awalker4314
Copy link
Author

Yes, that is definitely very different. Trying this new thing does give me a dictionary with those keys though

@kdere
Copy link
Contributor

kdere commented May 31, 2021

what version of ChiantiPy are you using?
what version of the CHIANTI database are you using?

@awalker4314
Copy link
Author

I believe I'm using version 0.11.0 for ChiantiPy and 10.0.1 for the database.

As a side note, I was trying to compare the dbase directory to the one on my old computer, and I noticed that the dbase on my new computer is missing the folder PaxHeader. Is that important?

@kdere
Copy link
Contributor

kdere commented May 31, 2021

sounds like your versions are OK

I think the paxheader is something you get when the tar file is made under MacOs. It is not necessary.

since you were able to read the elvlc file, things should be OK but they are not. I am kind of baffled

Ken

@kdere
Copy link
Contributor

kdere commented May 31, 2021

are you using Python 3.X?

Ken

@awalker4314
Copy link
Author

Yes, Python 3.8.5

@kdere
Copy link
Contributor

kdere commented Jun 1, 2021

when you do

import ChiantiPy.tools.io as chio elvlc = chio.elvlcRead('c_4')

what does elvlc['filename'] give you and does it match were you think it should be based on your XUVTOP

@awalker4314
Copy link
Author

When I do this, elvlc['filename'] gives me 'C:\Users\15405\ChiantiPy\dbase\c\c_4\c_4.elvlc'. 'C:\Users\15405\ChiantiPy\dbase' is indeed my XVUTOP directory

@awalker4314
Copy link
Author

Since I had some trouble installing this at first on Windows, I thought this might be the reason for this problem, so I tried installing it on a work computer that uses Linux. After an easy 4-line installation, I get the exact same error on the Linux machine

@awalker4314
Copy link
Author

Scratch that, it works fine on Linux, so I reinstalled it on Windows and it works fine there too. Must've been a problem with the installation. Thanks so much for trying to help figure this out, and sorry for the trouble!

@kdere
Copy link
Contributor

kdere commented Jun 1, 2021

glad you got it working.

@kdere kdere closed this as completed Jun 1, 2021
@belay221
Copy link

belay221 commented Dec 6, 2023

Dear Sir
I've read every comment that was made in 2021. With chianti-atomics, which stands for abundances of elements, I encountered the same issues. How can I fix the issue and move on to solving it on Windows 10 rather than in Lunix? I no longer use Linux; I use Windows.

@belay221
Copy link

belay221 commented Dec 6, 2023

I've read every comment that was made in 2021. With chianti-atomics, which stands for abundances of elements, I encountered the same issues. How can I fix the issue and move on to solving it on Windows 10 rather than in Lunix? I no longer use Linux; I use Windows.

@kdere kdere reopened this Dec 6, 2023
@kdere
Copy link
Contributor

kdere commented Dec 6, 2023

the problem that awalker has was that the environ variable XUVTOP was not set before the code was run. Make sure that XUVTOP points to the CHIANTI data.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants