コード例 #1
0
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)
コード例 #2
0
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))     
コード例 #3
0
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"], ['a','c'], 30))

   Filename = Wavename[8:len(Wavename)-21]  #get rid of Java formatting
   #MSG( Filename + ' \n is the file name')
   return Filename
コード例 #4
0
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
コード例 #5
0
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)
コード例 #6
0
def HN(MAS0, MAS, units):

    p90H = pul.GetPar('pH90', "")
    ampH = pul.GetPar('aH', units)
    SPH = pul.GetPar('sHhn', "")
    ampHCP = pul.GetPar('aHhn', units)
    avgH = 1.0

    p90X = pul.GetPar('pN90', "")
    ampX = pul.GetPar('aN', units)
    SPX = pul.GetPar('sNhn', "")
    ampXCP = pul.GetPar('aNhn', units)
    avgX = 1.0

    CNCT = pul.GetPar('pHN', "")

    params = TopCmds.INPUT_DIALOG("HN CP MAS adjustment", "Proton Nitrogen Cross Polarization", \
    ["Old MAS rate","New MAS rate","Old 1H power ("+pul.pulDict['aHhc']+")",\
    "Old 15N power ("+pul.pulDict['aNhn']+")","Contact Time ("+pul.pulDict['pHN']+")",\
    "H-Ramp ("+pul.pulDict['sHhc']+")","N-Ramp ("+pul.pulDict['sChc']+")"],\
    [str(MAS0),str(MAS),str(ampXCP),str(ampHCP),str(CNCT),SPH,SPX],\
    ["Hz","Hz",units,units,"us","",""],\
    ["1","1","1","1","1","1","1"],\
    ["Accept","Close"], [spc,ret], 10)

    if params == None: TopCmds.EXIT()

    if units == "W":
        params[2] = str(Setup.WtodB(float(params[2])))
        params[3] = str(Setup.WtodB(float(params[3])))
        ampH = Setup.WtodB(ampH)
        ampX = Setup.WtodB(ampX)

    if SPH != "None" and SPH != None and SPH != "Unused":
        avgH = IntShape.Integrate(SPH) / 100.
    if SPX != "None" and SPX != None and SPX != "Unused":
        avgX = IntShape.Integrate(SPX) / 100.

    pulses = p90H, ampH, p90X, ampX, avgH, avgX

    SelectorText="Adjust the HN CP parameters:","Calculate New Match for:",\
    ["Proton","Nitrogen","Maximum for Both"]

    ampHCP, ampXCP = FindMatch(params, pulses, SelectorText)

    if units == "W":
        ampXCP = Setup.dBtoW(ampXCP)
        ampHCP = Setup.dBtoW(ampHCP)

    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:
        pul.SetPar('aHhn', ampHCP, units)
        pul.SetPar('aNhn', ampXCP, units)
        pul.SetPar('pHN', CNCT, "")
        pul.SetPar('sHhn', SPH, "")
        pul.SetPar('sNhn', SPX, "")
コード例 #7
0
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"], [spc,ret],10)
    if input == None: TopCmds.EXIT()
    return input
コード例 #8
0
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))
コード例 #9
0
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
コード例 #10
0
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
コード例 #11
0
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))
コード例 #12
0
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
コード例 #13
0
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
コード例 #14
0
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
コード例 #15
0
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]
コード例 #16
0
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
コード例 #17
0
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
コード例 #18
0
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
コード例 #19
0
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
コード例 #20
0
def Nhp(Home, Source, winfil, unit, qt):
    Nhp = 0

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Source)
    if winfil == 1: TopCmds.RE(Source, "n")
    p90, pamp = Get.NPul(unit)
    #TopCmds.MSG("From:\np90= "+str(p90)+"\npamp= "+str(pamp))

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Home)
    if winfil == 1: TopCmds.RE(Home, "n")
    p90_0, pamp0 = Get.NPul(unit)
    #TopCmds.MSG("Home:\np90_0= "+str(p90_0)+"\npamp_0= "+str(pamp0))

    if p90_0 != p90 or pamp != pamp0:

        Title = "Nitrogen Hard Pulse Merger"
        Header = ""
        Inputs=\
        "15N 90"+deg+" pulse : "+str(p90_0)+" us ("+str(pul.pulDict['pN90'])+")",\
        "15N 90"+deg+" pwr   : "+str(pamp0)+unit+" ("+str(pul.pulDict['aN'])+")"

        Values = str(p90), str(pamp)
        Comments = "us", unit
        Types = "1", "1"
        Buttons = "Accept", "Cancel"
        ShortCuts = 'a', 'c'
        columns = 5

        if qt == 0:
            result = TopCmds.INPUT_DIALOG(Title, Header, Inputs, Values,
                                          Comments, Types, Buttons, ShortCuts,
                                          columns)

            if result != None:
                p90, pamp = result
                Nhp = 1
                Put.NPul(p90, pamp, unit)
            else:
                abort(Home, Source, winfil)
        if qt != 0:
            Put.NPul(p90, pamp, unit)
            Nhp = 1

    return Nhp
コード例 #21
0
def NCO(Home, Source, winfil, unit, qt):
    NC = 0

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Source)
    if winfil == 1: TopCmds.RE(Source)
    CPcnct, aH, aX, aY, SPX, SPY = Get.NCO(unit)

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Home)
    if winfil == 1: TopCmds.RE(Home)
    CPcnct0, aH0, aX0, aY0, SPX0, SPY0 = Get.NCO(unit)

    if CPcnct != CPcnct0 or aH != aH0 or aX != aX0 or aY != aY0 or SP != SP0:
        Title = "UPDATE N-CO CP"
        Header = ""
        Inputs=\
        "Contact    : "+str(CPcnct0)+" us ("+str(pul.pulDict['pNCO'])+")",\
        "1H dec pwr : "+str(aH0)+" "+unit+" ("+str(pul.pulDict['aHnco'])+")",\
        "13C pwr    : "+str(aX0)+" "+unit+" ("+str(pul.pulDict['aCnco'])+")",\
        "15N pwr    : "+str(aY0)+" "+unit+" ("+str(pul.pulDict['aNnco'])+")",\
        "13C shape  : "+str(SP0)+" ("+str(pul.pulDict['sCnco'])+")"
        "15N shape  : " + str(SP0) + " (" + str(pul.pulDict['aNnco']) + ")"

        Values = str(CPcnct), str(aH), str(aX), str(aY), str(SPX), str(SPY)
        Comments = "us", unit, unit, unit, "", ""
        Types = "1", "1", "1", "1", "1", "1"
        Buttons = "Accept", "Cancel"
        ShortCuts = 'a', 'c'
        columns = 15

        if qt == 0:
            result = TopCmds.INPUT_DIALOG(Title, Header, Inputs, Values,
                                          Comments, Types, Buttons, ShortCuts,
                                          columns)

            if result != None:
                CPcnct, aH, aX, aY, SPX, SPY = result
                NC = 1
                Put.NCO(CPcnct, aH, aX, aY, SPX, SPY, unit)
            else:
                abort(Home, Source, winfil)
        else:
            NCA = 1
            Put.NCO(CPcnct, aH, aX, aY, SPX, SPY, unit)
    return NC
コード例 #22
0
def NH2(Home, Source, winfil, unit, qt):
    NH2 = 0

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Source)
    if winfil == 1: TopCmds.RE(Source, "n")
    CPcnct, aHcp, aXcp, SPH, SPX = Get.NH2(unit)

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Home)
    if winfil == 1: TopCmds.RE(Home, "n")
    CPcnct0, aHcp0, aXcp0, SPH0, SPX0 = Get.NH2(unit)

    if CPcnct != CPcnct0 or aHcp != aHcp0 or aXcp != aXcp0 or SPH != SPH0 or SPX != SPX0:

        Title = "UPDATE N-H CP (H-detect)"
        Header = ""
        Inputs=\
        "Contact   : "+str(CPcnct0)+" us ("+str(pul.pulDict['pNH2'])+")",\
        "1H pwr    : "+str(aHcp0)+" "+unit+" ("+str(pul.pulDict['aHnh2'])+")",\
        "15N pwr   : "+str(aXcp0)+" "+unit+" ("+str(pul.pulDict['aNnh2'])+")",\
        "1H shape  : "+str(SPH0)+" ("+str(pul.pulDict['sHnh2'])+")",\
        "15N shape : "+str(SPX0)+" ("+str(pul.pulDict['sNnh2'])+")"

        Values = str(CPcnct), str(aHcp), str(aXcp), str(SPH), str(SPX)
        Comments = "us", unit, unit, "", ""
        Types = "1", "1", "1", "1", "1"
        Buttons = "Accept", "Cancel"
        ShortCuts = 'a', 'c'
        columns = 15

        if qt == 0:
            result = TopCmds.INPUT_DIALOG(Title, Header, Inputs, Values,
                                          Comments, Types, Buttons, ShortCuts,
                                          columns)

            if result != None:
                CPcnct, aHcp, aXcp, SPH, SPX = result
                NH2 = 1
                Put.NH2(CPcnct, aHcp, aXcp, SPH, SPX, unit)
            else:
                abort(Home, Source, winfil)
        if qt != 0:
            NH2 = 1
            Put.NH2(CPcnct, aHcp, aXcp, SPH, SPX, unit)
    return NH2
コード例 #23
0
def CPdec(amp, units, In, Out):
    """
  amp   : dict key for CP decoupling amp     
  units : Watts (W) or decibel (dB)
  In    : Title, Subtitle, and Label for Input Dialog
  Out   : Title and Label for Selection/Confirmation Window
  """

    P90 = pul.GetPar('pH90', "")

    Amp90 = pul.GetPar('aH', "dB")
    AmpD0 = pul.GetPar(amp, "dB")

    MaxB1D = 1000000. / 4. / P90

    B1_0 = MaxB1D * (math.pow(10, (Amp90 - AmpD0) / 20.))

    if B1_0 > 100.: Dcond = '% .1f' % B1_0
    if B1_0 > MaxB1D: Dcond = '85000.0'
    if B1_0 <= 100.: Dcond = '85000.0'
    Val = [str('%3.3f' % (float(Dcond) / 1000.))]

    index=TopCmds.INPUT_DIALOG(In[0],In[1],In[2],\
      Val,["kHz"],["1"],\
      ["Accept","Close"], [spc,ret], 10)

    if index == None:
        TopCmds.EXIT()

    #Safety
    Damp = DecSafely(1000. * float(index[0]), amp, MaxB1D, 150000., Amp90,
                     units)

    if units == "W":
        Damp = dBtoW(Damp)

    value = TopCmds.SELECT(Out[0],"This will set\n "+\
      Out[1]+" power to:  " + str('%3.2f' %Damp)+" "+ units,\
      ["Update", "Keep Previous"],[spc,ret])

    if value != 1:
        pul.SetPar(amp, Damp, units)

    return
コード例 #24
0
def HDec(Home, Source, winfil, unit, qt):
    HDec = 0

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Source)
    if winfil == 1: TopCmds.RE(Source)
    cpd, pwname, pw, pampname, pamp = Get.HDec(unit)
    #TopCmds.MSG(cpd+pwname+str(pw)+pampname+str(pamp))

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Home)
    if winfil == 1: TopCmds.RE(Home)
    cpd0, pw0name, pw0, pamp0name, pamp0 = Get.HDec(unit)
    #TopCmds.MSG(cpd0+pw0name+str(pw0)+pamp0name+str(pamp0))

    if cpd0 != cpd or pamp != pamp0 or pw != pw0 or pwname != pw0name or pampname != pamp0name:
        Title = "UPDATE Proton Decoupling parameters"
        Header = "(pl12, pcpd2, cpdprg2 only)"
        Inputs=\
        "Compound pulse : "+str(cpd0),\
        pwname+"  : "+str(pw0)+" us ",\
        pampname+"  : "+str(pamp0)+unit

        Values = str(cpd), str(pw), str(pamp)
        Comments = "", "us", unit
        Types = "1", "1", "1"
        Buttons = "Accept", "Cancel"
        ShortCuts = 'a', 'c'
        columns = 15

        if qt == 0:
            result = TopCmds.INPUT_DIALOG(Title, Header, Inputs, Values,
                                          Comments, Types, Buttons, ShortCuts,
                                          columns)

            if result != None:
                cpd, pw, pamp = result
                HDec = 1
                Put.HDec(cpd, pwname, pw, pampname, pamp, unit)
            else:
                abort(Home, Source, winfil)
        if qt != 0:
            HDec = 1
            Put.HDec(cpd, pwname, pw, pampname, pamp, unit)
    return HDec
コード例 #25
0
def COs180(Home, Source, winfil, unit, qt):
    done = 0

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Source)
    if winfil == 1: TopCmds.RE(Source, "n")
    PW, Amp, SP, Off = Get.CO_S180(unit)

    if winfil == 0: TopCmds.SET_SELECTED_WIN(Home)
    if winfil == 1: TopCmds.RE(Home, "n")
    PW0, Amp0, SP0, Off0 = Get.CO_S180(unit)

    if CPcnct != CPcnct0 or aHcp != aHcp0 or aXcp != aXcp0 or SPH != SPH0 or SPX != SPX0:

        Title = "UPDATE CO soft 180 pulse"
        Header = ""
        Inputs=\
        "Pulse   : "+str(PW0)+" us ("+str(pul.pulDict['pCOr'])+")",\
        "Ampl    : "+str(Amp0)+" "+unit+" ("+str(pul.pulDict['aCOr'])+")",\
        "Shape   : "+str(SP0)+" ("+str(pul.pulDict['sCOr'])+")",\
        "Offset  : "+str(Off0)+" ("+str(pul.pulDict['oCOr'])+")"

        Values = str(PW), str(Amp), str(SP), str(Off)
        Comments = "us", unit, "", str(pul.pulDict['uoffs'])
        Types = "1", "1", "1", "1"
        Buttons = "Accept", "Cancel"
        ShortCuts = 'a', 'c'
        columns = 15

        if qt == 0:
            result = TopCmds.INPUT_DIALOG(Title, Header, Inputs, Values,
                                          Comments, Types, Buttons, ShortCuts,
                                          columns)

            if result != None:
                PW, Amp, SP, Off = result
                done = 1
                Put.CO_S18(PW, Amp, SP, Off, unit)
            else:
                abort(Home, Source, winfil)
        if qt != 0:
            done = 1
            Put.CO_S180(PW, Amp, SP, Off, unit)
    return done
コード例 #26
0
def name_confirm():
    adbname = pul.GetPar('sCadb', "")
    if adbname == "gauss": adbname = "TanhTan"

    SP = pul.pulDict['sCadb']

    Wave = str(TopCmds.INPUT_DIALOG("Adiabatic TOBSY", "",\
    ["SP File = ","SP Wave =",],\
    [adbname,SP],["",""],["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(",")
    File = Files[0:i - 1]
    SP = Files[i + 3:]
    pul.SetPar(SP, str(File), "")
    pul.SetPar('sCadb', File, "")
コード例 #27
0
def HN(Home,Source,winfil,unit,qt):	
	HN=0

	if winfil ==0 :TopCmds.SET_SELECTED_WIN(Source)
	if winfil ==1 :TopCmds.RE(Source,"n")
	CPcnct, aHcp, aXcp, SPH, SPX = Get.HN(unit)

	if winfil ==0 :TopCmds.SET_SELECTED_WIN(Home)
	if winfil ==1 :TopCmds.RE(Home,"n")
	CPcnct0, aHcp0, aXcp0, SPH0, SPX0 = Get.HN(unit)

	if CPcnct!=CPcnct0 or aHcp!=aHcp0 or  aXcp!=aXcp0 or SPH!=SPH0 or SPX!=SPX0 :
		
		Title="UPDATE H-N CP"
		Header=""
		Inputs=\
		"Contact   : "+CPcnct0+" us ",\
		"1H pwr    : "+aHcp0+" "+unit,\
		"13C pwr   : "+aXcp0+" "+unit,\
		"1H shape  : "+SPH0,\
		"13C shape : "+SPX0

		Values=CPcnct,aHcp,aXcp,SPH,SPX
		Comments="us",unit,unit,"",""
		Types="1","1","1","1","1"
		Buttons="Accept","Cancel"
		ShortCuts='a','c'
		columns=15
		
		if qt==0:
		  result=TopCmds.INPUT_DIALOG(Title,Header,Inputs,Values,Comments,Types,Buttons,ShortCuts,columns)
		
		  if result != None:
		    CPcnct, aHcp, aXcp, SPH, SPX = result
		    HN=1
		    Put.HN(CPcnct, aHcp, aXcp, SPH, SPX, unit)
		  else:
		    abort(Home,Source,winfil)
		else:
		  HN=1
		  Put.HN(CPcnct, aHcp, aXcp, SPH, SPX, unit)
	return HN
コード例 #28
0
def LoadDefault(units):
    #
    # Read the Prosol data (Defaults remain if no Prosol)
    # Still under development :(

    p90H = 2.5
    p90C = 3.0
    p90N = 5.0
    if units == "W":
        ampH = 100.
        ampC = 200.
        ampN = 400.
    else:
        ampH = 0.
        ampC = 0.
        ampN = 0.
    MAS = 10000

    #Read the Prosol data if it exists
    #XCMD('rprosol')

    #p90H, p90C, p90N, ampH, ampC, ampN, MAS = ReadHPFromData(units)

    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(p90H),str(ampH),str(p90C),str(ampC),str(p90N),str(ampN),str(MAS)],\
    ["us",units,"us",units,"us",units," Hz"],\
    ["1","1","1","1","1","1","1"],\
    ["Accept","Close"], [spc,ret], 10)

    if index == None: TopCmds.EXIT()

    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)
コード例 #29
0
def LoadDefault(units):
    #
    # Should have an external file to read from, but for now, this will do.
    #
    #ReadPars(p90H,ampH,p90C,ampC,p90N,ampN,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"],\
    ["2.5","100","3.0","200.0","5.0","500.0","10000"],\
    ["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)
コード例 #30
0
def NCO(Home,Source,winfil,unit,qt):
	NCO=0
	
	if winfil ==0 :TopCmds.SET_SELECTED_WIN(Source)
	if winfil ==1 :TopCmds.RE(Source)
	CPcnct, aH, aX, aY, SP = Get.NCO(unit)

	if winfil ==0 :TopCmds.SET_SELECTED_WIN(Home)
	if winfil ==1 :TopCmds.RE(Home)
	CPcnct0, aH0, aX0, aY0, SP0 = Get.NCO(unit)
	
	if CPcnct!=CPcnct0 or aH!=aH0 or  aX!=aX0 or aY != aY0 or SP!=SP0 :
		Title="UPDATE N-CO CP"
		Header=""
		Inputs=\
		"Contact    : "+CPcnct0+" us ",\
		"1H dec pwr : "+aH0+" "+unit,\
		"13C pwr    : "+aX0+" "+unit,\
		"15N pwr    : "+aY0+" "+unit,\
		"13C shape  : "+SP0

		Values=CPcnct,aH,aX,aY,SP
		Comments="us",unit,unit,unit,""
		Types="1","1","1","1","1"
		Buttons="Accept","Cancel"
		ShortCuts='a','c'
		columns=15
		
		if qt==0:
		  result=TopCmds.INPUT_DIALOG(Title,Header,Inputs,Values,Comments,Types,Buttons,ShortCuts,columns)
		
		  if result != None:
		    CPcnct, aH, aX, aY, SP = result
		    NCO=1
		    Put.NCO(CPcnct, aH, aX, aY, SP, unit)
		  else:
		    abort(Home,Source,winfil)
		else:
		  NCO=1
		  Put.NCO(CPcnct, aH, aX, aY, SP, unit)
	return NCO