```
def corona(data,lenght,abstand,temperatur):
file = open('/home/rezan/Downloads/MSA_SARS2_20200329.consensus.fasta','r')
list = []
list1 = []
for i in file:
ls = i.strip()
list.append(ls)
for l in i:
list1.append(l.strip())
while '' in list1:
list1.remove('')
while '' in list:
list1.remove('')
temp = temperatur
for w in list:
if temp == 2* w[0:laenge].count('A') + 2* w[:laenge].count('T') + 4* w[0:laenge].count('G') + 4* w[0:laenge].count('C'):
print((w[0:laenge]))
corona('/home/rezan/Downloads/MSA_SARS2_20200329.consensus.fasta',20,150,60)
#Ich bekam das hier als Output:
CCGGGTGTGANCGAAAGGTA
TTCGGANGCTCGAACTGCAC
AGGCATTCAGTACGGTCGTA
TGATGGCTACCCTCTTGAGT
CACTTTGTCCGAACAACTGG
CACACTCAAAGGCNGTGCAC
TGTTGTGGCAGATGCTGTCA
GGGTGTTTTAACTGCTGTGG
GGGTGTGGTTGATTATGGTG
AATGGCCCCGATTTCAGCTA
TGCAACTGCAGAAGCTGAAC
TATTTCAGCAGCTCGGCAAG
TCTCGCAAAGGCTCTCAATG
AGTTCATGCTGGCACAGACT
AATGCTGGACAACAGGGCAA
TGATGCAGCCATGCAACGTA
GGCTAGATTCCCTAAGAGTG
TACACAATGGCAGACCTCGT
TTCATACAAACCACGCCAGG
TGCAATGCTCCAGGTTGTGA
GGTAAACCTAGACCACCACT
GACACTGTGAGTGCTTTGGT
CTATGTGATAGACGTGCCAC
CTTCACGACATTGGTAACCC
GACAGTCCATGTGAGTCTCA
GATGCGCAAACAGGTTCATC
AAAGGAGTTGCACCAGGTAC
AGGGGTACTGCTGTTATGTC
GACCCAGTCCCTACTTATTG
GAACTTCACAACTGCTCCTG
GCACAAGCTGATGAGTACGA
GTTTGGTGGACCCTCAGATT
CACTCAACATGGCAAGGAAG
CAATAGCAGTCCAGATGACC
GGGAGCCTTGAATACACCAA
GAAGCCTCGGCAAAAACGTA
#
#Ich möchte das Python mit dem 150. Element in der Liste erst anfängt die Möglichkeiten mit der Länge 20 zu printen.
Kann mir jemand dabei behilflich sein?
Danke im Voraus!#
liste→ ab einen bestimmten Index anfangen zu funktionieren
Bitte setze deinen Code in Code-Tags. Sie werden automatisch eingefügt, wenn du im "Vollständigen Editor & Vorschau" auf den </> Button drückst. Dazwischen gehört Code.
Ohne ihn ausprobiert zu haben: Ich denke nicht, dass der Code läuft. Zumindest sehe ich nirgends, dass laenge definiert wird.
Du verwendest in Coder bereits Slicing - allerdings wirkt das etwas seltsam, aber ohne zu wissen, was laenge ist, kann man nicht sage m , ob was grundsätzlich falsch ist.
Und da du ja bereits Slicing verwendest, solltest du dir dekne Frage eigentlich selbst beantworten können.
Ohne ihn ausprobiert zu haben: Ich denke nicht, dass der Code läuft. Zumindest sehe ich nirgends, dass laenge definiert wird.
Du verwendest in Coder bereits Slicing - allerdings wirkt das etwas seltsam, aber ohne zu wissen, was laenge ist, kann man nicht sage m , ob was grundsätzlich falsch ist.
Und da du ja bereits Slicing verwendest, solltest du dir dekne Frage eigentlich selbst beantworten können.
Durch die Wahl Deiner Variablenname ist der Code quasi unverständlich. i für eine Zeile, ls für eine Zeile? l für ein Zeichen? list und list1? Zum Glück wird list1 gar nicht verwendet.
Nichtsagende einbuchstabige oder generische Variablennamen sind ein deutlicher Hinweis darauf, dass man gar nicht weiß, was man da schreibt; geht auch gar nicht, weil sich das Hirn ständig verrenken muß. Warum nennst Du temperatur in temp um?
`data`, `lenght` und `abstand` werden gar nicht benutzt. `laenge` ist nirgends definiert.
Du solltest Dich auch entscheiden, ob Du englisch oder deutsch benutzt.
Dateien, die man öffnet, sollte man auch wieder schließe, am besten mit dem with-Statement.
Bei Text-Dateien sollte man immer ein Encoding angeben.
Die eigentliche Frage verstehe ich nicht, was das Python denn nun machen soll. Du willst, dass die ersten 150 Zeilen ignoriert werden? Dann überlies die ersten 150-Zeilen einfach. Oder sollen die ersten 150 Zeilen, auf die die Bedingung zutrifft, ignoriert werden?
Nichtsagende einbuchstabige oder generische Variablennamen sind ein deutlicher Hinweis darauf, dass man gar nicht weiß, was man da schreibt; geht auch gar nicht, weil sich das Hirn ständig verrenken muß. Warum nennst Du temperatur in temp um?
`data`, `lenght` und `abstand` werden gar nicht benutzt. `laenge` ist nirgends definiert.
Du solltest Dich auch entscheiden, ob Du englisch oder deutsch benutzt.
Dateien, die man öffnet, sollte man auch wieder schließe, am besten mit dem with-Statement.
Bei Text-Dateien sollte man immer ein Encoding angeben.
Code: Alles auswählen
def corona(filename, length, distance, temperature):
with open(filename, encoding='utf8') as lines:
for line in lines:
entry = line[:length]
temperature_from_entry = 2 * (entry.count('A') + entry.count('T')) + 4 * (entry.count('G') + entry.count('C'))
if temperature = temperature_from_entry:
print(entry)
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Kleine Variation mit `collections.Counter`:
Wobei das natürlich eine komische Art ist FASTA-Daten zu verarbeiten. Es wird hier nicht zwischen Zeilen unterschieden die Kommentare, Beschreibungen, oder Sequenzdaten enthalten, und es gibt keine verbindliche Zeilenlänge. Nur die Empfehlung das Zeilen nicht mehr als 80 Zeichen enthalten sollten. Wenn man da also von jeder Zeile die ersten `length` Zeichen verarbeitet, dann ist die Schrittweite zwischen den verarbeiteten Sequenzabschnitten im Grunde zufällig, weil sie davon abhängig ist wie lang die Zeilen jeweils sind. Falls die Zeilenlänge kürzer als `length` ist, dann werden zwar alle Daten verarbeitet, die Abschnitte sind aber kürzer als `length`.
Code: Alles auswählen
#!/usr/bin/env python3
from collections import Counter
from pathlib import Path
def corona(filename, length, distance, temperature):
with open(filename, encoding="utf-8") as lines:
for line in lines:
entry = line[:length]
histogram = Counter(entry)
if temperature == 2 * (histogram["A"] + histogram["T"]) + 4 * (
histogram["G"] + histogram["C"]
):
print(entry)
def main():
corona(
Path.home() / "Downloads" / "MSA_SARS2_20200329.consensus.fasta",
20,
150,
60,
)
if __name__ == "__main__":
main()
“Vir, intelligence has nothing to do with politics!” — Londo Mollari