mailnumerical cpmg fit


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Paul Schanda on July 11, 2013 - 13:48:

Hi Edward,

Here is a function that does a numerical fit of CPMG. It uses an explicit 
matrix that contains relaxation, exchange and chemical shift terms. It does 
the 180deg pulses in the CPMG train with conjugate complex matrices.
It returns calculated R2eff values, so it can be used for numerical fitting 
of CPMG.
It is an addition to the functions that I previously sent to you.
The approach of Bloch-McConnell can be found in chapter 3.1 of Palmer, A. G. 
Chem Rev 2004, 104, 3623–3640.
I wrote this function (initially in MATLAB) in 2010.
I agree that this code is released under the GPL3 or higher licence.

Paul


def func1(R2E,R2G,fg,kge,keg, cpmgfreq,tcpmg):
        kex=kge+keg
        Rcalc_array=np.zeros(len(cpmgfreq))
        Rr  = -1.*np.matrix([[R2G, 0.],[0., R2E]])
        Rex = -1.*np.matrix([[kge,-keg],[-kge, keg]])
        RCS = complex(0.,-1.)*np.matrix([[0. ,0.],[0.,fg]])
        R = Rr + Rex + RCS
        cR = np.conj(R)


        IGeq=keg/kex; IEeq=kge/kex
        M0=np.matrix([[IGeq],[IEeq]])

        for k in range(len(cpmgfreq)):
                tcp=1./(4.*cpmgfreq[k])
                prop_2 
=np.dot(np.dot(sci.expm(R*tcp),sci.expm(cR*2.*tcp)),sci.expm(R*tcp))
        prop_total =mpower(prop_2,cpmgfreq[k]*tcpmg)

        Moft = prop_total*M0

                Mgx=Moft[0].real/M0[0]
                Rcalc=-(1./tcpmg)*math.log(Mgx); 
                Rcalc_array[k]=Rcalc
        return Rcalc_array






Related Messages


Powered by MHonArc, Updated Fri Jul 12 15:20:08 2013