def HDec(units): Stuff = [] p90H = float(TopCmds.GETPAR("P 3")) ampH = float(TopCmds.GETPAR("PLdB 2")) MaxB1H = 1000000. / 4. / p90H CPD = TopCmds.GETPAR2("CPDPRG 2") if CPD == "mlev" or CPD == "None": TopCmds.XCMD("cpdprg2") CPD = (TopCmds.GETPAR2("CPDPRG 2")) Stuff = CPDtools.CPDparse(CPD, "1H") #TopCmds.MSG(str(Stuff)) amp0 = CPDtools.Find_old_pl(Stuff[0]) decpw0 = CPDtools.Find_old_pw(Stuff[1], "1H") B1_0 = MaxB1H * (math.pow(10, (ampH - amp0) / 20.)) / 1000. if B1_0 > 1.: B1out = '% .1f' % B1_0 if B1_0 <= 1.: B1out = '75.0' index = TopCmds.INPUT_DIALOG("Mr Setup Input", "Decoupling Window", \ ["Desired 1H Decoupling Amplitude","File"],\ [B1out,CPD],["kHz",""],["1","1",],\ ["Accept","Close"], ['a','c'], 10) TopCmds.PUTPAR("CPDPRG 2", index[1]) #print(index[0], MaxB1H) adjust = 20 * (math.log10(1000. * float(index[0]) / MaxB1H)) Hamp = ampH - adjust decpwH = (MaxB1H / 1000. / float(index[0])) * (170. / 180.) * 2 * p90H if units == "W": Hamp = dBtoW(Hamp) value = TopCmds.SELECT("Adjusting the H decoupling parameters:",\ "This will set\n 1H power ("+ Stuff[0] +") to: "+ str('%.2f' %Hamp)+" "+ units+"\n \ Pulse width (" + Stuff[1] +") to: " +str('%3.2f' %decpwH) + units,["Update", "Keep Previous"]) if value != 1: if Stuff[0] == 'pl12': TopCmds.PUTPAR("PL" + units + " 12", str('%3.2f' % Hamp)) elif Stuff[0] == 'pl13': TopCmds.PUTPAR("PL" + units + " 13", str('%3.2f' % Hamp)) elif Stuff[0] == 'pl14': TopCmds.PUTPAR("PL" + units + " 14", str('%3.2f' % Hamp)) if Stuff[1] == 'pcpd': TopCmds.PUTPAR("PCPD 2", str('%3.2f' % decpwH)) elif Stuff[1] == 'p31': TopCmds.PUTPAR("P 31", str('%3.2f' % decpwH)) TopCmds.PUTPAR("P 30", str('%3.2f' % decpwH)) elif Stuff[1] == 'p62': TopCmds.PUTPAR("P 61", str('%3.2f' % decpwH)) TopCmds.PUTPAR("P 62", str('%3.2f' % decpwH))
def HC(Unit): CNCT = TopCmds.GETPAR("P 15") #plC=TopCmds.GETPAR("PL"+Unit+" 40") #plH=TopCmds.GETPAR("PL"+Unit+" 41") plC = TopCmds.GETPAR("SP" + Unit + " 40") plH = TopCmds.GETPAR("SP" + Unit + " 41") SPC = TopCmds.GETPAR2("SPNAM 40") SPH = TopCmds.GETPAR2("SPNAM 41") #TopCmds.MSG("CNCT: "+CNCT+"\n plH: "+plH+"\n plC: "+plC+"\n SPH: "+SPH+"\n SPC: "+SPC) return CNCT, plH, plC, SPH, SPC
def S6purge(): p90C=float(TopCmds.GETPAR("P 1")) ampC=float(TopCmds.GETPAR("PLdB 1")) MAS =float(TopCmds.GETPAR("CNST 31")) MaxB1 = 1000000./4./p90C p90sC=float(TopCmds.GETPAR("P 6")) SPname=(TopCmds.GETPAR2("SPNAM 6")) if p90sC == 0: p90sC = 1500000./MAS SP=SPname #Check for existence and default if SP == "gauss" or SP == "None" : #TopCmds.MSG("Please set spnam6") TopCmds.XCMD("spnam6") SP=(TopCmds.GETPAR2("SPNAM 6")) offs = float(TopCmds.GETPAR("SPOFFS 6")) ppm=CFrq.offs2ppm(offs) if ppm > 140.0 : ppm=55.0 if ppm < -10.0 : ppm=55.0 index = TopCmds.INPUT_DIALOG("CA 90 purge", "S6 soft 90", \ ["Duration","Offset","Pulse Name (3pi/2 Sinc)"],\ [str('%3.2f' %p90sC),str('%3.2f' %ppm),SP],\ ["us","ppm",""],\ ["1","1","1"],\ ["Accept","Close"], ['a','c'], 10) p90sC=float(index[0]) ppm=float(index[1]) SP=index[2] offs=CFrq.ppm2offs(ppm) AvgAmp=IntShape.Integrate(SP)/100. adjust=20*math.log10(p90C/p90sC/AvgAmp) Power=ampC-adjust PowerW=pwr.dBtoW(Power) confirm = TopCmds.SELECT("Adjusting the S6 purge pulse:",\ "This will set\n \ 13C amp (pl26) to :" + str('%3.2f' %PowerW)+ " W\n \ Pulse offset to :" + str('%8.0f' %offs) + " Hz\n \ Equivalent to :" + str('%3.1f' %ppm ) + " ppm\n \ p6 to :" + str('%6.1f' %p90sC)+ " us\n "\ ,["Update", "Keep Previous"]) if confirm != 1: TopCmds.PUTPAR("PLdB 26",str('%3.2f' %Power)) TopCmds.PUTPAR("SPNAM 6",SP) TopCmds.PUTPAR("SPOFFS 6",str('%8.2f' %offs)) TopCmds.PUTPAR("P 6",str('%3.2f' %p90sC))
def HN(Unit): CNCT = TopCmds.GETPAR("P 25") #plN=TopCmds.GETPAR("PL"+Unit+" 42") #plH=TopCmds.GETPAR("PL"+Unit+" 43") plH = TopCmds.GETPAR("SP" + Unit + " 42") plN = TopCmds.GETPAR("SP" + Unit + " 43") #TopCmds.MSG(TopCmds.GETPAR2("SPNAM 42")) SPN = TopCmds.GETPAR2("SPNAM 42") #TopCmds.MSG(TopCmds.GETPAR2("SPNAM 43")) SPH = TopCmds.GETPAR2("SPNAM 43") #TopCmds.MSG("CNCT: "+CNCT+"\n plH: "+plH+"\n plN: "+plN+"\n SPH: "+SPH+"\n SPN: "+SPN) return CNCT, plH, plN, SPH, SPN
def HDec(Unit): CPD = "None" CPD = TopCmds.GETPAR2("CPDPRG 2") if CPD == "" or CPD == "None": PWname = "PCPD 2" PLname = "PL" + Unit + " 12" PW = "5.0" if Unit == "dB": PL = "1000." if Unit == "W": PL = "0.0" else: PLname, PWname = CPDtools.CPDparse(CPD, "1H") PLname = Format(PLname, Unit) PWname = Format(PWname, "") if PWname == "PCPD": PWname = "PCPD 2" PW = TopCmds.GETPAR(PWname) PL = TopCmds.GETPAR(PLname) #TopCmds.MSG(PWname+" "+PLname+" "+str(PW)+" "+str(PL)) return CPD, PWname, PW, PLname, PL
def NCO(Unit): CNCT = TopCmds.GETPAR("P 17") plH = TopCmds.GETPAR("PL" + Unit + " 34") plN = TopCmds.GETPAR("PL" + Unit + " 6") plC = TopCmds.GETPAR("SP" + Unit + " 51") SP = TopCmds.GETPAR2("SPNAM 51") return CNCT, plH, plC, plN, SP
def NCA(Unit): CNCT = TopCmds.GETPAR("P 16") plH = TopCmds.GETPAR("PL" + Unit + " 33") plC = TopCmds.GETPAR("SP" + Unit + " 50") plN = TopCmds.GETPAR("PL" + Unit + " 5") SP = TopCmds.GETPAR2("SPNAM 50") #TopCmds.MSG("CNCT: "+CNCT+"\n plH: "+plH+"\n plN: "+plN+"\n plC: "+plC+"\n SP: "+SP) return CNCT, plH, plC, plN, SP
def CH(Unit): CNCT = TopCmds.GETPAR("P 48") plH = TopCmds.GETPAR("SP" + Unit + " 48") plC = TopCmds.GETPAR("PL" + Unit + " 49") SP = "None" SP = TopCmds.GETPAR2("SPNAM 48") if SP == "" or SP == "None": SP = "None" return CNCT, plH, plC, SP
def hhC(Unit): CNCT = TopCmds.GETPAR("P 44") plH = TopCmds.GETPAR("PL" + Unit + " 44") plC = TopCmds.GETPAR("PL" + Unit + " 45") SP = "None" SP = TopCmds.GETPAR2("SPNAM 44") if SP == "" or SP == "None": SP = "None" return CNCT, plH, plC, SP
def NH(Unit): CNCT = TopCmds.GETPAR("P 46") plH = TopCmds.GETPAR("SP" + Unit + " 46") plN = TopCmds.GETPAR("PL" + Unit + " 47") SP = "None" SP = TopCmds.GETPAR2("SPNAM 46") if SP == "" or SP == "None": SP = "None" return CNCT, plH, plN, SP
def GetPar(parName, unit): Thing = "" Thing = 1. if parName in pulDict: TopSpinName = pulDict[parName] else: TopSpinName = parName j = TopSpinName.find(" ") if TopSpinName.find("NAM") >= 0 or TopSpinName.find("PRG") >= 0: Thing = TopCmds.GETPAR2(TopSpinName) elif (TopSpinName.find("SP") >=0 and TopSpinName.find("NAM") <= 0) \ or TopSpinName.find("PL") >= 0 : #TopCmds.MSG("TopSpinName= "+TopSpinName+"\nUnit= "+unit) Thing = float(TopCmds.GETPAR(TopSpinName[:j] + unit + TopSpinName[j:])) elif TopSpinName.find("Unused") >= 0: Thing = "Unused" else: Thing = float(TopCmds.GETPAR(TopSpinName)) return Thing
def NCO(units): p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) p90N = float(TopCmds.GETPAR("P 21")) ampN = float(TopCmds.GETPAR("PLdB 3")) MAS = float(TopCmds.GETPAR("CNST 31")) SP = TopCmds.GETPAR2("SPNAM 51") CNCT = float(TopCmds.GETPAR("P 17")) if CNCT <= 1.: CNCT = 3500. if SP == "gauss" or SP == "None" or SP == "": #TopCmds.MSG("Please set spnam2") TopCmds.XCMD("spnam51") SP = (TopCmds.GETPAR2("SPNAM 51")) SP.join() MaxB1N = 1000000. / 4. / p90N MaxB1C = 1000000. / 4. / p90C #find the channel with the lowest B1 NCond = (5. / 2.) * MAS CCond = (7. / 2.) * MAS while NCond > MaxB1N: NCond = NCond - MAS CCond = NCond + MAS while CCond > MaxB1C: NCond = NCond - MAS CCond = NCond + MAS if NCond < MAS: NCond = 0.25 * MAS CCond = 0.75 * MAS index = TopCmds.INPUT_DIALOG("NCO CP Input", "N-CO SPECIFIC 7/2*C; 5/2*N", \ ["Carbon B1 field","Nitrogen B1 field","Contact Time(P15)","Ramp Name"],\ [str(CCond),str(NCond),str(CNCT),SP],\ ["kHz","kHz","us",""],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) adjust = 20 * (math.log10(float(index[0]) / MaxB1C)) Camp = ampC - adjust adjust = 20 * (math.log10(float(index[1]) / MaxB1N)) Namp = ampN - adjust #Insert ramp calibration here AvgAmp = IntShape.Integrate(SP) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Camp = Camp - adjust CNCT = float(index[2]) if units == "W": Namp = dBtoW(Namp) Camp = dBtoW(Camp) value = TopCmds.SELECT("Adjusting the NC CP parameters:",\ "This will set\n 13C power to: " + str('%3.2f' %Camp)+" "+ units+"\n \ 15N power to: " +str('%3.2f' %Namp) + units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("PL" + units + " 6", str('%3.2f' % Namp)) TopCmds.PUTPAR("PL" + units + " 51", str('%3.2f' % Camp)) TopCmds.PUTPAR("SP" + units + " 51", str('%3.2f' % Camp)) TopCmds.PUTPAR("P 17", str('%3.2f' % CNCT)) TopCmds.PUTPAR("SPNAM 51", SP)
def HN(units): p90H = float(TopCmds.GETPAR("P 3")) ampH = float(TopCmds.GETPAR("PLdB 2")) p90N = float(TopCmds.GETPAR("P 21")) ampN = float(TopCmds.GETPAR("PLdB 3")) MAS = float(TopCmds.GETPAR("CNST 31")) CNCT = float(TopCmds.GETPAR("P 25")) SPH = TopCmds.GETPAR2("SPNAM 42") SPX = TopCmds.GETPAR2("SPNAM 43") if CNCT <= 1.: CNCT = 1000. if SPH == "gauss" or SPH == "None" or SPH == "": #TopCmds.MSG("Please set spnam1") TopCmds.PUTPAR("SPNAM 42", "ramp.100") TopCmds.XCMD("spnam42") SPH = (TopCmds.GETPAR2("SPNAM 42")) SPH.join() if SPX == "gauss" or SPX == "None" or SPX == "": #TopCmds.MSG("Please set spnam11") TopCmds.PUTPAR("SPNAM 43", "square.100") TopCmds.XCMD("spnam43") SPX = (TopCmds.GETPAR2("SPNAM 43")) SPX.join() MaxB1H = 1000000. / 4. / p90H MaxB1N = 1000000. / 4. / p90N #find the channel with the lowest B1 if MaxB1N < MaxB1H: Ratio = int(math.floor(MaxB1N / MAS)) NCond = (Ratio - 0.5) * MAS HCond = (Ratio + 0.5) * MAS if HCond > MaxB1H: Ratio = Ratio - 1 NCond = (Ratio - 0.5) * MAS HCond = (Ratio + 0.5) * MAS # If spinning very fast or using weak B1s if Ratio <= 1: NCond = .25 * MAS HCond = .75 * MAS if MaxB1N >= MaxB1H: Ratio = int(math.floor(MaxB1H / MAS)) HCond = (Ratio - 0.5) * MAS NCond = (Ratio + 0.5) * MAS if NCond > MaxB1N: Ratio = Ratio - 1 HCond = (Ratio - 0.5) * MAS NCond = (Ratio + 0.5) * MAS # If spinning very fast or using weak B1s if Ratio <= 1: NCond = .25 * MAS HCond = .75 * MAS adjust = 20 * (math.log10(NCond / MaxB1N)) Namp = ampN - adjust adjust = 20 * (math.log10(HCond / MaxB1H)) Hamp = ampH - adjust index = TopCmds.INPUT_DIALOG("HN CP Input", "Proton Nitrogen Cross Polarization", \ ["Proton B1 Field","H Ramp","Nitrogen B1 Field","N Ramp","Contact Time(P25)"],\ [str(HCond),SPH,str(NCond),SPX,str(CNCT)],\ ["kHz","","kHz","","us"],\ ["1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) adjust = 20 * (math.log10(float(index[0]) / MaxB1H)) Hamp1 = ampH - adjust AvgAmp = IntShape.Integrate(index[1]) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Hamp = Hamp1 - adjust adjust = 20 * (math.log10(float(index[2]) / MaxB1N)) Namp = ampN - adjust #Ramp integration adjustment AvgAmp = IntShape.Integrate(index[3]) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Namp = Namp - adjust CNCT = float(index[4]) #TopCmds.MSG("Adjusting the HC CP parameters:\n Your Proton Amplitude is set to " + str('%3.2f' %Hamp)+ "dB\n Your Nitrogen Ammplitude is set to " +str('%3.2f' %Namp)) if units == "W": Hamp = dBtoW(Hamp) Namp = dBtoW(Namp) value = TopCmds.SELECT("Adjusting the HN CP parameters:",\ "This will set\n 1H power to: " + str('%3.2f' %Hamp)+" "+ units+"\n \ 15N power to: " +str('%3.2f' %Namp) + units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("SP" + units + " 42", str('%3.2f' % Hamp)) TopCmds.PUTPAR("SP" + units + " 43", str('%3.2f' % Namp)) TopCmds.PUTPAR("PL" + units + " 42", str('%3.2f' % Hamp)) TopCmds.PUTPAR("PL" + units + " 43", str('%3.2f' % Namp)) TopCmds.PUTPAR("P 25", str('%.2f' % CNCT)) TopCmds.PUTPAR("SPNAM 42", index[1]) TopCmds.PUTPAR("SPNAM 43", index[3])
def HC(units): p90H = float(TopCmds.GETPAR("P 3")) ampH = float(TopCmds.GETPAR("PLdB 2")) p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MAS = float(TopCmds.GETPAR("CNST 31")) CNCT = float(TopCmds.GETPAR("P 15")) SPH = TopCmds.GETPAR2("SPNAM 40") SPX = TopCmds.GETPAR2("SPNAM 41") if CNCT <= 1.: CNCT = 1000. if SPH == "gauss" or SPH == "None" or SPH == "": #TopCmds.MSG("Please set spnam40") TopCmds.PUTPAR("SPNAM 40", "ramp.100") TopCmds.XCMD("spnam40") SPH = (TopCmds.GETPAR2("SPNAM 40")) SPH.join() if SPX == "gauss" or SPX == "None" or SPX == "": #TopCmds.MSG("Please set spnam10") TopCmds.PUTPAR("SPNAM 41", "square.100") TopCmds.XCMD("spnam41") SPX = (TopCmds.GETPAR2("SPNAM 41")) SPX.join() MaxB1H = 1000000. / 4. / p90H MaxB1C = 1000000. / 4. / p90C #find the channel with the lowest B1 if MaxB1C < MaxB1H: Ratio = int(math.floor(MaxB1C / MAS)) #TopCmds.MSG(str(Ratio)) CCond = (Ratio - 0.5) * MAS HCond = (Ratio + 0.5) * MAS if HCond > MaxB1H: Ratio = Ratio - 1 CCond = (Ratio - 0.5) * MAS HCond = (Ratio + 0.5) * MAS # If spinning very fast or using weak B1s if Ratio <= 1: CCond = .25 * MAS HCond = .75 * MAS if MaxB1C >= MaxB1H: Ratio = int(math.floor(MaxB1H / MAS)) HCond = (Ratio - 0.5) * MAS CCond = (Ratio + 0.5) * MAS if CCond > MaxB1C: Ratio = Ratio - 1 HCond = (Ratio - 0.5) * MAS CCond = (Ratio + 0.5) * MAS # If spinning very fast or using weak B1s if Ratio <= 1: CCond = .75 * MAS HCond = .25 * MAS adjust = 20 * (math.log10(CCond / MaxB1C)) Camp = ampC - adjust adjust = 20 * (math.log10(HCond / MaxB1H)) Hamp = ampH - adjust index = TopCmds.INPUT_DIALOG("HC CP Input", "Proton Carbon Cross Polarization", \ ["Proton B1 Field","H Ramp","Carbon B1 Field","C Ramp","Contact Time(P15)"],\ [str(HCond),SPH,str(CCond),SPX,str(CNCT)],\ ["kHz","","kHz","","us"],\ ["1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) adjust = 20 * (math.log10(float(index[0]) / MaxB1H)) Hamp1 = ampH - adjust AvgAmp = IntShape.Integrate(index[1]) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Hamp = Hamp1 - adjust adjust = 20 * (math.log10(float(index[2]) / MaxB1C)) Camp1 = ampC - adjust #Ramp integration adjustment AvgAmp = IntShape.Integrate(index[3]) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Camp = Camp1 - adjust CNCT = float(index[4]) if units == "W": Hamp = dBtoW(Hamp) Camp = dBtoW(Camp) value = TopCmds.SELECT("Adjusting the HC CP parameters:",\ "This will set\n 1H power to: " + str('%3.2f' %Hamp)+" "+ units+"\n \ 13C power to: " +str('%3.2f' %Camp) + units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("SP" + units + " 40", str('%3.2f' % Hamp)) TopCmds.PUTPAR("SP" + units + " 41", str('%3.2f' % Camp)) TopCmds.PUTPAR("PL" + units + " 40", str('%3.2f' % Hamp)) TopCmds.PUTPAR("PL" + units + " 41", str('%3.2f' % Camp)) TopCmds.PUTPAR("P 15", str('%3.2f' % CNCT)) TopCmds.PUTPAR("SPNAM 40", index[1]) TopCmds.PUTPAR("SPNAM 41", index[3])
aCnca ="PL 6"; aCnco ="PL 6" aNnca ="PL 7"; aNnco ="PL 7" aHmissi="PL 9" aHhc ="PL 10"; aHhn ="PL 11" aChc ="PL 20"; aNhn ="PL 19" aHdec ="PL 12"; aHdec2="PL 13"; aHdec3="PL 14" aCc5 ="PL 15" aCc7 ="PL 17" aCc7 ="PL 17" aNhn ="PL 19"; aChc ="PL 20" aCAe ="PL 26"; aCOe ="PL 27" aCAr ="PL 28"; aCOr ="PL 29" #Decoupling prgHDec=TopCmds.GETPAR2("CPDPRG 2") if prgHDec != "None" and prgHDec != "" : aHdec, pHdec = CPDtools.CPDparse(prgHDec,"1H") prgNDec=TopCmds.GETPAR2("CPDPRG 3") if prgNDec != "None" and prgNDec != "" : aNdec, pNdec = CPDtools.CPDparse(prgHDec,"15N") #Loops lRFDR ="L 3" lREDOR="L 4" lC5 ="L 5" lC7 ="L 7" lTOBSY="L 9" #Delays
def NCO(MAS0,MAS,units): p90X=float(TopCmds.GETPAR("P 1")) ampX=float(TopCmds.GETPAR("PL"+units+" 1")) ampXdB=float(TopCmds.GETPAR("PLdB 1")) ampXCP0=float(TopCmds.GETPAR("SP"+units+" 51")) ampXCP0dB=float(TopCmds.GETPAR("SPdB 51")) #ampXCP0=float(TopCmds.GETPAR("PL"+units+" 50")) #ampXCP0dB=float(TopCmds.GETPAR("PLdB 50")) SPX=TopCmds.GETPAR2("SPNAM 51") p90Y=float(TopCmds.GETPAR("P 21")) ampY=float(TopCmds.GETPAR("PL"+units+" 3")) ampYdB=float(TopCmds.GETPAR("PLdB 3")) ampYCP0=float(TopCmds.GETPAR("PL"+units+" 6")) ampYCP0dB=float(TopCmds.GETPAR("PLdB 6")) SPY="None" avgY0=1. # Get the integration before possibly changing the shape. if SPX != "None" and SPX != None: avgX0=IntShape.Integrate(SPX)/100. if SPX == "None" or SPX == None: avgX0=1. CNCT=float(TopCmds.GETPAR("P 17")) #Interact with user about MAS and power levels, likely not needed params = TopCmds.INPUT_DIALOG("NCO CP MAS adjustment", "Nitrogen Carbonyl Cross Polarization", \ ["Old MAS rate","New MAS rate","Old 13C power","Old 15N power","Contact Time(P16)","C-Ramp"],\ [str(MAS0),str(MAS),str(ampXCP0),str(ampYCP0),str(CNCT),SPX],\ ["kHz","kHz",units,units,"us",""],\ ["1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) if params == None: TopCmds.EXIT() params.append(SPY) # Everything is written with dB, so we might have to convert if units == "W": params[2]=str(Setup.WtodB(float(params[2]))) params[3]=str(Setup.WtodB(float(params[3]))) if SPX != "None" and SPX != None: avgX0=IntShape.Integrate(SPX)/100. if SPX == "None" or SPX == None: avgX0=1. pulses=p90X,ampXdB,p90Y,ampYdB,avgX0,avgY0 SelectorText="Adjust the NCA CP parameters:","Calculate New Power Level for:",\ ["Carbon","Nitrogen","Both"] ampXCPdB, ampYCPdB = FindMatch(params,pulses,SelectorText) if units == "W": ampXCP=Setup.dBtoW(ampXCPdB) ampYCP=Setup.dBtoW(ampYCPdB) value = TopCmds.SELECT("Adjusting the NCO CP parameters:",\ "This will set\n 13C power to: " + str('%3.2f' %ampXCP)+ " "+units+"\n \ 15N power to: " +str('%3.2f' %ampYCP) + " "+units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("PLdB 51",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("SPdB 51",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("PLdB 6",str('%3.2f' %ampYCPdB)) TopCmds.PUTPAR("P 17" ,str('%3.2f' %CNCT)) TopCmds.PUTPAR("SPNAM 51",SPX)
def HN(MAS0,MAS,units): p90H=float(TopCmds.GETPAR("P 3")) ampH=float(TopCmds.GETPAR("PL"+units+" 2")) ampHdB=float(TopCmds.GETPAR("PLdB 2")) ampHCP0=float(TopCmds.GETPAR("SP"+units+" 42")) ampHCP0dB=float(TopCmds.GETPAR("SPdB 42")) #ampHCP0=float(TopCmds.GETPAR("PL"+units+" 42")) #ampHCP0dB=float(TopCmds.GETPAR("PLdB 42")) SPH=TopCmds.GETPAR2("SPNAM 42") p90X=float(TopCmds.GETPAR("P 21")) ampX=float(TopCmds.GETPAR("PL"+units+" 3")) ampXdB=float(TopCmds.GETPAR("PLdB 3")) ampXCP0=float(TopCmds.GETPAR("SP"+units+" 43")) ampXCP0dB=float(TopCmds.GETPAR("SPdB 43")) #ampXCP0=float(TopCmds.GETPAR("PL"+units+" 43")) #ampXCP0dB=float(TopCmds.GETPAR("PLdB 43")) SPX=TopCmds.GETPAR2("SPNAM 43") CNCT=float(TopCmds.GETPAR("P 25")) #Interact with user about MAS and power levels, likely not needed params = TopCmds.INPUT_DIALOG("HN CP MAS adjustment", "Proton Nitrogen Cross Polarization", \ ["Old MAS rate","New MAS rate","Old 15N power","Old 1H power","Contact Time(P15)","H-Ramp","N-Ramp"],\ [str(MAS0),str(MAS),str(ampXCP0),str(ampHCP0),str(CNCT),SPH,SPX],\ ["kHz","kHz",units,units,"us","",""],\ ["1","1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) if params == None: TopCmds.EXIT() # Everything is written with dB, so we might have to convert if units == "W": params[2]=str(Setup.WtodB(float(params[2]))) params[3]=str(Setup.WtodB(float(params[3]))) if SPH != "None" and SPH != None: avgH0=1. avgH0=IntShape.Integrate(SPH)/100. if SPX != "None" and SPX != None: avgX0=1. avgX0=IntShape.Integrate(SPX)/100. pulses=p90H,ampHdB,p90X,ampXdB,avgH0,avgX0 SelectorText="Adjust the HN CP parameters:","Calculate New Match for:",\ ["Proton","Nitrogen","Maximum for Both"] ampHCPdB, ampXCPdB = FindMatch(params,pulses,SelectorText) if units == "W": ampXCP=Setup.dBtoW(ampXCPdB) ampHCP=Setup.dBtoW(ampHCPdB) value = TopCmds.SELECT("Adjusting the HN CP parameters:",\ "This will set\n 1H power to: " + str('%3.2f' %ampHCP)+ " "+units+"\n \ 15N power to: " +str('%3.2f' %ampXCP) + " "+units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("PLdB 42",str('%3.2f' %ampHCPdB)) TopCmds.PUTPAR("SPdB 42",str('%3.2f' %ampHCPdB)) TopCmds.PUTPAR("PLdB 43",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("SPdB 43",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("P 25" ,str('%3.2f' %CNCT)) TopCmds.PUTPAR("SPNAM 42",SPH) TopCmds.PUTPAR("SPNAM 43",SPX)
def HC(MAS0,MAS,units): p90H=float(TopCmds.GETPAR("P 3")) ampH=float(TopCmds.GETPAR("PL"+units+" 2")) ampHdB=float(TopCmds.GETPAR("PLdB 2")) ampHCP0=float(TopCmds.GETPAR("SP"+units+" 40")) ampHCP0dB=float(TopCmds.GETPAR("SPdB 40")) #ampHCP0=float(TopCmds.GETPAR("PL"+units+" 10")) #ampHCP0dB=float(TopCmds.GETPAR("PLdB 10")) SPH=TopCmds.GETPAR2("SPNAM 40") p90X=float(TopCmds.GETPAR("P 1")) ampX=float(TopCmds.GETPAR("PL"+units+" 1")) ampXdB=float(TopCmds.GETPAR("PLdB 1")) ampXCP0=float(TopCmds.GETPAR("SP"+units+" 41")) ampXCP0dB=float(TopCmds.GETPAR("SPdB 41")) #ampXCP0=float(TopCmds.GETPAR("PL"+units+" 20")) #ampXCP0dB=float(TopCmds.GETPAR("PLdB 20")) SPX=TopCmds.GETPAR2("SPNAM 41") CNCT=float(TopCmds.GETPAR("P 15")) params = TopCmds.INPUT_DIALOG("HC CP MAS adjustment", "Proton Carbon Cross Polarization", \ ["Old MAS rate","New MAS rate","Old 13C power","Old 1H power","Contact Time(P15)","H-Ramp","C-Ramp"],\ [str(MAS0),str(MAS),str(ampXCP0),str(ampHCP0),str(CNCT),SPH,SPX],\ ["Hz","Hz",units,units,"us","",""],\ ["1","1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) if units == "W": params[2]=str(Setup.WtodB(float(params[2]))) params[3]=str(Setup.WtodB(float(params[3]))) if SPH != "None" and SPH != None: avgH0=IntShape.Integrate(SPH)/100. if SPX != "None" and SPX != None: avgX0=IntShape.Integrate(SPX)/100. pulses=p90H,ampHdB,p90X,ampXdB,avgH0,avgX0 SelectorText="Adjust the HC CP parameters:","Calculate New Match for:",\ ["Proton","Carbon","Maximum for Both"] ampHCPdB, ampXCPdB = FindMatch(params,pulses,SelectorText) if units == "W": ampXCP=Setup.dBtoW(ampXCPdB) ampHCP=Setup.dBtoW(ampHCPdB) value = TopCmds.SELECT("Adjusting the HC CP parameters:",\ "This will set\n 1H power to: " + str('%3.2f' %ampHCP)+ " "+units+"\n \ 13C power to: " +str('%3.2f' %ampXCP) + " "+units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("PLdB 40",str('%3.2f' %ampHCPdB)) TopCmds.PUTPAR("SPdB 40",str('%3.2f' %ampHCPdB)) TopCmds.PUTPAR("PLdB 41",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("SPdB 41",str('%3.2f' %ampXCPdB)) TopCmds.PUTPAR("P 15" ,params[4]) TopCmds.PUTPAR("SPNAM 40",params[5]) TopCmds.PUTPAR("SPNAM 41",params[6])
def CalNCO(): p90C=float(TopCmds.GETPAR("P 1")) ampC=float(TopCmds.GETPAR("PLdB 1")) p90N=float(TopCmds.GETPAR("P 21")) ampN=float(TopCmds.GETPAR("PLdB 21")) MAS =float(TopCmds.GETPAR("CNST 31")) SP=TopCmds.GETPAR("SPNAM 3") CNCT=float(TopCmds.GETPAR("P 16")) if CNCT <= 1.: CNCT = 3500. if SP == "gauss" or SP == "None" : #TopCmds.MSG("Please set spnam3") TopCmds.XCMD("spnam3") SP=(TopCmds.GETPAR2("SPNAM 3")) MaxB1N = 1000000./4./p90N MaxB1C = 1000000./4./p90C Coffs=Cfrq.ppm2offs(170.0) NCond=(5./2.)*MAS CCond=(7./2.)*MAS while NCond > MaxB1N : NCond=NCond - MAS CCond=NCond + MAS while CCond > MaxB1C : NCond=NCond - MAS CCond=NCond + MAS if NCond < MAS : NCond= 0.25*MAS CCond= 0.75*MAS index = TopCmds.INPUT_DIALOG("NCO off-resonance CP Input",\ "N-CO SPECIFIC-CP w1C=7/2*wr; w1N=5/2*wr", \ ["Carbon B1 field","Carbon offset (170ppm)","Nitrogen B1 field","Contact Time(P16)","Ramp Name"],\ [str(CCond),str(Coffs),str(NCond),str(CNCT),SP],\ ["Hz","Hz","Hz","us",""],\ ["1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) NCond=(float(index[2]))*MAS CCond=math.sqrt( (float(index[0]))**2 - (float(index[1]))**2)) adjust=20*(math.log10(CCond/MaxB1C)) Camp = ampC-adjust adjust=20*(math.log10(NCond/MaxB1N)) Namp = ampN-adjust #Insert ramp calibration here AvgAmp=IntShape.Integrate(SP)/100. adjust=20*(math.log10(1./AvgAmp)) Camp = Camp-adjust CNCT = float(index[3]) CampW=pwr.dBtoW(Camp) NampW=pwr.dBtoW(Namp) value = TopCmds.SELECT("Adjusting the NC CP parameters:",\ "This will set\n 13C power to: " + str('%3.2f' %CampW)+ " W\n \ 15N power to: " +str('%3.2f' %NampW) + " W",["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("PLdB 17",str('%3.2f' %Namp)) TopCmds.PUTPAR("PLdB 16",str('%3.2f' %Camp)) TopCmds.PUTPAR("P 16",str('%3.2f' %CNCT)) TopCmds.PUTPAR("SPNAM 3",SP)
def DDec(units): Stuff = [] p90 = float(TopCmds.GETPAR("P 32")) amp = float(TopCmds.GETPAR("PLdB 31")) MaxB1 = 1000000. / 4. / p90 CPD = TopCmds.GETPAR2("CPDPRG 5") if CPD == "mlev" or CPD == "None": TopCmds.XCMD("cpdprg5") CPD = (TopCmds.GETPAR2("CPDPRG 5")) Stuff = CPDtools.CPDparse(CPD, "2D") TopCmds.MSG(str(Stuff)) amp0 = CPDtools.Find_old_pl(Stuff[0]) decpw0 = CPDtools.Find_old_pw(Stuff[1], "2D") B1_0 = MaxB1 * (math.pow(10, (amp - amp0) / 20.)) / 1000. if B1_0 > 1.: B1out = '% .1f' % B1_0 if B1_0 <= 1.: B1out = '5.0' index = TopCmds.INPUT_DIALOG("Mr Setup Input", "Decoupling Window", \ ["Desired 2H Decoupling Amplitude","File"],\ [B1out,CPD],["kHz",""],["1","1",],\ ["Accept","Close"], ['a','c'], 10) TopCmds.PUTPAR("CPDPRG 5", index[1]) adjust = 20 * (math.log10(1000. * float(index[0]) / MaxB1)) ampli = amp - adjust decpw = (MaxB1 / 1000. / float(index[0])) * 2 * p90 if units == "W": ampli = dBtoW(ampli) value = TopCmds.SELECT("Adjusting the D decoupling parameters:",\ "This will set\n 2H power ("+ Stuff[0] +") to: "+ str('%3.2f' %ampli)+" "+ units+"\n \ Pulse width (" + Stuff[1] +"= 180deg) to: " +str('%3.2f' %decpw) + " us",["Update", "Keep Previous"]) if value != 1: if Stuff[0] == '': TopCmds.PUTPAR("PL" + units + " 25", str('%3.2f' % ampli)) elif Stuff[0] == 'pl25': TopCmds.PUTPAR("PL" + units + " 25", str('%3.2f' % ampli)) elif Stuff[0] == 'pl12': TopCmds.MSG( "You are using pl12 for 2H decouling. It is usually reserved for 1H \n Please verify" ) #TopCmds.PUTPAR("PLdB 12",str('%3.2f' %ampli)) elif Stuff[0] == 'pl13': TopCmds.MSG( "You are using pl13 for 2H decouling. It is usually reserved for 1H \n Please verify" ) #TopCmds.PUTPAR("PLdB 13",str('%3.2f' %ampli)) elif Stuff[0] == 'pl14': TopCmds.MSG( "You are using pl14 for 2H decouling. It is usually reserved for 1H \n Please verify" ) #TopCmds.PUTPAR("PLdB 14",str('%3.2f' %ampli)) if Stuff[1] == 'pcpd': TopCmds.PUTPAR("PCPD 5", str('%3.2f' % decpw)) elif Stuff[1] == 'p31': TopCmds.PUTPAR("P 31", str('%3.2f' % decpw)) TopCmds.PUTPAR("P 30", str('%3.2f' % decpw)) elif Stuff[1] == 'p62': TopCmds.PUTPAR("P 61", str('%3.2f' % decpw)) TopCmds.PUTPAR("P 62", str('%3.2f' % decpw))
def HC(units): #44,45 p90H = float(TopCmds.GETPAR("P 3")) ampH = float(TopCmds.GETPAR("PLdB 2")) p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MAS = float(TopCmds.GETPAR("CNST 31")) SPH = TopCmds.GETPAR2("SPNAM 44") SPH0 = TopCmds.GETPAR2("SPNAM 40") CNCT = float(TopCmds.GETPAR("P 44")) CNCT0 = float(TopCmds.GETPAR("P 15")) MaxB1H = 1000000. / 4. / p90H MaxB1C = 1000000. / 4. / p90C if CNCT <= 1.00: CNCT = CNCT0 if SPH == "gauss" or SPH == "None" or SPH == "": SPH = SPH0 TopCmds.PUTPAR("SPNAM 44", SPH) TopCmds.XCMD("spnam44") SPH = (TopCmds.GETPAR2("SPNAM 44")) SPH.join() Hav = IntShape.Integrate(SPH) Hav0 = IntShape.Integrate(SPH0) Hint = 0.01 * ((Hav)**2) / Hav0 #TopCmds.MSG("Hint "+str(Hint)) Hamp0 = float(TopCmds.GETPAR("SPdB 40")) Camp0 = float(TopCmds.GETPAR("SPdB 41")) B1H = MaxB1H * Hint * math.pow(10, (ampH - Hamp0) / 20.) B1C = MaxB1C * math.pow(10, (ampC - Camp0) / 20.) index = TopCmds.INPUT_DIALOG("H-C CP", "Contact and Ramp", \ ["Proton B1 Field","H Ramp","Carbon B1 Field","Contact Time(P44)"],\ [str('%3.0f' %B1H),SPH,str('%3.0f' %B1C),str(CNCT)],\ ["kHz","","kHz","us"],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) SP = index[1] CNCT = float(index[3]) adjust = 20 * (math.log10(float(index[0]) / MaxB1H)) Hamp1 = ampH - adjust AvgAmp = IntShape.Integrate(index[1]) / 100. adjust = 20 * (math.log10(1. / AvgAmp)) Hamp = Hamp1 - adjust adjust = 20 * (math.log10(float(index[2]) / MaxB1C)) Camp = ampC - adjust if units == "W": Hamp = Setup.dBtoW(Hamp) Camp = Setup.dBtoW(Camp) value = TopCmds.SELECT("Adjusting the CH CP parameters:",\ "This will set\n 1H power to: " + str('%3.2f' %Hamp)+" "+units+"\n \ 13C power to: " +str('%3.2f' %Camp) + units,["Update", "Keep Previous"]) if value != 1: TopCmds.PUTPAR("SP" + units + " 44", str('%3.2f' % Hamp)) TopCmds.PUTPAR("SP" + units + " 45", str('%3.2f' % Camp)) TopCmds.PUTPAR("PL" + units + " 44", str('%3.2f' % Hamp)) TopCmds.PUTPAR("PL" + units + " 45", str('%3.2f' % Camp)) TopCmds.PUTPAR("P 44", str('%3.2f' % CNCT)) TopCmds.PUTPAR("SPNAM 44", SP)