Ich versuche, das partielle Digest Problem zu implementieren, der Algorithmus ist in dieser pdf https://cise.ufl.edu/class/cap5515sp10/Ch04_DNA_mapping.pdf auf den Seiten 35-36 gegeben. Auf den folgenden Seiten finden Sie ein Beispiel.Partial Digest Algorithm (PDP)
Ich bin nicht in der Lage, die richtige Antwort zu bekommen.
Der Wert von X, den ich bekomme, ist [0, 10, 8, 3, 6] und dann stoppt die Rekursion mit "Nicht ok".
Kann ich den Algorithmus oder etwas anderes nicht verstehen?
width = 0
def partialDigest(L):
print "partialDigest"
global width
width = max(L)
L.remove(width)
X = [0, width]
if place(L, X):
print "Ok"
else:
print "Not ok"
def place(L, X):
print "place"
print "Width is", width
print "L is ", L
print "X is ", X
if len(L) == 0:
print "Output is: ", X
return True
y = max(L)
print "Y is", y
#L.remove(y)
d = D(y, X)
print "d is ", d
if set(d).issubset(set(L)):
print "First if"
print "D is", d
print "X before is ", X
X.append(y)
print "X after is ", X
print "L before is", L
L = removeElements(d, L)
print "L after is ", L
place(L, X)
X.remove(y)
L.extend(d)
d1 = D(abs(width-y), X)
print "d1 is ", d1
if set(d1).issubset(set(L)):
print "Second if"
print "D is", d1
print "X before is ", X
X.append(abs(width-y))
print "X after is ", X
print "L before is", L
L = removeElements(d1, L)
print "L after is ", L
place(L, X)
X.remove(abs(width-y))
L.extend(d1)
return False
def D(y, X):
diff = []
for xi in X:
diff.append(abs(y-xi))
return diff
def removeElements(d, L):
for i in L:
for j in d:
if i == j:
L.remove(i)
d.remove(i)
return L
if __name__ == "__main__":
print "Python implementation of partial digetive problem PDP on page 90."
partialDigest([2, 2, 3, 3, 4, 5, 6, 7, 8, 10])
Können Sie die erwartete korrekte Ausgabe hinzufügen? Ansonsten ist es schwierig für andere Benutzer, Ihnen zu helfen. –
@MaximilianPeters So [0, 10, 8, 3, 6] ist eine der Antworten und die andere Antwort ist [0, 10, 2, 7, 4]. Ich habe den Code funktioniert, in dem neuen Code verwende ich nicht die Funktion issubset() von Python. Wenn Sie einen besseren Einblick in diesen Algorithmus haben, lassen Sie es mich wissen, da ich neu in der Bioinformatik bin. – limitlessriver