Dear Jhonoton
If my best choice is the first then I have will have difficulty to pass
some stuff in my string, as an example:

cation = {'Na': 1,'Cl':2}
anion = {'Cl': 1}
ionic_dic = dict()
for d in (cation, anion):
    ionic_dic.update(d)
def ionicstr():
    Ionic = 0
    sqrt_I = 0
    for k1 in ionic_dic:
        Ionic += 0.5 * (('X'+str(k1)) * (ionic_dic[k1] ** 2))
        sqrt_I += (Ionic) ** 0.5
        print(Ionic, sqrt_I)
    return Ionic, sqrt_I
def term():
    for i in cation:
        A ='X' + str(i) + str(ionicstr()[0])
        print(A)
    return A
term()

Is there any way to pass computed ionicstr()[0] to string??
Zohreh Karimzadeh
Skype Name 49a52224a8b6b38b
Twitter Account @zohrehkarimzad1
+989102116325
((((((((((((((((Value Water)))))))))))))))


On Thu, Sep 1, 2022 at 12:43 AM gu...@uwosh.edu <gu...@uwosh.edu> wrote:

> Zohreh,
>
> I cannot tell you what is your best choice until you tell me what you are
> doing after you build the expression. Is it 1 or 2, as I asked before?
>
> 1) You ultimately pass a string expression to lmfit or some other fitting
> package that is parsed into a numpy expression for fitting or something
> similar.
>
> 2)You are making your own model function that returns a number every time
> it is called by some other package (fitting?).
>
> Please explain exactly how you wish to use the expression you are
> developing and, if you are using it with another tool, which one?
>
> Regards,
> Jonathan
> On Friday, August 26, 2022 at 9:24:32 PM UTC-5 z.kari...@gmail.com wrote:
>
>> Dear Jonathan
>> Thank you for your reply.
>> About using strings instead of sympy good idea, It is necessary to
>> know that there are bunch of functions that are inserted in the main
>> model as one of them :
>>
>> anion = {'Cl': 1}
>> cation = {'Na': 1}
>> ionic_dic = dict()
>> for d in (cation, anion):
>> ionic_dic.update(d)
>> def ionicstr():
>> Ionic = 0
>> sqrt_I = 0
>> for k1 in ionic_dic:
>> Ionic += 0.5 * (sp.symbols('X{0}'.format(str(k1))) *
>> (ionic_dic[k1] ** 2))
>> sqrt_I += sp.sqrt(Ionic)
>> print(Ionic, sqrt_I)
>> return Ionic, sqrt_I
>> AS can be seen while all of these kinds of functions must be evaluated
>> or substituted in the main model.
>> Is it still possible to use strings instead of sympy??
>> Regards,
>> Zohreh
>>
>> On Fri, Aug 26, 2022 at 6:04 PM gu...@uwosh.edu <gu...@uwosh.edu> wrote:
>> >
>> > Zohreh,
>> >
>> > It is still unclear what you are actually doing. I can think of two
>> possibilities (are either of them correct?):
>> >
>> > 1) You ultimately pass a string expression to lmfit or some other
>> fitting package that is parsed into a numpy expression for fitting or
>> something similar. So I am suggesting that you remove the intermediate step
>> of creating a sympy expression to make things more efficient. You can
>> generate the string expression dynamically in essentially the same way you
>> are currently generating the sympy expression, but avoid having the
>> intermediate step of using sympy to generate the expression and then using
>> it to generate a string expression that is parsed again.
>> >
>> > 2) Alternatively, you may be making your own model function (I believe
>> for lmfit). In that case you need to generate a function that does a
>> calculation. I see no reason it has to have human readable names for the
>> parameters in the actual calculation. However, you could connect them with
>> human readable names through a dictionary or something like that.
>> >
>> > If you want a string, your code is almost there. As long as the
>> elements of cation and anion are strings. Just replace things like
>> sp.symbols('X{0}'.format(str(i))) with 'X_'+str(i). But maybe that is not
>> what you are doing.
>> >
>> > Jonathan
>> >
>> > On Friday, August 26, 2022 at 5:03:00 AM UTC-5 z.kari...@gmail.com
>> wrote:
>> >>
>> >> Jonathan has recommended to use string instead of sympy approche to
>> >> derive your model and -parameters.
>> >> But I stated that my model is driven dynamically. It means, as an
>> >> example for one term in model I have:
>> >>
>> >> term_unca = 0
>> >> for k in anion:
>> >> for j in cation:
>> >> for i in neutral:
>> >> term_unca += term_uncX - 2 *
>> >> sp.symbols('X{0}'.format(str(i))) * sp.symbols(f'X{str(j)}') * \
>> >> sp.symbols(f'X{str(k)}') * ((cation[j] +
>> >> anion[k]) ** 2 / (cation[j] * anion[k])) \
>> >> * sp.symbols(f'U{str(i)}{str(j)}{str(k)}')
>> >> This way all the parameters should be created for each run of fitting.
>> >>
>> >>
>> >> Zohreh Karimzadeh
>> >> https://www.researchgate.net/profile/Zohreh-Karimzadeh
>> >> Skype Name 49a52224a8b6b38b
>> >> Twitter Account @zohrehkarimzad1
>> >> z.kari...@gmail.com
>> >> +989102116325 <+98%20910%20211%206325>
>> >> ((((((((((((((((Value Water)))))))))))))))
>> >>
>> >> Zohreh Karimzadeh
>> >> https://www.researchgate.net/profile/Zohreh-Karimzadeh
>> >> Skype Name 49a52224a8b6b38b
>> >> Twitter Account @zohrehkarimzad1
>> >> z.kari...@gmail.com
>> >> +989102116325 <+98%20910%20211%206325>
>> >> ((((((((((((((((Value Water)))))))))))))))
>> >>
>> >>
>> >> On Fri, Aug 26, 2022 at 7:58 AM Peter Stahlecker
>> >> <peter.st...@gmail.com> wrote:
>> >> >
>> >> > Dear Zohreh,
>> >> >
>> >> > I think, you should describe precisely what you want, rather than
>> referring to previous correspondence.
>> >> > Someone out there (likely not me) might have a solution to what you
>> need - but cannot be bothered to read through you previous correspondence.
>> >> >
>> >> > 1.
>> >> > Parameter names should be made in a dynamic way.
>> >> > what exactly do you mean by this?
>> >> > Better give an example of what you would like to do.
>> >> >
>> >> > 2.
>> >> > how using for loop in string can be simultaneously handled.
>> >> > I have no idea, what your question is - and I am afraid, not many
>> people understand.
>> >> > Better give an example of what you want to do.
>> >> >
>> >> > Peter
>> >> >
>> >> > On Fri 26. Aug 2022 at 04:42 Zohreh Karimzadeh <z.kari...@gmail.com>
>> wrote:
>> >> >>
>> >> >> As can be seen in the former script, parameter names should be made
>> in a dynamic way.
>> >> >> I am wondering how using for loop in string can be simultaneously
>> handled.
>> >> >> Regards,
>> >> >> Zohreh Karimzadeh
>> >> >> https://www.researchgate.net/profile/Zohreh-Karimzadeh
>> >> >> Skype Name 49a52224a8b6b38b
>> >> >> Twitter Account @zohrehkarimzad1
>> >> >> z.kari...@gmail.com
>> >> >> +989102116325 <+98%20910%20211%206325>
>> >> >> ((((((((((((((((Value Water)))))))))))))))
>> >> >>
>> >> >>
>> >> >> On Wed, Aug 24, 2022 at 9:32 PM gu...@uwosh.edu <gu...@uwosh.edu>
>> wrote:
>> >> >>>
>> >> >>> Zohreh,
>> >> >>>
>> >> >>> The code snippets you have provided do not suggest you are doing
>> anything that requires sympy. So, I am confused. It looks like you need a
>> function that generates a string of the summations in your expression, when
>> passed species. I think there is a fixed number of parameters for each
>> species. You are probably better off building the string for your
>> expressions without involving sympy. I am thinking something like this to
>> define part of your fit function:
>> >> >>>
>> >> >>>
>> >> >>> def term(species_name):
>> >> >>>
>> return(species_name+'_param1*conc_'+species_name+'+'+species_name+'_param2*np.sqrt(conc_'+species_name+')')
>>
>> >> >>> Then
>> >> >>> term('Cl')
>> >> >>> returns
>> >> >>> 'Cl_param1*conc_Cl+Cl_param2*np.sqrt(conc_Cl)'
>> >> >>>
>> >> >>> Then build your overall expression from these pieces. Then do a
>> fit with initial guesses for all the parameters.
>> >> >>>
>> >> >>> That's how I would do it unless I am manipulating the expressions
>> using sympy first.
>> >> >>>
>> >> >>> Jonathan
>> >> >>> On Wednesday, August 24, 2022 at 11:11:58 AM UTC-5
>> z.kari...@gmail.com wrote:
>> >> >>>>
>> >> >>>> I should extract the required model for each system of chemicals
>> and do a least squre for derived model and parameters to find the
>> parameters for each chemical systems.
>> >> >>>>
>> >> >>>>
>> >> >>>> Zohreh Karimzadeh
>> >> >>>>
>> >> >>>> Contact me on
>> >> >>>> +989102116325 <+98%20910%20211%206325>
>> >> >>>> and at
>> >> >>>> z.kari...@gmail.com
>> >> >>>> 🌧️🌍🌱
>> >> >>>>
>> >> >>>> On Wed, 24 Aug 2022, 19:33 gu...@uwosh.edu, <gu...@uwosh.edu>
>> wrote:
>> >> >>>>>
>> >> >>>>> Zohreh,
>> >> >>>>>
>> >> >>>>> I pulled the paper. I see no reason you need to use SymPy to do
>> the numerical fitting. I would approach this by inputting the species in a
>> dictionary or list and then use that to call functions that generate the
>> computed value for each term/sum. Are you trying to keep track of the
>> complete symbolic expression or do a numerical calculation?
>> >> >>>>>
>> >> >>>>> If you are using chemical symbols or reactions, are you taking
>> advantage of ChemPy?
>> >> >>>>>
>> >> >>>>> Jonathan
>> >> >>>>> On Tuesday, August 23, 2022 at 12:01:02 AM UTC-5
>> z.kari...@gmail.com wrote:
>> >> >>>>>>
>> >> >>>>>> As following, I should generate each parameters dynamically
>> (for 20-30 terms):
>> >> >>>>>>
>> >> >>>>>> term_vnca = 0
>> >> >>>>>> for k in anion:
>> >> >>>>>> for j in cation:
>> >> >>>>>> for i in neutral:
>> >> >>>>>> term_vnca += term_vncX - 4 * 3 * sp.symbols(f'X{str(k)}') *
>> sp.symbols('X{0}'.format(str(i))) \
>> >> >>>>>> ** 2 * sp.symbols(f'V{str(i)}{str(j)}{str(k)}')
>> >> >>>>>> lnfXs = term_wnca + term_unca + term_vnca + termx_w_solvent1 +
>> termx_w_solvent2
>> >> >>>>>>
>> >> >>>>>> Zohreh Karimzadeh
>> >> >>>>>> https://www.researchgate.net/profile/Zohreh-Karimzadeh
>> >> >>>>>> Skype Name 49a52224a8b6b38b
>> >> >>>>>> Twitter Account @zohrehkarimzad1
>> >> >>>>>> z.kari...@gmail.com
>> >> >>>>>> +989102116325 <+98%20910%20211%206325>
>> >> >>>>>> ((((((((((((((((Value Water)))))))))))))))
>> >> >>>>>>
>> >> >>>>>>
>> >> >>>>>> On Tue, Aug 23, 2022 at 9:26 AM Zohreh Karimzadeh <
>> z.kari...@gmail.com> wrote:
>> >> >>>>>>>
>> >> >>>>>>> Not these model and parameters, My model is very complicated
>> wit large number of parameters:
>> >> >>>>>>>
>> >> >>>>>>> As a very simple example I raise this question.
>> >> >>>>>>> Zohreh Karimzadeh
>> >> >>>>>>>
>> >> >>>>>>> Contact me on
>> >> >>>>>>> +989102116325 <+98%20910%20211%206325>
>> >> >>>>>>> and at
>> >> >>>>>>> z.kari...@gmail.com
>> >> >>>>>>> 🌧️🌍🌱
>> >> >>>>>>>
>> >> >>>>>>>
>> >> >>>>>>> On Tue, 23 Aug 2022, 05:16 Peter Stahlecker, <
>> peter.st...@gmail.com> wrote:
>> >> >>>>>>>>
>> >> >>>>>>>> Dear Zohreh,
>> >> >>>>>>>>
>> >> >>>>>>>> Just for my understanding:
>> >> >>>>>>>> 1.
>> >> >>>>>>>> You params are alpha, betta ,gamma, eta (?)
>> >> >>>>>>>> 2.
>> >> >>>>>>>> What do you mean by generating them dynamically?
>> >> >>>>>>>>
>> >> >>>>>>>> Peter
>> >> >>>>>>>>
>> >> >>>>>>>> On Tue 23. Aug 2022 at 02:44 Zohreh Karimzadeh <
>> z.kari...@gmail.com> wrote:
>> >> >>>>>>>>>
>> >> >>>>>>>>> Dear Oscar
>> >> >>>>>>>>> BIG help !
>> >> >>>>>>>>> Here I seriously need to use sympy to generate my params
>> dynamically.
>> >> >>>>>>>>> All Bests
>> >> >>>>>>>>> Zohreh Karimzadeh
>> >> >>>>>>>>> https://www.researchgate.net/profile/Zohreh-Karimzadeh
>> >> >>>>>>>>> Skype Name 49a52224a8b6b38b
>> >> >>>>>>>>> Twitter Account @zohrehkarimzad1
>> >> >>>>>>>>> z.kari...@gmail.com
>> >> >>>>>>>>> +989102116325 <+98%20910%20211%206325>
>> >> >>>>>>>>> ((((((((((((((((Value Water)))))))))))))))
>> >> >>>>>>>>>
>> >> >>>>>>>>>
>> >> >>>>>>>>> On Mon, Aug 22, 2022 at 7:42 PM Oscar Benjamin <
>> oscar.j....@gmail.com> wrote:
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> On Mon, 22 Aug 2022 at 15:36, Peter Stahlecker
>> >> >>>>>>>>>> <peter.st...@gmail.com> wrote:
>> >> >>>>>>>>>> >
>> >> >>>>>>>>>> > Dear Oscar,
>> >> >>>>>>>>>> >
>> >> >>>>>>>>>> > Thanks for your hint about these parameters!.
>> >> >>>>>>>>>> > Probably dumb question of mine:
>> >> >>>>>>>>>> > Could one not define f_Vi_est directly as
>> >> >>>>>>>>>> >
>> >> >>>>>>>>>> > def_Vi_est(gamma, alfa, beta, eta, L, K, VA):
>> >> >>>>>>>>>> > Vi_est = gamma - (1 / eta)…..
>> >> >>>>>>>>>> > return np.sum(…..)
>> >> >>>>>>>>>> >
>> >> >>>>>>>>>> > without any ‚lambdification‘?
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> Yes. In an earlier post the OP showed that they had working
>> code like
>> >> >>>>>>>>>> that but wanted to know how to do it using SymPy and
>> lambdify. I
>> >> >>>>>>>>>> presume there is a reason for wanting to use SymPy there
>> (perhaps to
>> >> >>>>>>>>>> accomplish something slightly different from the exact code
>> shown).
>> >> >>>>>>>>>> It's also possible that there isn't any actual reason to
>> use SymPy for
>> >> >>>>>>>>>> this at all though.
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> --
>> >> >>>>>>>>>> Oscar
>> >> >>>>>>>>>>
>> >> >>>>>>>>>> --
>> >> >>>>>>>>>> You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> >> >>>>>>>>>> To unsubscribe from this group and stop receiving emails
>> from it, send an email to sympy+un...@googlegroups.com.
>> >> >>>>>>>>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAHVvXxQJUuZ4tVnECPyWE%3DLd03hhhUB5mqv1bjHcjSNf9WP22Q%40mail.gmail.com.
>>
>> >> >>>>>>>>>
>> >> >>>>>>>>> --
>> >> >>>>>>>>> You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> >> >>>>>>>>> To unsubscribe from this group and stop receiving emails
>> from it, send an email to sympy+un...@googlegroups.com.
>> >> >>>>>>>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CA%2B1XYLOMV_i3VJXwwVN7JWnuJ9Wo6ZPhULmC1SOubAfFLt-DBQ%40mail.gmail.com.
>>
>> >> >>>>>>>>
>> >> >>>>>>>> --
>> >> >>>>>>>> Best regards,
>> >> >>>>>>>>
>> >> >>>>>>>> Peter Stahlecker
>> >> >>>>>>>>
>> >> >>>>>>>> --
>> >> >>>>>>>> You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> >> >>>>>>>> To unsubscribe from this group and stop receiving emails from
>> it, send an email to sympy+un...@googlegroups.com.
>> >> >>>>>>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CABKqA0YTOzyZkjhnQmKQKQh-Mrc_H_TcmD9FrXObaTadkfLpkQ%40mail.gmail.com.
>>
>> >> >>>>>
>> >> >>>>> --
>> >> >>>>> You received this message because you are subscribed to the
>> Google Groups "sympy" group.
>> >> >>>>> To unsubscribe from this group and stop receiving emails from
>> it, send an email to sympy+un...@googlegroups.com.
>> >> >>>>>
>> >> >>>>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/17d62c5c-11d8-4b1b-9a44-ae67c8021832n%40googlegroups.com.
>>
>> >> >>>>>
>> >> >>>>>
>> >> >>> --
>> >> >>> You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> >> >>> To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+un...@googlegroups.com.
>> >> >>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/837a3351-3aa3-4e1e-98d6-b34f3185d5b2n%40googlegroups.com.
>>
>> >> >>
>> >> >> --
>> >> >> You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> >> >> To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+un...@googlegroups.com.
>> >> >> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CA%2B1XYLMEq2OLN0npw8RHfghS7m6vgewkrpshqw8gBBU%2BfUAnoQ%40mail.gmail.com.
>>
>> >> >
>> >> > --
>> >> > Best regards,
>> >> >
>> >> > Peter Stahlecker
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> >> > To unsubscribe from this group and stop receiving emails from it,
>> send an email to sympy+un...@googlegroups.com.
>> >> > To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CABKqA0b261cO3ixRjsp_YPU0Yk1ahRVgnEytcOkLrQUW-eHdwQ%40mail.gmail.com.
>>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an email to sympy+un...@googlegroups.com.
>> > To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/ec94798a-fcdc-4df8-b80e-2642f5a60ec5n%40googlegroups.com.
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sympy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/54b70a36-3ee5-4d14-b30a-813b8fbf31fcn%40googlegroups.com
> <https://groups.google.com/d/msgid/sympy/54b70a36-3ee5-4d14-b30a-813b8fbf31fcn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CA%2B1XYLMXkgqzD-NjUQZCbDRYC63NyMkb8sb6kwSb%3Dg42_iAZKw%40mail.gmail.com.

Reply via email to