Hello Matt

Thank you for your kindness.

I simplified the ff2chi problem in multiprocessing. I found that the ff2chi problem in multiprocessing is caused by receiving the arguments in an object (TestClass).

For instance
The below code works in multiprocessing
---------------------------------------------
class TestClass():
    def __init__(self, out_path_lists):
        self.path_lists=out_path_lists

    def test(self):
        path1 = feffpath(os.path.join(dPath,'FEFF1', fname1))
        path_lists=[path1]
        theory_sum=Group(label='theory_group_sum')
        ff2chi(path_lists, group=theory_sum)
        new_state=theory_sum.ch

However, If I change ff2chi(path_lists, group=theory_sum) to ff2chi(self.path_lists, group=theory_sum), the ff2chi problem is caused.

Finally, I want to use multiprocessing. The xraylarch you sent does not work in multiprocessing. 
If you are possible, please send me larch 0.9.71 to reinstall


2024년 2월 7일 (수) 오전 7:37, Matt Newville <newville@cars.uchicago.edu>님이 작성:
Hi Eun-Suk,

Did you do
       python -m pip install
https://millenia.cars.aps.anl.gov/xraylarch/downloads/xraylarch-latest-py3-none-any.whl

?
That will install the development version (later than 0.9.74, not yet
0.9.75, sorry for that delay).  This works for me:

  from larch.xafs import feffpath
  p1 = feffpath('feff0001.dat', e0=-1, sigma2=0.010)
  p1.s02 = 0.95
  dat = ff2chi([p1])

I don't know of any multiprocessing problem...

Cheers,

On Tue, Feb 6, 2024 at 11:05 PM 정은석 <eunsuk1986@jbnu.ac.kr> wrote:
>
> Hello  Matt.
>
> I think that you need some time to fix the 'multi-processing problem of 0. 9.74'. If you take a little long time to fix it, can you send me xraylarch version 0.9.71? or could you inform me of the site of the old version?
> I will reinstall xraylarch with it.
>
> Thank you for your effort and contribution
>
> 2024년 2월 5일 (월) 오후 5:09, 정은석 <eunsuk1986@jbnu.ac.kr>님이 작성:
>>
>> Hello Matt
>>
>> I changed my original code to simple code for you as below.
>> I found the problem of larch 0.9.74 in multi-processing.
>> You can check it with the below code. How can I fix this problem?
>>
>> ------------------------------------------------------------------------------------------------------------
>> ############# Multi-processing test ########################
>> import larch
>> from larch import Group
>> from larch.utils import *
>> from larch.xafs import *
>> from larch.io import *
>>
>> import numpy as np
>> import os
>> import torch.multiprocessing as mp
>>
>> dPath = r'C:\Users\Administrator\Desktop\RL\feffit_error_test'
>> os.chdir(dPath)
>> fname1 = 'feff0001.dat'  # N=1, Reff=1.9 N
>>
>> path1 = feffpath(os.path.join(dPath,'FEFF1', fname1))
>> #################################
>> path_lists=[path1]
>> path_lists[0].s02=0.86
>> ################################################
>>
>> class Func():
>>     def __init__(self, path_lists):
>>         self.path_lists=path_lists
>>
>>     def step(self):
>>         self.path_lists[0].e0, self.path_lists[0].degen, self.path_lists[0].deltar, self.path_lists[0].sigma2 = [2, 5, 0.001, 0.004]
>>     ## Theory path들의 합과 theory FFT
>>         theory_sum=Group(label='theory_group_sum')
>>         ff2chi(self.path_lists, group=theory_sum)
>>         new_state=theory_sum.chi
>>         return new_state
>>
>> class TestClass():
>>     def __init__(self, path_lists):
>>         self.path_lists=path_lists
>>
>>     def test(self):
>>         func1 = Func(self.path_lists)
>>         s=func1.step()
>> ############################################
>>
>> T_func=TestClass(path_lists)
>> F_func=Func(path_lists)
>>
>> if __name__ == '__main__':
>>     process_list=[]
>>     p_N =mp.Process(target=T_func.test,)
>>     p_N.start()
>>     process_list.append(p_N)
>>     for process in process_list:
>>         process.join()
>> ##################################################################
>> #####Problem##########
>>   File "C:\ProgramData\anaconda3\envs\xraylarch\Lib\multiprocessing\process.py", line 314, in _bootstrap
>>     self.run()
>>   File "C:\ProgramData\anaconda3\envs\xraylarch\Lib\multiprocessing\process.py", line 108, in run
>>     self._target(*self._args, **self._kwargs)
>>   File "c:\Users\Administrator\Desktop\RL\feffit_error_test\test-ff2chi-problem.py", line 40, in test
>>     s=func1.step()
>>       ^^^^^^^^^^^^
>>   File "c:\Users\Administrator\Desktop\RL\feffit_error_test\test-ff2chi-problem.py", line 30, in step
>>     ff2chi(self.path_lists, group=theory_sum)
>>   File "C:\ProgramData\anaconda3\envs\xraylarch\Lib\site-packages\larch\xafs\feffdat.py", line 658, in ff2chi
>>     path.create_path_params(params=params)
>>   File "C:\ProgramData\anaconda3\envs\xraylarch\Lib\site-packages\larch\xafs\feffdat.py", line 392, in create_path_params
>>     parname = self.pathpar_name(pname)
>>               ^^^^^^^^^^^^^^^^^^^^^^^^
>>   File "C:\ProgramData\anaconda3\envs\xraylarch\Lib\site-packages\larch\xafs\feffdat.py", line 331, in pathpar_name
>>     return f'{parname}_{self.dataset}_{self.hashkey}'
>>                         ^^^^^^^^^^^^
>> AttributeError: 'FeffPathGroup' object has no attribute 'dataset'
>>
>>
>> 2024년 2월 5일 (월) 오전 4:44, Matt Newville <newville@cars.uchicago.edu>님이 작성:
>>>
>>> Hi Eun-Suk,
>>>
>>> All the examples with ff2chi and running feffit work for me.   I sort
>>> of don't understand how that could happen (a FeffPathGroup does -- or
>>> should -- have a `dataset` attribute).
>>>
>>> Can you provide an example that shows the problem?
>>>
>>> --Matt
>>> _______________________________________________
>>> Ifeffit mailing list
>>> Ifeffit@millenia.cars.aps.anl.gov
>>> http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
>>> Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit
>>
>>
>>
>> --
>> Best regards,
>>
>> Ph. D. Eun-Suk Jeong
>> X-ray absorption fine structure(EXAFS+XANES)
>> Mobile:+82-10-4628-9896
>>
>>
>
>
> --
> Best regards,
>
> Ph. D. Eun-Suk Jeong
> X-ray absorption fine structure(EXAFS+XANES)
> Mobile:+82-10-4628-9896
>
>
> _______________________________________________
> Ifeffit mailing list
> Ifeffit@millenia.cars.aps.anl.gov
> http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
> Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit



--
--Matt Newville <newville at cars.uchicago.edu> 630-327-7411

_______________________________________________
Ifeffit mailing list
Ifeffit@millenia.cars.aps.anl.gov
http://millenia.cars.aps.anl.gov/mailman/listinfo/ifeffit
Unsubscribe: http://millenia.cars.aps.anl.gov/mailman/options/ifeffit


--
Best regards,

Ph. D. Eun-Suk Jeong
X-ray absorption fine structure(EXAFS+XANES)
Mobile:+82-10-4628-9896