News:

So anyway, Vizuina is back online (fură ceva probleme cu PHP 7/5, alea.. și oricum ați uitat)

Main Menu

Pt programatori.

Started by Furnika, February 17, 2006, 11:49:09 PM

0 Members and 1 Guest are viewing this topic.

Furnika

Am o problema si cum nu stiu programare (rudimente de pascal dar nu prea am timp sa reiau pascalul, pt ca problema ar trebui rezolvata destul de repede) poate ma ajutati voi in mod practic.
Problema e simpla:
-am un sir de baze azotate in forma:
AGTCACACTATGAGCTAGACAAACACACGGATGATGACACAGTA (pana la 2500 de baze)
Ma intereseaza sa gasesc motive de hexameri (ex ACTGCA si toate combinatiile posibile de hexameri) care apar in secventa data si de asemenea frecventa de aparitie a fiecarui hexamer. O idee ar fi (ca sa evit compararea tuturor motivelor posibile cu secventa data) sa luam primul hexamer (AGTCAC) si sa facem un slide pe toata secventa ca sa gasim o a doua/ a treia aparitie a hexamerului. Apoi luam al doilea hexamer (GTCACA) si repetam pana ajungem la sfarsitul secventei (pt ca uneori am secvente scurte, de 250 de nucleotide si nu e eficient sa cauti toate combinatiile posibile de hexameri). In final al trebui sa obtin secventa hexamerului si frecventa aparitiei in sirul de nucleotide de analizat. Un control negativ o sa fie aceesi secventa dar cu bazele shuffled si cu el o sa definesc un 'noise'.  Ce ziceti? Ma ajuta cineva? O sa va multumesc la sf articolului, in cazul in care voi gasi ce ma intereseaza si care e publicabil. :D
PS: programul trebuie sa fie suficient de rapid, pe net am gasit cateva care fac chestia asta dar au tot felul de probleme stupide si nu pot sa le folosesc. De asemenea, s-ar putea sa extind  analiza cautand pentameri in cazul in care rezultatul cu hexameri e doar noise.

stefan

http://nic-nac-project.de/~stefan/freq.c

compilare:
gcc -O3 freq.c -o freq

usage:
./freq input.txt output.txt nr_de_baze

Fişierul de input trebuie să aibă o secvenţă de baze (scrise cu litere mari) pe o singură linie; outputul va consta în mai multe linii de forma "pattern<TAB>frecvenţă", iar fişierul de output este rescris la fiecare rulare. Pt. a căuta hexameri comanda arata cam aşa:
./freq seq.txt out.txt 6

Pt. windows instalează Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw de la:
http://www.bloodshed.net/dev/devcpp.html
si după compilare rulează:
.\freq.exe seq.txt out.txt 6

P.S.: ştiu ce e ăla "hexamer", dar iniţial am scris codul doar pt. patternuri de 6 baze dupa care am vazut că e nevoie de variabilitate şi am recurs la o funcţie recursivă, denumirile variabilelor rămânând cele vechi.
Copyright (c) 2006 by Ştefan Talpalaru. All rights reserved.
http://stefantalpalaru.wordpress.com/

Ondina

hexamerii or fi tradusi cu combinari de 4(ATCG) luate cate 6??? :roll:

stefan

Aranjamente de 24 (4 * 6 adică) luate câte 6. Pt. că e valabil şi AAAAAA.
Copyright (c) 2006 by Ştefan Talpalaru. All rights reserved.
http://stefantalpalaru.wordpress.com/

Furnika

Multumesc mult Stefan! :thumbsup:
Incerc sa il compilez (acum sunt acasa pe windoze) sa vad ce rezultate obtin, sunt tare curios.

lucisandor

Quote from: stefan.\freq.exe seq.txt out.txt 6
la windows dir crt e inclus automat in path :) ;)

Furnika

Hokay...
Am analizat datele.
Am folosit secventa de interes (seq) si o alta in care bazele sunt amestecate intamplator (shuffled seq). In ambele secvente am cautat hexameri si frecventa lor de aparitie. In grafic am trecut pe o scala logaritmica frecventa de aparitie si (pt a fi mai uosr de vizualizat) numarul de hexameri care apar cu o anumita frecventa (liniile mov pt seq si liniile albastre pt shuffled seq-control). Nu am facut nici un fel de statistica deocamdata. Se vad 3 puncte (indicate de sageti) care ies din noise (linia verde).
Cei 3 hexameri care apar cu frecventa  mare sunt : TTTTTT (frecv 66) , AAAAAA (frecv 15) si  TTTTTA (11). Mai jos de frecv 10 am considerat ca e noise.
De asemenea cu frecventa 9 (in zona de noise, sau ma rog, la limita :P) am gasit o secventa (hexamer) care a fost anterior gasita prin alte metode, mai mult sau mai putin "wet" (experimental) si de aceea am ales-o ca pe un fel de control pozitiv.  Ideea este ca astfel de secvente sunt interesante pt mine dar din pacate sunt acoperite de noise :(.
Cei 3 hexameri cu frecventa mare nu ma interesaza, de fapt am inventat apa calda. Stiam de la inceput ca zona pe care o analizez e bogata in A&T 'stretches'. O sa incerc sa elimin din secventa A-T 'stretches', poate pot sa reduc zgomotul. Problema e ca o sa am o secventa mai scurta (zonele A-T sunt pe la sfarsitul secv) dar nu o sa mai am un controlul negativ de incredere (statistica poate ma ajuta aici).