RoadrunnersGhost
Grünschnabel
Hey zusammen,
hänge gerade an einer Aufgabe ein Programm zu schreiben, dass verschiedene Sequenzen miteinander vergleicht. Ich arbeite mit Python 3.x
Zuerst habe ich eine similarity Funktion definiert:
und anschließend das Programm um die verschiedenen Sequenzen zu vergleichen:
Wenn ich das Programm jetzt mit Python starte kommt folgende Fehlermeldung:
Was bedeutet das? Ich habe similarity ja mit dem oberen Programm schon definiert. Stehe gerade etwas auf dem Schlauch.
Grüße, Road
EDIT:
Wenn ich beide Teile in ein Programm zusammenfasse, bekomme ich eine andere Fehlermeldung:
Fehlermeldung:
EDIT2:
Kann es sein, dass es an der Zeile 33
liegt? Also dass er dann in similarity(a,b) die Zahlen in der Liste, statt dem str in der Liste nimmt? Also zb similarity(1,2) statt similarity("GCGTTAC", "CTACTGC")? Und falls ja, wie kann ich das Programm dazu zu bringen letzteres zu verwenden?
EDIT3: Hab den Fehler gefunden. Habe in Zeile 33 etwas vergessen...
hänge gerade an einer Aufgabe ein Programm zu schreiben, dass verschiedene Sequenzen miteinander vergleicht. Ich arbeite mit Python 3.x
Zuerst habe ich eine similarity Funktion definiert:
Python:
def similarity(a,b):
purine=["A", "G"]
pyrimidine=["T", "C"]
if len(a) != len(b):
print("Error: both sequences must have the same length.")
return None
result = 0
for i in range(len(a)):
if a[i]==b[i]:
result=result+1
elif a[i] in purine and b[i] in purine:
result=result+0.5
elif a[i] in pyrimidine and b[i] in pyrimidine:
result=result+0.5
else:
result=result+0
return result
und anschließend das Programm um die verschiedenen Sequenzen zu vergleichen:
Python:
sequences=["ATCCGGT", "GCGTTAC", "CTACTGC", "TTGCAGT", "AGTCACC"]
# Initialize variables
highest_similarity=0
index1=0
index2=0
# Find the two most similar sequences.
# Make sure that you don't compare a sequence
# against itself!
for i in range(len(sequences)):
for j in range(i+1,5):
s=similarity(i,j)
if s > highest_similarity:
highest_similarity=s
index1=i
index2=j
print("The two sequences with the highest similarity are")
print(sequences[index1], "and", sequences[index2])
print("Their similarity is", highest_similarity)
Wenn ich das Programm jetzt mit Python starte kommt folgende Fehlermeldung:
Traceback (most recent call last):
File "C:/Users/.../sequence_similarity.py", line 14, in <module>
s=similarity(i,j)
NameError: name 'similarity' is not defined
Was bedeutet das? Ich habe similarity ja mit dem oberen Programm schon definiert. Stehe gerade etwas auf dem Schlauch.
Grüße, Road
EDIT:
Wenn ich beide Teile in ein Programm zusammenfasse, bekomme ich eine andere Fehlermeldung:
Python:
def similarity(a,b):
purine=["A", "G"]
pyrimidine=["T", "C"]
if len(a) != len(b):
print("Error: both sequences must have the same length.")
return None
result = 0
for i in range(len(a)):
if a[i]==b[i]:
result=result+1
elif a[i] in purine and b[i] in purine:
result=result+0.5
elif a[i] in pyrimidine and b[i] in pyrimidine:
result=result+0.5
else:
result=result+0
return result
# Programmanfang
sequences=["ATCCGGT", "GCGTTAC", "CTACTGC", "TTGCAGT", "AGTCACC"]
# Initialize variables
highest_similarity=0
index1=0
index2=0
# Find the two most similar sequences.
# Make sure that you don't compare a sequence
# against itself!
for i in range(len(sequences)):
for j in range(i+1,5):
similarity(i,j)
if similarity > highest_similarity:
highest_similarity=s
index1=i
index2=j
print("The two sequences with the highest similarity are")
print(sequences[index1], "and", sequences[index2])
print("Their similarity is", highest_similarity)
Fehlermeldung:
Traceback (most recent call last):
File "C:/Users/~/sequence_similarity.py", line 34, in <module>
similarity(i,j)
File "C:/Users/~/sequence_similarity.py", line 4, in similarity
if len(a) != len(b):
TypeError: object of type 'int' has no len()
EDIT2:
Kann es sein, dass es an der Zeile 33
Python:
for j in range(i+1,5):
EDIT3: Hab den Fehler gefunden. Habe in Zeile 33 etwas vergessen...
Python:
s=similarity(sequences[i],sequences[j])
Zuletzt bearbeitet: