biologischer Datensatz sinnvoll einlesen
Verfasst: Donnerstag 30. Dezember 2021, 22:46
Hallo,
ich versuche mich schon seit einigen Wochen daran einen biologischen Datensatz einzulesen, um ihn danach weiter auswerten zu können. Aber ich komme gerade nicht weiter. Es handelt sich um eine csv-Datei mit folgenden Daten:
Genname Experiment1:Wert Experiment1:signifikant Experiment2:Wert Experiment2:signifikant
zzzz 0,11123 0 0,22233 1
ssss 0,66666 1 0,11127 1
Es ist nur ein Beispiel des Datensatzes. Rechts würden sich die Einträge bis zu Experiment 16 fortsetzen und insgesamt 8000 Gene(Zeile) wurden betrachtet. Meine Idee war nun, einzelne Dateien zu erstellen, wo für jedes Experiment nur noch die signifikanten Gene drin stehen(also hier Spalte 3 oder 5 mit dem Wert"1").
Meine erste Idee war, alles als Dictionary einzulesen. Der Genname ist der Key und die Experimente wollte ich als Liste im Value abspeichern. Ist dieser Ansatz überhaupt sinnvoll, um damit weiter zu arbeiten? Wenn ich nach dem Wert "1" filtern möchte, bekomme ich nur einen Boolean zurück. Aber eigentlich will ich ja nur die Zeilen ausgegeben haben, wo die 1 drin steht. Sollte ich da eher eine Funktion schreiben? Und in der Ausgabedatei steht nur eine einzelne "1".
ziel = open("Ziel.txt","w")
with open ('ProteinGroups_Contrasts_1sheet2.csv')as csvdatei:
object = csv.reader(csvdatei, delimiter=',')
header=next(object)
print(header)
for zeile in object:
zeilen = (
(zeile[0], zeile[int(1)]),
(zeile[0], "1" in zeile[(2)])
)
data = {}
for zeile in zeilen:
data.setdefault(zeile[0],[]).append(zeile[1])
for zeile in zeilen:
if "1" in zeile:
ziel.write(data)
print (data)
ziel.close()
Nachdem ich da nicht weitergekommen bin, habe ich es anders versucht. Könnte mir hier jemand verraten, warum mir nur die letzte Zeile meiner Ausgangsdatei ausgegeben wird?
import csv
with open ('ProteinGroups_Contrasts_1sheet2.csv') as csvdatei:
object = csv.reader(csvdatei, delimiter=',')
header=next(object)
for zeile in object:
input={
header[0]: zeile[0],
header[1]: zeile[1],
header[2]: zeile[2],
header[3]: zeile[3],
header[4]: zeile[4],
header[5]: zeile[5],
header[6]: zeile[6],
header[7]: zeile[7],
header[8]: zeile[8],
header[9]: zeile[9],
header[10]: zeile[10],
header[11]: zeile[11],
header[12]: zeile[12], }
print(input)
Ich habe noch nicht so viele Erfahrungen mit Python. Möchte aber gerne mehr damit machen. Habt ihr vielleicht ein paar Tipps, wie ich an mein Problem heran gehen kann.
Ich Danke schon mal im Vorraus.
ich versuche mich schon seit einigen Wochen daran einen biologischen Datensatz einzulesen, um ihn danach weiter auswerten zu können. Aber ich komme gerade nicht weiter. Es handelt sich um eine csv-Datei mit folgenden Daten:
Genname Experiment1:Wert Experiment1:signifikant Experiment2:Wert Experiment2:signifikant
zzzz 0,11123 0 0,22233 1
ssss 0,66666 1 0,11127 1
Es ist nur ein Beispiel des Datensatzes. Rechts würden sich die Einträge bis zu Experiment 16 fortsetzen und insgesamt 8000 Gene(Zeile) wurden betrachtet. Meine Idee war nun, einzelne Dateien zu erstellen, wo für jedes Experiment nur noch die signifikanten Gene drin stehen(also hier Spalte 3 oder 5 mit dem Wert"1").
Meine erste Idee war, alles als Dictionary einzulesen. Der Genname ist der Key und die Experimente wollte ich als Liste im Value abspeichern. Ist dieser Ansatz überhaupt sinnvoll, um damit weiter zu arbeiten? Wenn ich nach dem Wert "1" filtern möchte, bekomme ich nur einen Boolean zurück. Aber eigentlich will ich ja nur die Zeilen ausgegeben haben, wo die 1 drin steht. Sollte ich da eher eine Funktion schreiben? Und in der Ausgabedatei steht nur eine einzelne "1".
ziel = open("Ziel.txt","w")
with open ('ProteinGroups_Contrasts_1sheet2.csv')as csvdatei:
object = csv.reader(csvdatei, delimiter=',')
header=next(object)
print(header)
for zeile in object:
zeilen = (
(zeile[0], zeile[int(1)]),
(zeile[0], "1" in zeile[(2)])
)
data = {}
for zeile in zeilen:
data.setdefault(zeile[0],[]).append(zeile[1])
for zeile in zeilen:
if "1" in zeile:
ziel.write(data)
print (data)
ziel.close()
Nachdem ich da nicht weitergekommen bin, habe ich es anders versucht. Könnte mir hier jemand verraten, warum mir nur die letzte Zeile meiner Ausgangsdatei ausgegeben wird?
import csv
with open ('ProteinGroups_Contrasts_1sheet2.csv') as csvdatei:
object = csv.reader(csvdatei, delimiter=',')
header=next(object)
for zeile in object:
input={
header[0]: zeile[0],
header[1]: zeile[1],
header[2]: zeile[2],
header[3]: zeile[3],
header[4]: zeile[4],
header[5]: zeile[5],
header[6]: zeile[6],
header[7]: zeile[7],
header[8]: zeile[8],
header[9]: zeile[9],
header[10]: zeile[10],
header[11]: zeile[11],
header[12]: zeile[12], }
print(input)
Ich habe noch nicht so viele Erfahrungen mit Python. Möchte aber gerne mehr damit machen. Habt ihr vielleicht ein paar Tipps, wie ich an mein Problem heran gehen kann.
Ich Danke schon mal im Vorraus.