Sequenzprobleme

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ArneTUB
User
Beiträge: 1
Registriert: Donnerstag 20. Juni 2024, 12:54

Hallo,

ich stehe in meiner Abschlussarbeit vor dem Problem, dass ich zwei DNA Sequenzen habe. Eine forward Sequenz und eine Reverse. Die forward fängt praktisch vorne an einem Punkt in der DNA an und geht bis zu einem Bestimmten Punkt von links nach rechts. Die reverse fängt weiter hinten an und geht von rechts nach links. Beide Sequenzen überlappen sich zu einem gewissen Teil sollen so zusammengefügt werden, dass am Ende eine lange Sequenz rauskommt. Mit dem Anfang aus der forward Sequenz, dem gemeinsamen Teil und dem Ende der reverse Sequenz. Die reverse Sequenz muss dafür erstmal in die komplementärsequenz umgewandelt werden. Dann habe ich bio.python packages genutzt, um ein alignment durchzuführen. Dies hat auch funktioniert, aber da bekomme ich ja erstmal nur das Alignment und nicht nur die komplette Buchstabenabfolge. Und hier kommt das Problem: Ich bekomme es seit Tagen nicht hin, dass er mir die Sequenzen zu einer großen Sequenz zusammenfügt. Immer wenn ich irgendeine Lösung habe, nimmt er nicht die kompletten beiden Sequenzen und ich weiß nicht woran das liegt. Möglicherweise weil beide Sequenzen unterschiedlich lang sind und unterschiedliche Start und Endpunkte haben? Ich hab alles probiert, was mein beschränktes Können hergegeben hat und hab auf diversen Python Seiten nachgeschaut und sogar probiert mir von Chat-GPT helfen zu lassen. Aber jetzt bin ich an einem Punkt wo ich nicht weiter weiß. Eventuell habt ihr eine Lösung dafür. Ich bitte um Hilfe.

Danke und herzliche Grüße
Arne

Hier mein Code:

from Bio import SeqIO
from Bio.Align import PairwiseAligner

# Funktion zum Einlesen der FASTA-Dateien
def read_fasta(file_path):
with open(file_path, "r") as file:
return list(SeqIO.parse(file, "fasta"))

# Pfade zu den Dateien
forward_file_path = "Pfad"
reverse_file_path = "Pfad"

# Sequenzen einlesen
forward_sequences = read_fasta(forward_file_path)
reverse_sequences = read_fasta(reverse_file_path)

# Annahme: Wir nehmen die erste Sequenz in jeder Datei (falls mehrere vorhanden sind)
forward_seq = forward_sequences[0].seq
reverse_seq = reverse_sequences[0].seq

# Reverse Komplement der reverse Sequenz
reverse_complement_seq = reverse_seq.reverse_complement()

# PairwiseAligner verwenden
aligner = PairwiseAligner()
alignments = aligner.align(forward_seq, reverse_complement_seq)

# Bestes Alignment anzeigen
best_alignment = alignments[0]
print(best_alignment)

# Funktion zur Erstellung der Gesamtsequenz
def create_combined_sequence(alignment):
combined_seq = []
target_seq = alignment.target
query_seq = alignment.query
target_len = len(target_seq)
query_len = len(query_seq)

# Iteriere über die gesamte Länge beider Sequenzen
max_len = max(target_len, query_len)
for i in range(max_len):
t_base = target_seq if i < target_len else '-'
q_base = query_seq if i < query_len else '-'
if t_base == '-':
combined_seq.append(q_base)
elif q_base == '-':
combined_seq.append(t_base)
else:
combined_seq.append(t_base)

return ''.join(combined_seq)

# Gesamtsequenz erzeugen
combined_sequence = create_combined_sequence(best_alignment)
print(f"Gesamtsequenz: {combined_sequence}")

# Pfad zur Speicherdatei
alignment_file_path = "Pfad"

# Nur das beste Alignment und die Gesamtsequenz in der Datei speichern
with open(alignment_file_path, "w") as file:
file.write("Bestes Alignment:\n")
file.write(str(best_alignment) + "\n\n")
file.write("Gesamtsequenz:\n")
file.write(combined_sequence + "\n")

print(f"Das beste Alignment und die Gesamtsequenz wurden in {alignment_file_path} gespeichert.")
Antworten