trp=TRP() if iteration==0: trp.addTemplates(input,stockconc=10.0/6.0,units="x",plate=Experiment.EPPENDORFS) # Add a template else: reagents=Sample.getAllOnPlate(Experiment.REAGENTPLATE)+Sample.getAllOnPlate(Experiment.EPPENDORFS) for r in reagents: if r.volume<=0: r.initvolume=-r.volume+r.plate.unusableVolume Sample.clearall() t71=trp.runT7(theo=False,src=srcs,tgt=[],vol=10,srcdil=10.0/6,dur=15,stopmaster=stop) #print t71 t71=trp.diluteInPlace(tgt=t71,dil=5) # Dilute input samples enough to use in qPCR directly (should be 5000/(rnagain*2*5) = 20) qpcrdil1=trp.runQPCRDIL(src=t71,tgt=[],vol=100,srcdil=20,dilPlate=False) rt1=trp.runRT(pos=True,src=t71,tgt=[],vol=30,srcdil=2) rt1=trp.diluteInPlace(tgt=rt1,dil=5) lig=trp.runLig(src=rt1*6,tgt=[],vol=20,srcdil=3,master=ligmaster1*3+ligmaster2*3) prods=trp.diluteInPlace(tgt=lig,dil=10) print "prod=",prods for i in range(len(qpcrdil1)): trp.runQPCR(src=qpcrdil1[i],vol=15,srcdil=10.0/4,primers=[tmplqpcr[i]],nreplicates=3) for p in pcr1: trp.runQPCR(src=prods[0:3],vol=15,srcdil=10.0/4,primers=p,nreplicates=3) for p in pcr2: trp.runQPCR(src=prods[3:6],vol=15,srcdil=10.0/4,primers=p,nreplicates=3)
r.initvolume = -r.volume + r.plate.unusableVolume Sample.clearall() t71 = trp.runT7(theo=False, src=srcs, tgt=[], vol=10, srcdil=10.0 / 6, dur=15, stopmaster=stop) #print t71 t71 = trp.diluteInPlace(tgt=t71, dil=5) # Dilute input samples enough to use in qPCR directly (should be 5000/(rnagain*2*5) = 20) qpcrdil1 = trp.runQPCRDIL(src=t71, tgt=[], vol=100, srcdil=20, dilPlate=True) rt1 = trp.runRT(pos=True, src=t71, tgt=[], vol=5, srcdil=2) rt1 = trp.diluteInPlace(tgt=rt1, dil=5) lig1 = trp.runLig(src=rt1, tgt=[], vol=10, srcdil=3, master=ligmaster) prods = trp.diluteInPlace(tgt=lig1, dil=10) for i in range(len(qpcrdil1)): trp.runQPCR(src=qpcrdil1[i], vol=15, srcdil=10.0 / 4, primers=[tmplqpcr[i]]) for i in range(len(prods)): trp.runQPCR(src=[prods[i]], vol=15, srcdil=10.0 / 4, primers=pcr[i])
pcr1=trp.runPCR(prefix=[srcprefix],src=rt1[1],tgt=[],vol=50,srcdil=4) trp.diluteInPlace(tgt=pcr1,dil=3) sv1pcr=trp.saveSamps(src=pcr1,tgt=["R1"],vol=125,dil=1) # Round 2 (-theo, Ligate, keep cleaved) t72=trp.runT7(theo=[False,True],src=sv1pcr+sv1pcr,tgt=[],vol=17,srcdil=80.0/24) sv2t7=trp.saveSamps(src=t72,tgt=[],vol=7,dil=4) rt2=trp.runRT(pos=[True for i in t72+sv1t7]+[False for i in t72+sv1t7],src=t72+sv1t7+t72+sv1t7,tgt=[],vol=[12]+[9 for s in t72[1:]+sv1t7+t72+sv1t7],srcdil=2) trp.diluteInPlace(tgt=rt2,dil=2) lig2=trp.runLig(prefix=prodprefix,src=rt2+sv1rt,tgt=[],vol=[30]+[16 for s in rt2[1:]+sv1rt],srcdil=3) qsamps=lig2+sv1t7+sv2t7 # Samples for QPCR diltolig=[24 for s in t72]+[24*4 for s in sv1t7]+[24 for s in t72]+[24*4 for s in sv1t7]+[16 for s in sv1rt]+[8 for s in sv1t7]+[8 for s in sv2t7] # Their dilution so far from the T7 product point (before stop added) dilneeded=[20000/d for d in diltolig] qdil1=[max(50,math.sqrt(d)) for d in dilneeded] # Split dilution equally, but don't use more than 3ul in first step qdil2=[dilneeded[i]/qdil1[i] for i in range(len(qdil1))] # Whatever remains qpcrdil1=trp.runQPCRDIL(src=qsamps,tgt=[],vol=150,srcdil=qdil1) # First dilution before starting PCR (so the rest of the QPCR setup can be done while PCR is running) pcr2=trp.runPCR(prefix=prodprefix,src="R1.T-.RT+.L"+prodprefix,tgt=[],vol=50,srcdil=4) qpcrdil2x1=trp.runQPCRDIL(src=qpcrdil1,tgt=[],vol=150,srcdil=qdil2) # qpcrdil2x2=trp.runQPCRDIL(src=qpcrdil1[0:2],tgt=['x2a','x2b'],vol=150,srcdil=[d*2 for d in qdil2[0:2]]) qpcrdil2x4=trp.runQPCRDIL(src=qpcrdil1[0:2],tgt=['x4a','x4b'],vol=150,srcdil=[d*4 for d in qdil2[0:2]]) qpcrdil2x4b=trp.runQPCRDIL(src=qpcrdil2x1[0:2],tgt=['x4ab','x4bb'],vol=150,srcdil=[4 for d in qdil2[0:2]]) qpcrdil2x16=trp.runQPCRDIL(src=qpcrdil2x1[0:2],tgt=['x16a','x16b'],vol=150,srcdil=[16 for d in qdil2[0:2]]) qpcrdil2=qpcrdil2x1+qpcrdil2x4+qpcrdil2x4b+qpcrdil2x16 trp.runQPCR(src=qpcrdil2,vol=15,srcdil=10.0/4) trp.diluteInPlace(tgt=pcr2,dil=3) sv2pcr=trp.saveSamps(src=pcr2,tgt=["R2"],vol=125,dil=1) trp.finish()
sv1pcr=trp.saveSamps(src=pcr1,tgt=[], vol=50,dil=1) # Round 2 (Keep uncleaved +theo) print "***** Round 2 T7 *****" in2=pcr1+["Neg"] t72=trp.runT7New(theo=[True for i in in2]+[False for i in in2],src=in2+in2,tgt=["%s.T2+"%i for i in in2]+["%s.T2-"%i for i in in2],vol=10,srcdil=10.0/3) sv2t7=trp.saveSamps(src=t72,vol=3,dil=25,plate=trp.e.DILPLATE) rt2=trp.runRT(pos=True,src=t72,tgt=[],vol=5,srcdil=2) trp.diluteInPlace(tgt=rt2,dil=4) lig2=trp.runLig(prefix="A",src=rt2,tgt=[],vol=10,srcdil=3) trp.diluteInPlace(tgt=lig2,dil=5) sv2lig=trp.saveSamps(src=lig2,vol=20,dil=5,plate=trp.e.DILPLATE) # Only do PCR +theo case, uncleaved pcr2=trp.runPCR(prefix="B",src=lig2[0:len(in2)],tgt=["%s.u"%i for i in in2],vol=25,srcdil=4,ncycles=cycles) trp.diluteInPlace(tgt=pcr2,dil=3) sv2pcr=trp.saveSamps(src=pcr2,tgt=[],vol=50,dil=1) # QPCR qsamps=sv1lig+sv2lig+sv1t7+sv2t7 # Samples for QPCR dilneeded=[qdillig for d in sv1lig]+[qdillig for d in sv2lig]+[qdilt7 for d in sv1t7]+[qdilt7 for d in sv2t7] qpcrdil2=trp.runQPCRDIL(src=qsamps,tgt=[],vol=100,srcdil=dilneeded,dilPlate=True) trp.e.w.userprompt("Load QPCR plate and press return to start QPCR setup") trp.runQPCR(src=qpcrdil2,vol=15,srcdil=10.0/4) trp.finish()
) qsamps = lig2 + sv1t7 + sv2t7 # Samples for QPCR diltolig = ( [24 for s in t72] + [24 * 4 for s in sv1t7] + [24 for s in t72] + [24 * 4 for s in sv1t7] + [16 * 3 for s in sv1rt] + [8 for s in sv1t7] + [8 for s in sv2t7] ) # Their dilution so far from the T7 product point (before stop added) dilneeded = [10000 / d for d in diltolig] qdil1 = [40 for d in dilneeded] # 40x for first dilution qdil2 = [dilneeded[i] / qdil1[i] for i in range(len(qdil1))] # Whatever remains qpcrdil1 = trp.runQPCRDIL( src=qsamps, tgt=[], vol=100, srcdil=qdil1, dilPlate=True ) # First dilution before starting PCR (so the rest of the QPCR setup can be done while PCR is running) pcr2 = trp.runPCR(prefix=prodprefix, src="R1.T-.RT+.L" + prodprefix, tgt=[], vol=50, srcdil=4) trp.e.w.userprompt("Load QPCR plate and press return to start QPCR setup") qpcrdil2x1 = trp.runQPCRDIL(src=qpcrdil1, tgt=[], vol=100, srcdil=qdil2) # qpcrdil2x2=trp.runQPCRDIL(src=qpcrdil1[0:2],tgt=['x2a','x2b'],vol=100,srcdil=[d*2 for d in qdil2[0:2]]) qpcrdil2x4 = trp.runQPCRDIL(src=qpcrdil1[0:2], tgt=["x4a", "x4b"], vol=100, srcdil=[d * 4 for d in qdil2[0:2]]) qpcrdil2x4b = trp.runQPCRDIL(src=qpcrdil2x1[0:2], tgt=["x4ab", "x4bb"], vol=100, srcdil=[4 for d in qdil2[0:2]]) qpcrdil2x16 = trp.runQPCRDIL(src=qpcrdil2x1[0:2], tgt=["x16a", "x16b"], vol=100, srcdil=[16 for d in qdil2[0:2]]) qpcrdil2 = qpcrdil2x1 + qpcrdil2x4 + qpcrdil2x4b + qpcrdil2x16 trp.runQPCR(src=qpcrdil2, vol=15, srcdil=10.0 / 4) trp.diluteInPlace(tgt=pcr2, dil=3) sv2pcr = trp.saveSamps(src=pcr2, tgt=["R2"], vol=125, dil=1) trp.finish()
srcdil=80.0 / 24, dur=15) trp.diluteInPlace(tgt=t71, dil=2) rt1 = trp.runRT(pos=True, src=t71, tgt=[], vol=5, srcdil=2) trp.diluteInPlace(tgt=rt1, dil=4) lig1 = trp.runLig( prefix=[prodprefixes[i % len(prodprefixes)] for i in range(len(rt1))], src=rt1, tgt=[], vol=10, srcdil=3) trp.diluteInPlace(tgt=lig1, dil=4) # Dilute input samples qpcrdil1 = trp.runQPCRDIL(src=inputs, tgt=[], vol=100, srcdil=40, dilPlate=True) diltohere = [6 * 40 for s in inputs] + [ 2 * 2 * 2 * 4 * 3 * 4 for s in lig1 ] # Their dilution so far from the T7 product point (before stop added) dilneeded = [10000 / d for d in diltohere] # trp.e.w.userprompt("Load QPCR plate and press return to start QPCR setup") qpcrdil2 = trp.runQPCRDIL(src=qpcrdil1 + lig1, tgt=[], vol=100, srcdil=dilneeded, dilPlate=True) trp.runQPCR(src=qpcrdil2, vol=15, srcdil=10.0 / 4) trp.finish()
qsamps = lig2 + sv2t7 # Samples for QPCR diltolig = [2 * 5 * 2 * 4 * 3 * 5 for d in lig2] + [ 2 * 5 * 10 * rnagain for d in sv2t7 ] # Their dilution so far from the T7 product point (before stop added) dilneeded = [10000.0 / d for d in diltolig] # qdil1=[40 for d in dilneeded] # 40x for first dilution # qdil2=[dilneeded[i]/qdil1[i] for i in range(len(qdil1))] # Whatever remains # qpcrdil1=trp.runQPCRDIL(src=qsamps,tgt=[],vol=100,srcdil=qdil1,dilPlate=False) # First dilution before starting PCR (so the rest of the QPCR setup can be done while PCR is running) ligconc = (endconc / 3.0) * 3.0 / 10.0 * rnagain / diltolig[ 0] # Expected concentration of ligation product here cycles = math.ceil(math.log(endconc / ligconc, pcreff)) # Amplify to end of exponential phase print "PCR input conc=%.3g pM, PCR cycles=%.1f, End Conc=%.0f nM" % ( ligconc * 1e12, cycles, endconc * 1e9) pcr2 = trp.runPCR(prefix=prodprefix, src=lig2[0:len(sv1pcr)], tgt=[], vol=25, srcdil=4) trp.e.w.userprompt("Load QPCR plate and press return to start QPCR setup") qpcrdil2 = trp.runQPCRDIL(src=qsamps, tgt=[], vol=100, srcdil=dilneeded, dilPlate=True) trp.runQPCR(src=qpcrdil2, vol=15, srcdil=10.0 / 4) trp.diluteInPlace(tgt=pcr2, dil=3) sv2pcr = trp.saveSamps(src=pcr2, tgt=[], vol=55, dil=1) trp.finish()
altprefix = currprefix if currprefix == "B": currprefix = "A" else: currprefix = "B" if round == ndblrounds - 1 and doqpcr: # Do the analysis as well lig2 = trp.runLig(prefix=[currprefix] + svligtype, src=rt2 + sv, vol=[19] + [10 for s in sv], srcdil=3) qsamps = lig2[1:] # Samples for QPCR lig2 = lig2[0:1] trp.diluteInPlace(tgt=qsamps, dil=5) qpcrdilt7 = trp.runQPCRDIL( src=t7all, tgt=[], vol=100, srcdil=33.33, dilPlate=True) # Dilute T7 products first qsamps = qsamps + qpcrdilt7 dilneeded = [10000.0 / (d * 3 * 5) for d in svdil ] + [10000.0 / (2 * 5 * 33.33) for d in qpcrdilt7] qpcrdil1 = trp.runQPCRDIL( src=qsamps, tgt=[], vol=100, srcdil=dilneeded, dilPlate=True ) # First dilution before starting PCR (so the rest of the QPCR setup can be done while PCR is running) else: lig2 = trp.runLig(prefix=currprefix, src=rt2, vol=[24], srcdil=3) pcr2 = trp.runPCR(prefix=currprefix, src=lig2, vol=25, srcdil=4, ncycles=cycles2) if round == ndblrounds - 1 and doqpcr:
for iteration in range(2): print "Iteration ",iteration+1 trp=TRP() if iteration==0: trp.addTemplates(input,8) # Add a template with stock concentration 8nM else: reagents=Sample.getAllOnPlate(Experiment.REAGENTPLATE) for r in reagents: if r.volume<0: r.initvolume=-r.volume+20 Sample.clearall() t71=trp.runT7(theo=[False for i in inputs]+[True for i in inputs],src=inputs+inputs,tgt=[],vol=10,srcdil=80.0/24,dur=15) trp.diluteInPlace(tgt=t71,dil=2) rt1=trp.runRT(pos=True,src=t71,tgt=[],vol=5,srcdil=2) trp.diluteInPlace(tgt=rt1,dil=4) lig1=trp.runLig(prefix=[prodprefixes[i%len(prodprefixes)] for i in range(len(rt1))],src=rt1,tgt=[],vol=10,srcdil=3) trp.diluteInPlace(tgt=lig1,dil=4) # Dilute input samples qpcrdil1=trp.runQPCRDIL(src=inputs,tgt=[],vol=100,srcdil=40,dilPlate=True) diltohere=[6*40 for s in inputs]+[2*2*2*4*3*4 for s in lig1] # Their dilution so far from the T7 product point (before stop added) dilneeded=[10000/d for d in diltohere] # trp.e.w.userprompt("Load QPCR plate and press return to start QPCR setup") qpcrdil2=trp.runQPCRDIL(src=qpcrdil1+lig1,tgt=[],vol=100,srcdil=dilneeded,dilPlate=True) trp.runQPCR(src=qpcrdil2,vol=15,srcdil=10.0/4) trp.finish()
if doqpcr: sv=sv+trp.saveSamps(src=rt2,vol=8,dil=5) svligtype=svligtype+[altprefix] svdil=svdil+[2*2*3*5] altprefix=currprefix if currprefix=="B": currprefix="A" else: currprefix="B" if round==ndblrounds-1 and doqpcr: # Do the analysis as well lig2=trp.runLig(prefix=[currprefix]+svligtype,src=rt2+sv,vol=[19]+[10 for s in sv],srcdil=3) qsamps=lig2[1:] # Samples for QPCR lig2=lig2[0:1] trp.diluteInPlace(tgt=qsamps,dil=5) qpcrdilt7=trp.runQPCRDIL(src=t7all,tgt=[],vol=100,srcdil=33.33,dilPlate=True) # Dilute T7 products first qsamps=qsamps+qpcrdilt7 dilneeded=[10000.0/(d*3*5) for d in svdil]+[10000.0/(2*5*33.33) for d in qpcrdilt7] qpcrdil1=trp.runQPCRDIL(src=qsamps,tgt=[],vol=100,srcdil=dilneeded,dilPlate=True) # First dilution before starting PCR (so the rest of the QPCR setup can be done while PCR is running) else: lig2=trp.runLig(prefix=currprefix,src=rt2,vol=[24],srcdil=3) pcr2=trp.runPCR(prefix=currprefix,src=lig2,vol=25,srcdil=4,ncycles=cycles2) if round==ndblrounds-1 and doqpcr: trp.e.w.userprompt("Press return to start QPCR setup") trp.runQPCR(src=qpcrdil1,vol=15,srcdil=10.0/4) trp.diluteInPlace(tgt=pcr2,dil=6) input=trp.saveSamps(src=pcr2,tgt=["R%d-%c"%(firstround+1+round*2,currprefix)],vol=125,dil=1,plate=trp.e.EPPENDORFS) trp.finish()