-
programik
Witam wszystkich. Mam na zaliczenie zrobic programik. No i zrobilem tylko nie wiem co zle zrobilem...
Zadanie 7.
Oblicz stopień identyczności dwóch sekwencji A i B (DNA,
RNA lub białka) w odniesieniu:
a. globalnym
b. lokalnym.
Dane wejściowe:
dwie sekwencje DNA: A i B
Wskazówki:
ad a L = 2*(liczba zgodnych jednostek)/(liczba jednostek A + liczba jednostek B)
ad. b L = (liczba zgodnych jednostek)/(liczba jednostek krótszej sekwencji)
print "Program do obliczania stopnia identycznosci","\n";
print "Wprowadz nazwe pliku z porownywana sekwencja nr1: ","\n";
$plik1=<>;
chomp $plik1;
open (SEKW, "<$plik1");
$s1='';
while ($sek1=<SEKW>) {
if ($sek1=~/^[ACTG]/i) {chomp $sek1; $s1=$s1.$sek1};
}
print "Wprowadz nazwe pliku z porownywana sekwencja nr2: ","\n";
$plik2=<>;
chomp $plik2;
open(SEKW2, "< $plik2"),"\a";
$s2='';
while ($sek2=<SEKW2>) {
if ($sek2=~/^[ACTG]/i) {chomp $sek2; $s2=$s2.$sek2};
}
#zamiana string ->array-----------------
@ts1 = split('',$s1);
$ts1=@ts1;
@ts2 = split('',$s2);
$ts2=@ts2;
#------------------- MACIERZ------------
$a{A}{A}=1;
$a{A}{C}=0;
$a{A}{T}=0;
$a{A}{G}=0;
#-------------
$a{C}{A}=0;
$a{C}{C}=1;
$a{C}{T}=0;
$a{C}{G}=0;
#-------------
$a{T}{A}=0;
$a{T}{C}=0;
$a{T}{T}=1;
$a{T}{G}=0;
#-------------
$a{G}{A}=0;
$a{G}{C}=0;
$a{G}{T}=0;
$a{G}{G}=1;
#----------FUNKCJA OBLICZAJACA----------
if ($ts1<ts2) {
$koniec = $ts1;
} else {
$koniec = $ts2;
}
$suma=0;
for($i = 0;$i <= $koniec;++$i){
$ss1 = $ts1[$i];
$ss2 = $ts2[$i];
$suma = $suma+$a{$ss1}{$ss2};
};
print'SUMA:',"\t",$suma,"\n";
$global=(2*$suma)/($ts1+$ts2);
print'Stopien podobienstwa w odniesieniu globalnym wynosi: ',$global,"\n";
$lokal=$suma/$koniec;
print 'Stopien podobienstwa w odniesieniu lokalnym wynosi: ',$lokal,"\n";
niestety program nie działa...
Prosze o pomoc to bardzo wazne dla mnie
Ostatnio edytowane przez pawelek4322 : 01-31-2012 - 16:40
Zasady Postowania
- Nie możesz zakładać nowych tematów
- Nie możesz pisać wiadomości
- Nie możesz dodawać załączników
- Nie możesz edytować swoich postów
-
Forum Rules