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 Find_PWdec(Text): while i < len(Text): about = '' if Text[i].find("pcpd") >= 0: type = "PCPD" elif Text[i].find("p31") >= 0: type = "P 31" elif Text[i].find("p63") >= 0: type = "P 63" elif Text[i].find("p62") >= 0: type = "P 62" else: TopCmds.MSG("File for Decoupling not found; Exiting") TopCmds.EXIT()
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 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 dialog(): MAS = TopCmds.GETPAR("CNST 31") #MSG(MAS) input = TopCmds.INPUT_DIALOG("EXPORTinput", "", \ ["13C field ","15N field ","MAS ", "steps in Export Element", "C(Ix+Sx)=CFx", "B Iy", "B Sy", "Initial Phase"],\ ["50","50",str(MAS),"100", "7.0", "0.375", "0.625", "90"],\ ["kHz","kHz","Hz","","","","",""],\ ["1","1", "1", "1", "1", "1", "1", "1"],\ ["Accept","Close"], ['a','c'], 10) return input
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 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 dialog(): MAS = float(TopCmds.GETPAR("CNST 31")) TauR = float(1000000 / MAS) input = TopCmds.INPUT_DIALOG("R2T input", "", \ ["Nominal RF ampl","MAS","R2T duration","RI,RO duration","steps","Ramp","I offset","S offset"],\ ["85",str('%.0f' % MAS),"1.5",str( '%3.2f' % (TauR)),"1000","20","8.000","6.000"],\ ["kHz"," Hz","ms","us","","+/- %","kHz","kHz"],\ ["1","1","1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) return input
def name(input): name = str("DUO_C" + input[4] + "_B" + input[3] + "_MAS" + input[1] + "_np" + input[2] + ".wave") Wavename = str( TopCmds.INPUT_DIALOG("DUO File", "", ["Filename = "], [name], [""], ["1"], ["Accept", "Close"], [spc, ret], 30)) if Wavename == None: TopCmds.EXIT() Filename = Wavename[8:len(Wavename) - 21] #get rid of Java formatting #MSG( Filename + ' \n is the file name') return Filename
def dialog(Scale, Delta, Beta): MAS = float(TopCmds.GETPAR("CNST 31")) TauR = float(1000000 / MAS) input = TopCmds.INPUT_DIALOG("DREAM input", "", \ ["Total Duration","RI,RO duration","Scale","Ramp","Adiabicity"],\ ["1.0",str( '%3.2f' % TauR),str( '%3.1f' % Scale),str( '%3.1f' % Delta),str( '%3.1f' % Beta)],\ ["ms","us","%","+/- %",""],\ ["1","1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) return input
def dialog(): MAS = float(TopCmds.GETPAR("CNST 31")) TauR = float(1000000 / MAS) Data = TopCmds.INPUT_DIALOG("Tangent Ramp Input", "", \ ["Scaling","steps","Ramp (Delta)","Adiabicity (Beta)"],\ ["50","500","20","4"],\ ["%","","%",""],\ ["1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) return Data
def abort(Home, Source, winfil): if winfil ==0 : TopCmds.SET_SELECTED_WIN(Source) TopCmds.CLOSEWIN(TopCmds.CURDATA()) TopCmds.SET_SELECTED_WIN(Home) TopCmds.EXIT() if winfil ==1 : TopCmds.RE(Source) TopCmds.CLOSEWIN(TopCmds.CURDATA()) TopCmds.RE(Home) TopCmds.EXIT()
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 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 dialog(): MAS = pul.GetPar('MAS', "") TauR = float(1000000 / MAS) Data = TopCmds.INPUT_DIALOG("Tangent Ramp Input", "", \ ["Scaling","steps","Ramp (Delta)","Adiabicity (Beta)"],\ ["50","500","20","4"],\ ["%","","%",""],\ ["1","1","1","1"],\ ["Accept","Close"], [spc,ret], 10) if Data == None: TopCmds.EXIT() return Data
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 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 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 name_confirm(Ttot,RIRO,Sc,Del,Bet,key): Name = "DRM_" + str('%.0f'%Sc) +"Sc_"+str('%.0f'%Del)+"D_"+str('%.0f'%Bet)+"B.wave" SP=pul.pulDict[key] index=TopCmds.INPUT_DIALOG("DREAM Files", "", \ ["File = ","Wave =",],[Name,SP],["",""],["1","1"],\ ["Accept","Close"], [spc,ret], 30) if index == None:TopCmds.EXIT() pul.SetPar(key,index[0],"") return index[0]
class O4: OFFS=float(TopCmds.GETPAR("O4")) BF=float(TopCmds.GETPAR("BF4")) ref=float(TopCmds.GETPAR("SR")) RF=BF*1000000. RO=OFFS-ref def ppm2offs(self,ppm): frq=(O4.RF*ppm/1000000.)- O4.RO return frq def offs2ppm(self,frq): ppm=(1000000./O4.RF)*(frq+O4.RO) return ppm
def MAS(Home, Source, winfil, unit, qt): MAS = 0 if winfil == 0: TopCmds.SET_SELECTED_WIN(Source) if winfil == 1: TopCmds.RE(Source, "n") MAS0 = Get.MAS(unit) if winfil == 0: TopCmds.SET_SELECTED_WIN(Home) if winfil == 1: TopCmds.RE(Home, "n") MAS1 = Get.MAS(unit) if MAS1 != MAS0: Put.MAS(MAS0, "") MAS = 1 return MAS
def CPDparse(Ramp, Nuc): Dirs = get_dir() Name = find_file(Dirs, Ramp) pl_name = '' pw_name = '' # There is a problem if the files don't exist. if os.path.exists(Name) == 1: f = open(Name, 'r') text = f.readlines() f.close() else: if Nuc == "1H": TopCmds.XCMD(pul.pulDict['prgHDec']) if Nuc == "13C": TopCmds.XCMD(pul.pulDict['prgCDec']) if Nuc == "15N": TopCmds.XCMD(pul.pulDict['prgNDec']) if Nuc == "2H": TopCmds.XCMD(pul.pulDict['prgDDec']) for line in text: lines = line.rstrip() #print(lines) if lines.find("pl") >= 0: j = lines.find('=') pl_name = lines[j + 1:] if lines.find("pcpd") >= 0: pw_name = "pcpd" elif lines.find("p31") >= 0: pw_name = "p31" elif lines.find("p62") >= 0: pw_name = "p62" # Delve into the pulse program if we didn't find our power level in the cpd file if pl_name == '': pulprog = TopCmds.GETPAR("PULPROG") #TopCmds.MSG(pulprog) ppText = PProgtools.PPparse(pulprog) #ppText =TopCmds.GET_PULSPROG_TEXT(pulprog) #TopCmds.MSG(str(ppText)) Lines = devide_into_lines(ppText) pl_name = get_cpd_plnam(Lines, Nuc) return pl_name, pw_name
def CC(units): dfltSP = "square.100" Title="CC DREAM Input"; SuTit="Carbon Carbon Adiabatic Mixing" Label=["Carbon B1 Field","C Ramp","Contact Time",\ "H Decoupling"] In =Title,SuTit,Label Title="Adjusting the DREAM parameters:"; Label="1H","13C" Out =Title,Label Match, Delta, Devia = CMatch() #In Hz Ramp=pul.GetPar('sCdrm',"") GoRamp=TopCmds.SELECT("Ramp",\ "Would you like to use the ramp: "+Ramp+\ " \n Or make a new Tangent Ramp?",\ ["Use Current","Make New"]) if GoRamp: SP,Time=MakeRamp(Match,Delta,Devia,"13C") else: SP=Ramp; Time=pul.GetPar('pCdrm',"") CalDREAM('pC90',Match,'aCdrm','aHdrmDC','pCdrm',SP,'sCdrm',dfltSP,units,In,Out)
def dialog(): input = TopCmds.INPUT_DIALOG("DUOinput", "", \ ["RF field = ", "MAS = ","steps" ,"B = ", "C = "], \ ["100","10000","100","3.5","0.5"],\ ["kHz","Hz","","lit=3.5","lit=0.5",], ["1", "1", "1", "1", "1"],\ ["Accept","Close"], ['a','c'],10) return input
def make(Scale, input, name): import math ampl = [] # normalized to 0...100 ph = [] # normalized to 0...100 pi = 3.14159265 durat = 1000 * float(input[2]) RIRO = float(input[3]) steps = int(input[4]) Delta = float(input[5]) RIOsteps = int(steps * RIRO / durat) Start = 100.0 - (Delta) End = 100.0 + (Delta) for i in range(steps): if i < RIOsteps: RF = 1.0 * i * Start / RIOsteps if i >= RIOsteps: RF = 1.0 * Start + (i - RIOsteps) * (End - Start) / (steps - (2 * RIOsteps)) if i > (steps - RIOsteps): RF = 1.0 * End - (i - steps + RIOsteps) * End / RIOsteps ampl.append(Scale * RF) ph.append(0.0) TopCmds.SAVE_SHAPE(name[0], "NoRotation", ampl, ph)
def name(input): Cname = str("EXPORT_C_C" + input[4] + "_B" + input[5] + "_MAS" + input[2] + "_np" + input[3] + ".wave") Nname = str("EXPORT_N_C" + input[4] + "_B" + input[6] + "_MAS" + input[2] + "_np" + input[3] + ".wave") Cwave = pul.pulDict['sCexp'] Nwave = pul.pulDict['sNexp'] Wave = str(INPUT_DIALOG("EXPORT Files", "", ["C File = ","C Wave =","N File = ","N Wave =",],\ [Cname,Cwave,Nname,Nwave],["","","",""],["1","1","1","1"],["Accept","Close"], [spc,ret], 30)) if wave == None: TopCmds.EXIT() Files = Wave[8:len(Wave) - 21] #get rid of Java formatting i = Files.find(",") ii = Files[i + 3:].find(",") + 3 iii = Files[i + ii + 3:].find(",") + 3 Cfile = Files[0:i - 1] Cwave = Files[i + 3:i + ii - 1] Nfile = Files[i + ii + 3:i + ii + iii - 1] Nwave = Files[i + ii + iii + 3:] #MSG( Cfile ) #MSG( Cwave ) #MSG( Nfile ) #MSG( Nwave ) pul.SetPar(str(Cwave), str(Cfile), "") pul.SetPar(str(Nwave), str(Nfile), "") return Cfile, Nfile
def LoadFromData(units): p90H = pul.GetPar('pH90', "") p90C = pul.GetPar('pC90', "") p90N = pul.GetPar('pN90', "") ampH = pul.GetPar('aH', units) ampC = pul.GetPar('aC', units) ampN = pul.GetPar('aN', units) MAS = pul.GetPar('MAS', "") index = TopCmds.INPUT_DIALOG("Mr Setup Input", "Pulse Widths and Power", \ ["1H 90 pw","1H ampl","13C 90 pw","13C ampl","15N 90 pw","15N ampl","MAS"],\ [str('%.2f' %p90H),str('%.2f' %ampH),str('%.2f' %p90C),str('%.2f' %ampC),str('%.2f' %p90N),str('%.2f' %ampN),str('%.2f' %MAS)],\ ["us",units,"us",units,"us",units," Hz"],\ ["1","1","1","1","1","1","1"],\ ["Accept","Close"], ['a','c'], 10) p90H = float(index[0]) ampH = float(index[1]) p90C = float(index[2]) ampC = float(index[3]) p90N = float(index[4]) ampN = float(index[5]) MAS = float(index[6]) TauR = 1000000. / MAS PutPars(p90H, ampH, p90C, ampC, p90N, ampN, MAS, units)
def list(): Nucl = [] vers = Ver.get() dataset = TopCmds.CURDATA() if vers[1] == "2": path = dataset[3] + '/data/' + dataset[4] + '/nmr/' + dataset[ 0] + '/' + dataset[1] if vers[1] == "3": path = dataset[3] + '/' + dataset[0] + '/' + dataset[1] acqu = path + '/acqu' #TopCmds.MSG(acqu) f = open(acqu, 'r') text = f.readlines() f.close i = 0 for line in text: lines = line.rstrip() if lines.find('##$NUC') >= 0: # MSG("I found something: " + lines) j = lines.find('<') k = lines.find('>') if lines.find('off') <= 0: Nucl.append(lines[j + 1:k]) return Nucl
def make(Name, Sc, Stps, Del, Be): import math ampl = [] # normalized to 0...100 ph = [] # normalized to 0...100 Scale = float(Sc) steps = int(Stps) Delta = float(Del) Beta = float(Be) pi = 3.14159265 k = (steps - 1) / 2.0 if Beta == 0.: alpha = 0. #No division by Zero else: alpha = (2.0 / (steps - 1)) * math.atan(Delta / Beta) absBeta = math.fabs(Beta) for i in range(steps): di = absBeta * math.tan(alpha * (float(i - k))) di = di ampl.append(Scale * (100. + di) / 100.) ph.append(0.0) TopCmds.SAVE_SHAPE(Name, "NoRotation", ampl, ph)
def Merger(): TopCmds.MSG("<html><p style='text-align: center;'><font size=14><font color=\'0000FF\'>"+\ "Merging Help</p></font><br>"+\ "\n\nMerge Parameters Between Experiments"+\ "Requirements: Previous Experiments\n"+\ "\n"+\ "Arguments:\n"+\ "-dB : interact with db instead of watts (TS3+)\n"+\ "-f : open and close files instead of switching windows\n"+\ "-EXPNO ##: grab from experiment number ## (default to n-1)\n"+\ "-qt : quiet all interaction- \n\n"+\ "By default, the pulse program name is used to determine parameter\n"+\ "To Specify Parameters input the elements separately or in a string.\n"+\ " Specify Hard pulses separately (hNCA H C)\n"+\ " H C N : Update hard pulses \n"+\ " HC HN NCO NCA NH CH hhC : Specified CP parameters\n"+\ " CX: PDSD/DARR \n"+\ " HDec: H-Dec\n"+\ " ph : Phasing \n"+\ "\nPath : "+str(root.UtilPath.getTopspinHome())+ "/exp/stan/nmr/py/BioPY/modules/\n"+\ "modules: Merge, MergeGet, MergePut\n"+\ "wrappers: MrMerger \n"+\ "\n"+\ "Failures: Incorrect dict keys\n"+\ "")