def DREAM(): oldCDREAM=float(TopCmds.GETPAR("PLdB 22")) RAMP=TopCmds.GETPAR("SPNAM5") #AvgAmpOld=IntShape.Integrate(RAMP)/100. index = TopCmds.INPUT_DIALOG("DREAM MAS", "DREAM changes for MAS change", \ ["Old MAS rate","New MAS rate","Old 13C power","Mixing time (p20)","Ramp Name"],\ [str(MASR),str(MAS),str(ampC5),str(LoopC5),RAMP],\ ["kHz","kHz","dB",""],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) OldMAS=float(index[0]) NewMAS=float(index[1]) olddB=float(index[2]) newmix=float(index[3]) RAMP =index[4] #AvgAmpNew=IntShape.Integrate(RAMP)/100. adjust=20*(math.log10(NewMAS/OldMAS)) newdB = olddB-adjust adjust=20*(math.log10(AvgAmpNew/AvgAmpOld)) #in case there is a Ramp change newdB = newdB-adjust TopCmds.PUTPAR("PLdB 22",str('%3.2f' %newdB)) TopCmds.PUTPAR("P 20",str('%3.2f' %newmix)) TopCmds.PUTPAR("SPNAM5",RAMP)
def hhC(CNCT, plH, plC, SP, Unit): TopCmds.PUTPAR("SP" + Unit + " 44", plH) TopCmds.PUTPAR("PL" + Unit + " 44", plH) TopCmds.PUTPAR("PL" + Unit + " 45", plC) TopCmds.PUTPAR("P 44", CNCT) TopCmds.PUTPAR("SPNAM 44", SP) return
def CH(CNCT, plH, plC, SP, Unit): TopCmds.PUTPAR("SP" + Unit + " 48", plH) TopCmds.PUTPAR("PL" + Unit + " 48", plH) TopCmds.PUTPAR("PL" + Unit + " 49", plC) TopCmds.PUTPAR("P 48", CNCT) TopCmds.PUTPAR("SPNAM 48", SP) return
def NH(CNCT, plH, plN, SP, Unit): TopCmds.PUTPAR("SP" + Unit + " 46", plH) TopCmds.PUTPAR("PL" + Unit + " 46", plH) TopCmds.PUTPAR("PL" + Unit + " 47", plC) TopCmds.PUTPAR("P 46", CNCT) TopCmds.PUTPAR("SPNAM 46", SP) return
def CalS7purge(): p90C=float(TopCmds.GETPAR("P 1")) ampC=float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000./4./p90C p90sC=float(TopCmds.GETPAR("P 7")) SPname=(TopCmds.GETPAR("SPNAM7")) if p90sC == 0: p90sC = 1500000./MAS SP=SPname if SP == "gauss" : SP = "3pi2SINC.wtf" offs = float(TopCmds.GETPAR("SPOFFS 7")) index = TopCmds.INPUT_DIALOG("ON-resonance 90 purge", "S7 soft 90", \ ["Duration","Offset","Pulse Name (3pi/2 Sinc)"],\ [str(p90sC),str(offs),SP],\ ["us","Hz",""],\ ["1","1","1"],\ ["Accept","Close"], ['a','c'], 10) p90sC=float(index[0]) offs=float(index[1]) SP=index[2] AvgAmp=IntShape.Integrate(SP)/100. adjust=20*math.log10(p90C/p90sC/AvgAmp) Power=ampC-adjust TopCmds.PUTPAR("PLdB 27",str('%3.2f' %Power)) TopCmds.PUTPAR("SPNAM7",SP) TopCmds.PUTPAR("SPOFFS 7",str('%8.2f' %offs)) TopCmds.PUTPAR("P 7",str('%3.2f' %p90sC))
def CalSPC5_3(): p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000. / 4. / p90C C5B1 = 10.0 * MAS / 3.0 adjust = 20 * (math.log10(C5B1 / MaxB1)) condition = ampC - adjust TopCmds.PUTPAR("PLdB 15", str('%3.2f' % condition)) TopCmds.PUTPAR("L 5", str(10))
def CalC72(): p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000. / 4. / p90C C7B1 = 7.0 * MAS adjust = 20 * (math.log10(C7B1 / MaxB1)) Condition = ampC - adjust TopCmds.PUTPAR("PLdB 17", str('%3.2f' % Condition)) TopCmds.PUTPAR("L 7", str(14))
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 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 SPC5_3(units): p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000. / 4. / p90C C5B1 = 10.0 * MAS / 3.0 adjust = 20 * (math.log10(C5B1 / MaxB1)) Condition = ampC - adjust if units == "W": Condition = dBtoW(Condition) TopCmds.PUTPAR("PL" + units + " 15", str('%3.2f' % Condition)) TopCmds.PUTPAR("L 5", str(10))
def C72(units): p90C = float(TopCmds.GETPAR("P 1")) ampC = float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000. / 4. / p90C C7B1 = 7.0 * MAS adjust = 20 * (math.log10(C7B1 / MaxB1)) Condition = ampC - adjust if units == "W": Condition = dBtoW(Condition) TopCmds.PUTPAR("PL" + units + " 17", str('%3.2f' % Condition)) TopCmds.PUTPAR("L 7", str(14))
def SetPar(parName, value, unit): if parName in pulDict: TopSpinName = pulDict[parName] else: TopSpinName = parName j = TopSpinName.find(" ") if TopSpinName != "Unused": #TopCmds.MSG(parName+" "+TopSpinName+" is Unused") if (TopSpinName.find("SP") >=0 and TopSpinName.find("NAM") <= 0) \ or TopSpinName.find("PL") >= 0 : TopCmds.PUTPAR(TopSpinName[:j] + unit + TopSpinName[j:], str(value)) else: TopCmds.PUTPAR(TopSpinName, str(value))
def name_no_confirm(input, Name, SP): if Name == "": Name = str("R2T_" + input[1] + "MAS_" + input[6] + "I_" + input[7] + "S.wave") if SP == "": SP = str("SPNAM18") TopCmds.PUTPAR(str(SP), str(File)) return Name, SP
def name_no_confirm(input, Name, SP): if Name == "": Name = str("DREAM_" + input[5] + "D_" + input[6] + "B_" + input[1] + "MAS.wave") if SP == "": SP = str("SPNAM5") TopCmds.PUTPAR(str(SP), str(File)) return Name, SP
def SetPar(parName, value, unit): if parName in pulDict: TopSpinName = pulDict[parName] else: TopSpinName = parName TopCmds.PUTPAR(TopSpinName, str(value))
def name(input, SP): Name = str("TAN_" + input[2] + "D_" + input[3] + "B.wave") index = str(TopCmds.INPUT_DIALOG("TAN ramp Files", "", ["File = ","edWave =",],\ [Name,SP],["",""],["1","1"],["Accept","Close"], [spc,ret], 30)) File, SP = index if SP.find("SPNAM ") >= 0: TopCmds.PUTPAR(str(SP), str(File)) return File
def HN(CNCT, plH, plX, SPH, SPX, Unit): TopCmds.PUTPAR("P 25", CNCT) TopCmds.PUTPAR("PL" + Unit + " 42", plX) TopCmds.PUTPAR("PL" + Unit + " 43", plH) TopCmds.PUTPAR("SP" + Unit + " 42", plH) TopCmds.PUTPAR("SP" + Unit + " 43", plX) TopCmds.PUTPAR("SPNAM 42", SPX) TopCmds.PUTPAR("SPNAM 43", SPH) return
def HC(CNCT, plH, plX, SPH, SPX, Unit): TopCmds.PUTPAR("P 15", CNCT) TopCmds.PUTPAR("PL" + Unit + " 40", plX) TopCmds.PUTPAR("PL" + Unit + " 41", plH) TopCmds.PUTPAR("SP" + Unit + " 40", plX) TopCmds.PUTPAR("SP" + Unit + " 41", plH) TopCmds.PUTPAR("SPNAM 40", SPX) TopCmds.PUTPAR("SPNAM 41", SPH) return
def SetPar(parName, value, unit): if pulDict.has_key(parName): # "has_key" is needed for Python 2.0 #if parName in pulDict: TopSpinName = pulDict[parName] else: TopSpinName = parName if TopSpinName != "Unused": TopCmds.PUTPAR(TopSpinName, str(value))
def C72(): oldC7=float(TopCmds.GETPAR("PLdB 17")) LoopC7=float(TopCmds.GETPAR("L 7")) index = TopCmds.INPUT_DIALOG("POST-C7 MAS", "POST-C7 changes for MAS change", \ ["Old MAS rate","New MAS rate","Old 13C power","Mixing Loop (L7)"],\ [str(MASR),str(MAS),str(ampC7),str(LoopC7)],\ ["kHz","kHz","dB",""],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) OldMAS=float(index[0]) NewMAS=float(index[1]) oldC7=float(index[2]) newL7 =float(index[3]) adjust=20*(math.log10(NewMAS/OldMAS)) newC7=oldC7-adjust TopCmds.PUTPAR("PLdB 17",str('%3.2f' %Condition)) TopCmds.PUTPAR("L 7",str(14))
def SPC5(): oldC5=float(TopCmds.GETPAR("PLdB 15")) LoopC5=float(TopCmds.GETPAR("L 5")) index = TopCmds.INPUT_DIALOG("SPC5 MAS", "SPC5_2,3 changes for MAS change", \ ["Old MAS rate","New MAS rate","Old 13C power","Mixing Loop (L5)"],\ [str(MASR),str(MAS),str(ampC5),str(LoopC5)],\ ["kHz","kHz","dB",""],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) OldMAS=float(index[0]) NewMAS=float(index[1]) oldC5=float(index[2]) newL5 =float(index[3]) adjust=20*(math.log10(NewMAS/OldMAS)) newC5=oldC5-adjust TopCmds.PUTPAR("PLdB 15",str('%3.2f' %newC5)) TopCmds.PUTPAR("L 5",str(newL5))
def name_confirm(input): Name = str("R2T_" + input[1] + "MAS_" + input[6] + "I_" + input[7] + "S.wave") SP = str("SPNAM18") Wave = str(TopCmds.INPUT_DIALOG("R2T Files", "", ["C File = ","C Wave =",],\ [Name,SP],["",""],["1","1"],["Accept","Close"], ['a','c'], 30)) Files = Wave[8:len(Wave) - 21] #get rid of Java formatting i = Files.find(",") File = Files[0:i - 1] SP = Files[i + 3:] TopCmds.PUTPAR(str(SP), str(File)) return File, SP
def SetPar(parName, value, unit) : if pulDict.has_key(parName): # "has_key" is needed for Python 2.0 #if parName in pulDict: TopSpinName = pulDict[parName] if TopSpinName.find("NAM") >= 0 or TopSpinName.find("PRG") >=0 : TopSpinName=TopSpinName.replace(" ","") else: TopSpinName=parName if TopSpinName != "Unused": TopCmds.PUTPAR(TopSpinName,str(value))
def name_confirm(Ttot, RIRO, Sc, Del, Bet): Name = "DREAM_" + Del + "D_" + Bet + "B_" + Sc + "Sc_" + Ttot + "ms_" + RIRO + "us_ri.wave" SP = "SPNAM 5" Wave = str(TopCmds.INPUT_DIALOG("DREAM Files", "", ["C File = ","C Wave =",],\ [Name,SP],["",""],["1","1"],["Accept","Close"], ['a','c'], 30)) Files = Wave[27:len(Wave) - 3] #get rid of Java formatting i = Files.find(",") File = Files[0:i - 1] SP = Files[i + 4:] TopCmds.PUTPAR(SP, File) return File, SP
def NCA(CNCT, plH, plC, plN, SP, Unit): TopCmds.PUTPAR("PL" + Unit + " 5", plN) TopCmds.PUTPAR("PL" + Unit + " 50", plC) TopCmds.PUTPAR("SP" + Unit + " 50", plC) TopCmds.PUTPAR("PL" + Unit + " 33", plH) TopCmds.PUTPAR("P 16", CNCT) TopCmds.PUTPAR("SPNAM 50", SP) return
def NCO(CNCT, plH, plC, plN, SP, Unit): TopCmds.PUTPAR("PL" + Unit + " 6", plN) TopCmds.PUTPAR("PL" + Unit + " 51", plC) TopCmds.PUTPAR("SP" + Unit + " 51", plC) TopCmds.PUTPAR("PL" + Unit + " 34", plH) TopCmds.PUTPAR("P 17", CNCT) TopCmds.PUTPAR("SPNAM 51", SP) return
def CalS9refocus(): p90C=float(TopCmds.GETPAR("P 1")) ampC=float(TopCmds.GETPAR("PLdB 1")) MaxB1 = 1000000./4./p90C p180sC=float(TopCmds.GETPAR("P 9")) SPname=(TopCmds.GETPAR("SPNAM9")) if p180sC == 0: p90sC = 1500000./MAS SP=SPname if SP == "gauss" : SP = "RSnob" offs = float(TopCmds.GETPAR("SPOFFS 9")) index = TopCmds.INPUT_DIALOG("OFF-resonance 180 Refocussing", "S9 soft 180", \ ["Duration","Offset","Pulse Name (RSnob)"],\ [str(p180sC),str(offs),SP],\ ["us","Hz",""],\ ["1","1","1"],\ ["Accept","Close"], ['a','c'], 10) p180sC=float(index[0]) offs=float(index[1]) SP=index[2] #TopCmds.MSG(str(p90sC)+' p90sC') AvgAmp=IntShape.Integrate(SP)/100. adjust=20*math.log10(2*p90C/p180sC/AvgAmp) #TopCmds.MSG(str(adjust)+'adjust') Power=ampC-adjust #TopCmds.MSG(str(Power)) TopCmds.PUTPAR("PLdB 29",str('%3.2f' %Power)) TopCmds.PUTPAR("SPNAM9",SP) TopCmds.PUTPAR("SPOFFS 9",str('%8.2f' %offs)) TopCmds.PUTPAR("P 9",str('%3.2f' %p180sC))
def name(input, SP): Name = str("TAN_" + input[2] + "D_" + input[3] + "B.wave") Wave = str(TopCmds.INPUT_DIALOG("TAN ramp Files", "", ["C File = ","C Wave =",],\ [Name,SP],["",""],["1","1"],["Accept","Close"], ['a','c'], 30)) Files = Wave[27:len(Wave) - 3] #get rid of Java formatting #TopCmds.MSG(Wave) #TopCmds.MSG(Files) i = Files.find(",") File = Files[0:i - 1] #TopCmds.MSG(File) SP = Files[i + 4:] #TopCmds.MSG(SP) if SP.find("SPNAM ") >= 0: TopCmds.PUTPAR(str(SP), str(File)) return File
def PP_PUTPAR(name, value): if pp.run_flag not in pp.run_flags: raise Exception('unknown run_flag: ' + pp.run_flag) brukername = name = name.upper() ut.putcomment('PP_PUTPAR input: %s %s' % (name, value), 2, ornament=False) m = pp.par_array_names_re.match(name) if m: ut.putcomment('detected array ' + m.group('arn') + ' ' + m.group('ind'), 3, ornament=False) an = m.group('arn') ind = m.group('ind') m1 = re.match('(PL|SP)DB', an) if m1: an = m1.group(1) + 'W' value = pow(10.0, -value / 10.) m1 = re.match('(D|IN|P|INP)', an) if m1 and (type(value) == str): m2 = pp.time_units_re.match(value) if m2: val = m2.group('val') un = m2.group('unit') value = float(val) * pp.time_units[un] if re.match('(P|INP)', an): value = value * 1e6 brukername = an + ' ' + ind pp.pp_log_fd.write('%s: %s\n' % (brukername, str(value))) ut.putcomment('PP_PUTPAR: %s %s' % (brukername, str(value)), ornament=False) if pp.run_flag == 'DRY': # print top.Cmd.putPar(brukername, str(value)) return None elif pp.run_flag in ['FORCE', 'NORMAL', 'INTERACTIVE']: return TC.PUTPAR(brukername, str(value)) return None
def setPar(parName, value) : topSpinName = keyDict[parName] TopCmds.PUTPAR(topSpinName,str(value))