From alexandra.radu09 at gmail.com Tue Jun 2 11:12:45 2015 From: alexandra.radu09 at gmail.com (Alexandra Radu) Date: Tue, 2 Jun 2015 12:12:45 +0300 Subject: [Python-ro] Fwd: Help needed :) In-Reply-To: References: Message-ID: ---------- Forwarded message ---------- From: Alexandra Radu Date: 2015-06-01 16:37 GMT+03:00 Subject: Help needed :) To: contact at ropython.org Buna ziua, Saptamana trecuta am luat legatura cu dumneavoastra pe Facebook si am fost sfatuita sa va trimit mai multe detalii legate de problemele pe care le-am intampinat in scrierea unui mic software de bioinformatica. Mi-as dori sa simplific si sa optimizez codul pe cat de mult posibil si sa ii fac o interfata grafica simpla. Software-ul utilizeaza o secventa (un sir) pentru a gasi substring-uri in functie de anumite caracteristici. Fiind incepatoare, consider ca ceea ce am scris, desi functioneaza, este prea stufos (atasat "incercare.py") Am incercat de asemenea sa fac o interfata cu ajutorul Tkinter dar nu am reusit decat sa asez widget-urile in grid...nu am reusit sa transfer si "comenzile" din incercare.py in interfata1.py Ce mi-as dori sa faca software-ul: - sa permita deschiderea si citirea unui fisier text; folosirea sirului pentru filtrarea acelor substrings - cu ajutorul BioPython se pot citi fisiere in format FASTA dar eu nu am reusit sa implementez asta... - sa afiseze textul din fisierul deschis in cadrul widget-ului Entry din subframe-ul "Secventa de interes" - unde scrie Secventa sau sa se poata adauga cu copy-paste o secventa direct in Entry widget. - tot in cadrul acelui subframe, doresc ca utilizatorul sa introduca 2 valori reprezentand indexes pentru o subsecventa de interes din secventa initiala - caracteristicile pentru filtrarea substrings-urilor imi doresc sa fie luate din subframe-ul "Primeri". Utilizatorul sa poata selecta lungimea substrings-urilor (intre 18 si 23 caractere), Tm intre 44 si 68 de grade (formula de calcul este in cod) si daca substring-ul sa aibe C/G Clamp adica sa aibe la final CC/GG/CG sau GC (toate conditiile sunt in incercare.py) - la apasarea butonului ok din subframeul "Primeri" sa fie citite conditiile impuse de utilizator si filtrate rezultatele din secventa initiala. Mi-ar placea ca substring-urile (primerii) sa fie afisati intr-o fereastra separata (de Listbox poate?) in perechi, impreuna cu temperaturile Tm, secventa dintre ei, lungimea acestei secvente si acel scor de aliniere - Ulterior daca utilizatorul va dori sa poata utiliza si subframe-ul "Restrictie cu endonucleaze" sa poata selecta un rezultat din fereastra cu widget Listbox si sa utilizeze sirul numit "amplicon" pentru a cauta anumite substrings in el. Daca nu este selectat niciun rezultat din Listbox, sa se poata cauta in toate rezultatele. - Substring-urile cautate sa poata fi predefinite, selectabile prin checkbox (BamHI, EcoRI, HindIII) sau sa poata fi cautat un anumit substring ce poate fi scris in Entry ("Situs"). Acest software reprezinta lucrarea mea de disertatie si imi va face mare placere sa mentionez ajutorul primit din partea comunitatii Python Romania. Astept cu nerabdare raspunsul dumneavoastra. Alexandra Radu -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- import re import sys from random import randint from Bio import pairwise2 #importa secventa de nucleotide dintr-un fisier: adn = open("Secventa.txt").read() #Transforma toate literele in majuscule: adn = adn.upper() x = input("Index prima nucleotida a secventei de interes: ") x = int(x) y = input("Index ultima nucleotida: ") y = int(y)+1 #capat cautare stanga primer forward - cu 200 nucleotide in aval: ccs = x-200 #capat cautare dreapta primer forward: ccd = x #range de cautare PFW [ccs:ccd] pfw = adn[ccs:ccd] if ccs < 0: pfw = adn[:ccd] pfw18 = open("primerfw18.txt", "w") pfw19 = open("primerfw19.txt", "w") pfw20 = open("primerfw20.txt", "w") pfw21 = open("primerfw21.txt", "w") pfw22 = open("primerfw22.txt", "w") pfw23 = open("primerfw23.txt", "w") prv18 = open("primerrv18.txt", "w") prv19 = open("primerrv19.txt", "w") prv20 = open("primerrv20.txt", "w") prv21 = open("primerrv21.txt", "w") prv22 = open("primerrv22.txt", "w") prv23 = open("primerrv23.txt", "w") print("Secventa in amonte: \n", pfw, "\n") #cauta primeri de lungimea 18 nucleotide z=18 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result #raport CG 40-60% >>C+G= 8-12 for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 7 <= cg <= 11: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw18.write(pri) pfw18.close() #cauta primeri de lungimea 19 nucleotide z=19 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result #raport CG 40-60% >>C+G= 8-12 for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 8 <= cg <= 11: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw19.write(pri) pfw19.close() #cauta primeri de lungimea 20 nucleotide z=20 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 8 <= cg <= 12: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw20.write(pri) pfw20.close() #cauta primeri de lungimea 21 nucleotide z=21 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 8 <= cg <= 13: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw21.write(pri) pfw21.close() #cauta primeri de lungimea 22 nucleotide z=22 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 9 <= cg <= 13: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw22.write(pri) pfw22.close() #cauta primeri de lungimea 23 nucleotide z=23 def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result for i in rand_parts(pfw, z): cg = i.count("C")+ i.count("G") if 9 <= cg <= 14: pri = i #filtreaza in functie de raportul AT/CG for ending in ["CC", "CG", "GG", "GC"]: if i.endswith(ending): #filtreaza primerii ce au ultimile 2 nucleotice - la capatul 3' C sau G pfw23.write(pri) pfw23.close() #y este capatul din dreapta a secv de interes >> caut de la y la y+200 dr = y+200 #Secventa in aval de secventa de interes - in care cauta primerii reverse prv = adn[y:dr] #Secventa complementara def multiple_replacer(*key_values): replace_dict = dict(key_values) replacement_function = lambda match: replace_dict[match.group(0)] pattern = re.compile("|".join([re.escape(k) for k, v in key_values]), re.M) return lambda string: pattern.sub(replacement_function, string) def multiple_replace(string, *key_values): return multiple_replacer(*key_values)(string) rep = (u"A", u"T"), (u"T", u"A"), (u"C", u"G"), (u"G", u"C") adnc = multiple_replace(adn, *rep) prvc = adnc[y:dr] z=18 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + 18 res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 7 <= cg2 <= 11: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv18.write(prim) prv18.close() z=19 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 8 <= cg2 <= 11: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv19.write(prim) prv19.close() z=20 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 8 <= cg2 <= 12: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv20.write(prim) prv20.close() z=21 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 8 <= cg2 <= 13: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv21.write(prim) prv21.close() z=22 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 9 <= cg2 <= 13: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv22.write(prim) prv22.close() z=23 def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res for i in parts(prvc, z): cg2 = i.count("C")+ i.count("G") if 9 <= cg2 <= 14: prim = i for ending in ["CC", "CG", "GG", "GC"]: if prim.startswith(ending): prv23.write(prim) prv23.close() primeriFW18 = open("primerfw18.txt").read() primeriFW19 = open("primerfw19.txt").read() primeriFW20 = open("primerfw20.txt").read() primeriFW21 = open("primerfw21.txt").read() primeriFW22 = open("primerfw22.txt").read() primeriFW23 = open("primerfw23.txt").read() primeriRV18 = open("primerrv18.txt").read() primeriRV19 = open("primerrv19.txt").read() primeriRV20 = open("primerrv20.txt").read() primeriRV21 = open("primerrv21.txt").read() primeriRV22 = open("primerrv22.txt").read() primeriRV23 = open("primerrv23.txt").read() def chunks(s, n): #Produce `n`-character chunks from `s`.""" for start in range(0, len(s), n): yield s[start:start+n] PFW = [] PRV = [] for item in chunks(primeriFW18, 18): PFW.append(item) for item in chunks(primeriFW19, 19): PFW.append(item) for item in chunks(primeriFW20, 20): PFW.append(item) for item in chunks(primeriFW21, 21): PFW.append(item) for item in chunks(primeriFW22, 22): PFW.append(item) for item in chunks(primeriFW23, 23): PFW.append(item) for chunk in chunks(primeriRV18, 18): PRV.append(chunk[::-1]) for chunk in chunks(primeriRV19, 19): PRV.append(chunk[::-1]) for chunk in chunks(primeriRV20, 20): PRV.append(chunk[::-1]) for chunk in chunks(primeriRV21, 21): PRV.append(chunk[::-1]) for chunk in chunks(primeriRV22, 22): PRV.append(chunk[::-1]) for chunk in chunks(primeriRV23, 23): PRV.append(chunk[::-1]) #scoatem secventele cu triplete AT si CG PFW[:] = [x for x in PFW if not ("AAA" in x and "TTT" in x)] PFW[:] = [x for x in PFW if not ("GGG" in x and "CCC" in x)] PRV[:] = [x for x in PRV if not ("AAA" in x and "TTT" in x)] PRV[:] = [x for x in PRV if not ("GGG" in x and "CCC" in x)] #verificare aliniamente #filtrare in functie de temperatura de topire (le vrem asemanatoare) tmi = input('Introduceti temperatura de topire dorita sau "all" ') hh = open("Rezultat.txt", "w") ampliconi = [] perechi_primeri = [] sys.stdout = hh if tmi == 'all': for i in PFW: for j in PRV: l1 = adn.find(i) l2 = adnc.rfind(j[::-1]) l2 = int(l2)+len(j) amplicon = adn[l1:l2] g = len(amplicon) tm1 = 2*(i.count("A")+ i.count("T")) + 4*(i.count("G")+ i.count("C")) tm = 2*(j.count("A")+ j.count("T")) + 4*(j.count("G")+ j.count("C")) for a in pairwise2.align.globalxs(i, j, -10, -10, one_alignment_only=1, score_only=1): if tm1 == tm: ampliconi.append(amplicon) print(format_alignment(*a)) print ("Ampliconul ", ampliconi.index(amplicon), "\n", "Tm = ", tm, "\n", "PFW 5'", i, " 3'\n", "PRV 5'", j, " 3' \n", "Index amplicon: ", l1, " - ", l2, "\n", "Lungime: ", g, "\n", "Amplicon: ", amplicon, "\n") for i in PFW: for j in PRV: l1 = adn.find(i) l2 = adnc.rfind(j[::-1]) l2 = int(l2)+len(j) amplicon = adn[l1:l2] g = len(amplicon) tm1 = 2*(i.count("A")+ i.count("T")) + 4*(i.count("G")+ i.count("C")) tm = 2*(j.count("A")+ j.count("T")) + 4*(j.count("G")+ j.count("C")) tmd = tm1-tm for a in pairwise2.align.globalxs(i, j, -10, -10, one_alignment_only=1, score_only=1): if 1 <= abs(tmd)<= 2: ampliconi.append(amplicon) print(format_alignment(*a)) print("Ampliconul ", ampliconi.index(amplicon), "\n", "PFW 5'", i, " 3' Tm = ", tm1, "\nPRV 5'", j, " 3' Tm = ", tm, "\n", "Index amplicon: ", l1, " - ", l2, "\n", "Lungime: ", g, "\n", "Amplicon: ", amplicon, "\n\n") else: tmi = int(tmi) for i in PFW: for j in PRV: l1 = adn.find(i) l2 = adnc.rfind(j[::-1]) l2 = int(l2)+len(j) amplicon = adn[l1:l2] g = len(amplicon) tm1 = 2*(i.count("A")+ i.count("T")) + 4*(i.count("G")+ i.count("C")) tm = 2*(j.count("A")+ j.count("T")) + 4*(j.count("G")+ j.count("C")) if tm1 == tm == tmi: ampliconi.append(amplicon) perechi_primeri.append((i,j)) for (x,y) in perechi_primeri: k=multiple_replace(y, *rep) a=pairwise2.align.localmx(x, y, 1, 0, score_only=1) med=(len(i)+len(j))/4 if a= 1.0: # grid_remove is currently missing from Tkinter! self.tk.call("grid", "remove", self) else: self.grid() Scrollbar.set(self, lo, hi) def pack(self, **kw): raise TclError("cannot use pack with this widget") def place(self, **kw): raise TclError("cannot use place with this widget") def donothing(): filewin = Toplevel(root) button = Button(filewin, text="Do nothing button") button.pack() def OpenFile(): filepath = askopenfilename() if filepath: adn = open(filepath, 'r') def Quit(): root.destroy() root = Tk() menubar = Menu(root) filemenu = Menu(menubar, tearoff=0) filemenu.add_command(label="Open", command=OpenFile) filemenu.add_separator() filemenu.add_command(label="Exit", command=Quit) menubar.add_cascade(label="File", menu=filemenu) helpmenu = Menu(menubar, tearoff=0) helpmenu.add_command(label="Help Index", command=donothing) helpmenu.add_command(label="About...", command=donothing) menubar.add_cascade(label="Help", menu=helpmenu) root.config(menu=menubar) root.columnconfigure(0, weight=1) root.columnconfigure(1, weight=1) for x in range(60): root.rowconfigure(x, weight=1) #TITLUL photo = PhotoImage(file="logo.gif") w = Label(root, image=photo) w.photo = photo w.grid(row=1,column=0, columnspan=2) Label(root, text="QPrimerDesign Tool", font = ("Calibri", 14, "bold")).grid(row=0, column=0, columnspan=2) #INDEX SECVENTA index=LabelFrame(root, text="Secventa de interes:", font = ("Calibri", 12, "bold")) index.grid(sticky=W+E+N+S, row=2, column=0, columnspan=2) index.rowconfigure(1, weight=1) index.columnconfigure(0, weight=1) index.columnconfigure(2, weight=1) data1 = IntVar() data2 = IntVar() index_stanga = Entry(index, width=10, justify=RIGHT, textvariable=data1) index_stanga.grid(sticky=W+E+N+S, padx=2, pady=2) Label(index, text="-", font=("calibri", 12, "bold")).grid(row=0, column=1, padx=2, pady=2) index_dreapta = Entry(index, width=10, justify=RIGHT, textvariable=data2) index_dreapta.grid(row=0, column=2, sticky=W+E+N+S, padx=2, pady=2) vscrollbar = AutoScrollbar(index) vscrollbar.grid(row=1, column=2, sticky=N+S) seq = Text(index, wrap=WORD, height=3, yscrollcommand=vscrollbar.set, padx=2, font=("calibri", 10)) seq.grid(row=1, column=0, columnspan=3, sticky=W+E+N+S, padx=2, pady=2) vscrollbar.config(command=seq.yview) seq.insert(END, "Secventa") adn="" x = data1.get() x = int(x) y = data2.get() y = int(y)+1 #capat cautare stanga primer forward - cu 200 nucleotide in aval: ccs = x-100 #capat cautare dreapta primer forward: ccd = x #range de cautare PFW [ccs:ccd] pfw = adn[ccs:ccd] if ccs < 0: pfw = adn[:ccd] #y este capatul din dreapta a secv de interes >> caut de la y la y+100 dr = y+100 #Secventa in aval de secventa de interes - in care cauta primerii reverse prv = adn[y:dr] #RAMA CU PRIMERI primer_frame=LabelFrame(root, text="Primeri", font=("calibri", 12, "bold")) primer_frame.grid(row=5, column=0, rowspan=12, sticky=W+E+N+S) for x in range(7): primer_frame.rowconfigure(x, weight=1) for y in range(2): primer_frame.columnconfigure(y, weight=1) primeri_fw=Label(primer_frame, text="Forward", font=("calibri", 10, "underline")) primeri_fw.grid(row=0, column=1, sticky=W+E+N+S, padx=2, pady=2) primeri_rv=Label(primer_frame, text="Reverse", font=("calibri", 10, "underline")) primeri_rv.grid(row=0, column=2, sticky=W+E+N+S, padx=2, pady=2) Label(primer_frame, text="Lungime", font=("calibri", 10)).grid(row=1, sticky=W+E+N+S, column=0, padx=5, pady=5) data3 = IntVar() data4 = IntVar() data3.set(0) # default value data4.set(0) lenght1 = Spinbox(primer_frame, values=(0,18,19,20,21,22,23), textvariable=data3) lenght1.grid(row=1, column=1, padx=2, pady=2) lenght2 = Spinbox(primer_frame, values=(0,18,19,20,21,22,23), textvariable=data4) lenght2.grid(row=1, column=2, padx=2, pady=2) lfw=lenght1.get() lfw=int(lfw) lrv=lenght1.get() lrv=int(lrv) def rand_parts(pfw, z): result = [] limita = len(pfw) for start in range (0, limita-z): end = start + z result.append(pfw[start:end]) return result #y este capatul din dreapta a secv de interes >> caut de la y la y+100 dr = y+100 #Secventa in care cauta primerii reverse prv = adn[y:dr] def multiple_replacer(*key_values): replace_dict = dict(key_values) replacement_function = lambda match: replace_dict[match.group(0)] pattern = re.compile("|".join([re.escape(k) for k, v in key_values]), re.M) return lambda string: pattern.sub(replacement_function, string) def multiple_replace(string, *key_values): return multiple_replacer(*key_values)(string) rep = (u"A", u"T"), (u"T", u"A"), (u"C", u"G"), (u"G", u"C") adnc = multiple_replace(adn, *rep) prvc = adnc[y:dr] def parts(prvc, z): res = [] lim = len(prvc) for st in range (0, lim-z): en = st + z res.append(prvc[st:en]) return res Label(primer_frame, text="Tm", font=("calibri", 10)).grid(row=2, sticky=W+E+N+S, column=0, padx=2, pady=2) variable = IntVar(primer_frame) variable1 = IntVar(primer_frame) variable.set(0) # default value temp1 = OptionMenu(primer_frame, variable, 44,46,48,50,52,54,56,58,60,62,64,66,68) temp1.grid(row=2, column=1, padx=2, pady=2) temp2 = OptionMenu(primer_frame, variable, 44,46,48,50,52,54,56,58,60,62,64,66,68) temp2.grid(row=2, column=2, padx=2, pady=2) CheckVar4 = IntVar() clamp = Checkbutton(primer_frame, text = "C/G Clamp", font=("calibri", 10), variable = CheckVar4, onvalue = 1, offvalue = 0) clamp.grid(row=3, sticky=W+E+N+S, padx=2, pady=2) def rezultat1(): filewi = Toplevel(root) vscrollbar = AutoScrollbar(filewi) vscrollbar.grid(row=1, column=2, sticky=N+S) text_rez = Text(filewi, yscrollcommand=vscrollbar.set, font=("calibri", 10)) text_rez.grid(row=0, column=0, sticky=N+S+E+W) vscrollbar.config(command=text_rez.yview) filewi.grid_rowconfigure(0, weight=1) filewi.grid_columnconfigure(0, weight=1) adn = seq.get('1.0', END) PFW = [] PRV = [] if lfw==0: for ending in ["CC", "CG", "GG", "GC"]: if not CheckVar4.get(): for a in range(18, 23): for i in parts(pfw, a): if not i.endswith(ending): PFW.append(i) elif CheckVar4.get(): for a in range(18, 23): for i in parts(pfw, a): if i.endswith(ending): PFW.append(i) elif lfw !=0: for ending in ["CC", "CG", "GG", "GC"]: if not CheckVar4.get(): for i in parts(pfw, lfw): if not i.endswith(ending): PFW.append(i) elif CheckVar4.get(): for i in parts(pfw, lfw): if i.endswith(ending): PFW.append(i) if lrv==0: for ending in ["CC", "CG", "GG", "GC"]: if not CheckVar4.get(): for a in range(18, 23): for i in parts(prvc, a): if not i.startswith(ending): PRV.append(i[::-1]) elif CheckVar4.get(): for a in range(18, 23): for i in parts(prvc, a): if not i.startswith(ending): PRV.append(i[::-1]) elif lrv !=0: for ending in ["CC", "CG", "GG", "GC"]: if not CheckVar4.get(): for i in parts(prvc, lrv): if not i.endswith(ending): PRV.append(i[::-1]) elif CheckVar4.get(): for i in parts(prvc, lrv): if i.endswith(ending): PRV.append(i[::-1]) PFW[:] = [x for x in PFW if not ("AAA" in x and "TTT" in x)] PFW[:] = [x for x in PFW if not ("GGG" in x and "CCC" in x)] PRV[:] = [x for x in PRV if not ("AAA" in x and "TTT" in x)] PRV[:] = [x for x in PRV if not ("GGG" in x and "CCC" in x)] ampliconi = [] perechi_primeri = [] lista=[] if variable==0: for i in PFW: for j in PRV: l1 = adn.find(i) l2 = adnc.rfind(j[::-1]) l2 = int(l2)+len(j) amplicon = adn[l1:l2] g = len(amplicon) tm1 = 2*(i.count("A")+ i.count("T")) + 4*(i.count("G")+ i.count("C")) tm = 2*(j.count("A")+ j.count("T")) + 4*(j.count("G")+ j.count("C")) tmd = tm1-tm if tm1 == tm: ampliconi.append(amplicon) perechi_primeri.append((i,j)) for (x,y) in perechi_primeri: k=multiple_replace(y, *rep) a=pairwise2.align.localmx(x, y, 1, 0, score_only=1) med=(len(i)+len(j))/4 if a Salut, C?nd vre?i s? mai facem un hangouts ca s? discut?m progresul ?i alte lucruri ce mai trebuie f?cute? Am f?cut un Doodle unde pute?i vota: http://doodle.com/hihpxg5a8w8qgpwe From banesiu.sever at gmail.com Fri Jun 12 14:43:02 2015 From: banesiu.sever at gmail.com (Sever Banesiu) Date: Fri, 12 Jun 2015 12:43:02 +0000 Subject: [Python-ro] =?utf-8?b?w45udMOibG5pcmUgUHlDb24gUm9tw6JuaWE=?= In-Reply-To: <14de6f784d6.acca5e7c206427.2534302510520800275@ropython.org> References: <14de6f784d6.acca5e7c206427.2534302510520800275@ropython.org> Message-ID: Salut, eu saptamana asta am fost prins cu alte chestii si nu am mai reusit sa-mi gasesc timp pt. partea organizatorica. Ar fi bine sa facem o intalnire de actualizare si sa stabilim care sunt pasii urmatori. On Fri, Jun 12, 2015 at 11:52 AM claudiu wrote: > Salut, > > > C?nd vre?i s? mai facem un hangouts ca s? discut?m progresul > ?i alte lucruri ce mai trebuie f?cute? > Am f?cut un Doodle unde pute?i vota: http://doodle.com/hihpxg5a8w8qgpwe > > _______________________________________________ > Python-ro mailing list > Python-ro at python.org > https://mail.python.org/mailman/listinfo/python-ro > -------------- next part -------------- An HTML attachment was scrubbed... URL: From pcmanticore at gmail.com Sun Jun 14 10:56:56 2015 From: pcmanticore at gmail.com (Claudiu Popa) Date: Sun, 14 Jun 2015 11:56:56 +0300 Subject: [Python-ro] =?utf-8?b?w45udMOibG5pcmUgUHlDb24gUm9tw6JuaWE=?= In-Reply-To: References: <14de6f784d6.acca5e7c206427.2534302510520800275@ropython.org> Message-ID: 2015-06-12 15:43 GMT+03:00 Sever Banesiu : > Salut, eu saptamana asta am fost prins cu alte chestii si nu am mai reusit > sa-mi gasesc timp pt. partea organizatorica. Ar fi bine sa facem o intalnire > de actualizare si sa stabilim care sunt pasii urmatori. > > On Fri, Jun 12, 2015 at 11:52 AM claudiu wrote: >> >> Salut, >> >> >> C?nd vre?i s? mai facem un hangouts ca s? discut?m progresul >> ?i alte lucruri ce mai trebuie f?cute? >> Am f?cut un Doodle unde pute?i vota: http://doodle.com/hihpxg5a8w8qgpwe >> >> _______________________________________________ >> Python-ro mailing list >> Python-ro at python.org >> https://mail.python.org/mailman/listinfo/python-ro > > > _______________________________________________ > Python-ro mailing list > Python-ro at python.org > https://mail.python.org/mailman/listinfo/python-ro > Conform rezultatelor din poll, a r?mas pe m?ine, luni 15 iunie, la ora 7 PM, atunci poate toat? lumea. Ne vedem pe hangouts. From claudiu at ropython.org Mon Jun 15 15:25:23 2015 From: claudiu at ropython.org (claudiu) Date: Mon, 15 Jun 2015 06:25:23 -0700 Subject: [Python-ro] =?utf-8?b?w45udMOibG5pcmUgUHlDb24gUm9tw6JuaWE=?= In-Reply-To: References: <14de6f784d6.acca5e7c206427.2534302510520800275@ropython.org> Message-ID: <14df76557bc.b210c19c545018.2818482152870215968@ropython.org> ---- On Sun, 14 Jun 2015 01:56:56 -0700 Claudiu Popa wrote ---- >>> Salut, >>> >>> >>> C?nd vre?i s? mai facem un hangouts ca s? discut?m progresul >>> ?i alte lucruri ce mai trebuie f?cute? >>> Am f?cut un Doodle unde pute?i vota: http://doodle.com/hihpxg5a8w8qgpwe >>> >>> _______________________________________________ >> > > >Conform rezultatelor din poll, a r?mas pe m?ine, luni 15 iunie, la ora 7 PM, >atunci poate toat? lumea. Ne vedem pe hangouts. > Ne vedem pe Hangouts (https://plus.google.com/hangouts/_/gsrmfiqhwpwgkrpoxti2dwfbc4a) la ora 7. From claudiu at ropython.org Tue Jun 16 16:50:56 2015 From: claudiu at ropython.org (claudiu) Date: Tue, 16 Jun 2015 07:50:56 -0700 Subject: [Python-ro] =?utf-8?b?w45udMOibG5pcmUgUHlDb24gUm9tw6JuaWE=?= In-Reply-To: <14df76557bc.b210c19c545018.2818482152870215968@ropython.org> References: <14de6f784d6.acca5e7c206427.2534302510520800275@ropython.org> <14df76557bc.b210c19c545018.2818482152870215968@ropython.org> Message-ID: <14dfcd4e2b1.e728aa5e49143.7865618170968684161@ropython.org> Salut, Un mic rezumat pentru cei care nu au putut s? participe ieri: * pentru c? suntem bloca?i cu crearea ONG-ului ?i pentru c? ne-ar mai lua ceva timp p?n? la finalizarea lui, ?in?nd cont ?i de pauza judec?toreasc? din timpul verii, am decis s? mut?m evenimentul pe anul viitor, la finalul lui februarie - ?nceputul lui martie. Al?i factori care au influen?at aceast? decizie ar fi faptul c? sponsorii nu se mi?c? chiar foarte repede ?i c? ar trebui s? avem deja ni?te keynote speakers anun?a?i ?nainte s? ?ncepem CFP-ul. * pentru ca s? nu ne bloc?m ?n crearea ONG-ului, mai sunt lucruri pe care le putem face ?n paralel: mapa de sponsorizare, de definit nivelele de sponsorizare, de f?cut o identitate media mai bun?, precum ?i de c?utat voluntari interesa?i s? ne ajute ?i sponsori interesa?i de conferin?a noastr?. Mai putem lucra ?i la site etc Boardurile PyCon Rom?nia sunt pline de lucruri de f?cut. ;-) * a r?mas s? ne mai ?nt?lnim peste dou? s?pt?m?ni (s?pt?m?na 29 iunie - 3 iulie) Vom folosi iar hangouts ?i doodle pentru stabilirea datei finale. /Claudiu