ich habe ein gff file (eine textdatei in der Bioinformatik) und möchte diese mit einem Perl Skript erstellen da es in einem bestimmten Schema vorliegt und es lange dauert es per Hand zu erstellen. Die Zeilen sehen so aus:
Also im Prinzip bekomme ich die Regionen für meine einzelnen Motive (motif_small_a) durch ein anderes script. Und die letzte Splate verändert sich fortlaufend (ID wird hochgezählt)
Vielleicht hat jemand eine Idee wie man das in Perl realisieren kann? Wäre für alles dankbar.
Also im Prinzip bekomme ich die Regionen für meine einzelnen
Motive (motif_small_a) durch ein anderes script. Und die
letzte Splate verändert sich fortlaufend (ID wird hochgezählt)
Vielleicht hat jemand eine Idee wie man das in Perl
realisieren kann?
Du liest die Daten aus der Ausgabe des anderen Scripts aus, zählst eine Counter hoch, und schreibst die gewünschte Ausgabe in eine Datei.
im Prinzip fehlt mir gerade die Idee wie ich meine einzelnen Spalten erstelle. An sich wäre es ja sinnvoll wenn der user den Inhalt übers Terminal eingeben kann (da es nicht immer der gleiche Inhalt sein wird). Die Begrenzung müsste ja dann durch die Ausgabe des anderen scripts und des counters gegeben sein…
ich weiß nicht was eine cvs-Datei ist, aber zwischen den
einzelnen Spalten muss ein tab stehen
eine csv = Comma Separated Values
also eine Textdatei, wo die einzelnen Felder (Spalten) durch Komma, Semikolon, Doppelpunkt oder sonst ein Zeichen getrennt sind. Kann auch ein Tabulator sein
Also: Ein gff file besteht aus 9 spalten. wenn du genau hinsiehst kannst du sie erkennen. Die punkte sind auch jeder eine Spalte für sich (kennzeichnen ob die Region codiert ist oder nicht). Also hab ich mein NC_010109.1 NTRFinder motif_small_b 790 800 . . . ID=NTR-a1:stuck_out_tongue_winking_eye:arent=NTR-a;Name=motif_small_b
Ich weiß halt nicht wie ich die einzelnen Spalten erstellen soll da sich einige Spalten je nach Benutzer ändert. Das heißt sie müssen übers Termnal eingegeben werden
also sind die Values mit einem Leerzeichen getrennt!
Das letzte Feld besteht aber aus einem komplexen Eintrag, der durch „;“ getrennt ist.
Es wäre hilfreich, wenn Du mal genau beschreiben könntest, was vorliegt und was geändert werden soll.
Also eine vorhandene Datenzeile und dann was geändert werden soll und wie es dann aussieht!!
Inwiefern geändert? Ich möchte einfach ein Skript schreiben das mir genau so eine Datei erstellt. Es ist sehr zeitaufwendig das file per Hand zu erstellen (hat meistens an die 100 zeilen), daher wäre es schön wenn man ein script hätte das die einzelnen Sachen einliest (am besten vom user über die shell eingegeben) und die Spalten erstellt. Da sich in den Spalten selber ja nichts ändert (außer in der letzten) sollte es doch gehn?
die Felder: feature, start, end und group ändern sich.
Die anderen Felder können vorbelegt werden.
group kann, so wie es aussieht, generiert werden.
Wenn die Eingaben fortlaufend erfolgen, dann muss für den group-eintrag vorher die Datei geöffnet und die Anzahl der Einträge ermittelt werden und zählst eins hoch.
Mit STDIN lässt Du also feature, start und end eingeben und baust die Datenzeile zusammen indem Du die einzelnen Values mit TAB ( „\t“ ) trennst und fügst die Zeile der Datei an.
Die Dateneingabe auf der Konsole ist aber nicht gerade komfortabel )
Ich habe halt noch ein anderes Script das mir für die einzelnen Varianten meines Motivs (also small_a, small_b) und so weiter die exakten Positionen in meiner Sequenz bestimmt. Das gibt mir aber nur die Anfangsposition d.h. ich müsste Perl noch sagen: zähle zu jeder Position (z.B) „10“ hoch und nimm das als Ende des Motivs.
Bei den Modulen muss ich erstmal durchsehen, aber danke für den Tip.
ich habe ein gff file (eine textdatei in der Bioinformatik)
und möchte diese mit einem Perl Skript erstellen da es in
einem bestimmten Schema vorliegt und es lange dauert es per
Hand zu erstellen. Die Zeilen sehen so aus:
…
Vielleicht hat jemand eine Idee wie man das in Perl
realisieren kann? Wäre für alles dankbar.
Deine Frage ist nicht zu beantworten, weil überhaupt
nicht klar ist, *was* genau aus dem vorherigen Skript
*wie* ankommt und nach welcher *Regel* dann die
folgende Spalte durch das fragliche Skript erzeugt
werden soll.
Und was *genau* soll denn über die Konsole eingegeben
werden - um dann *welche Spalte* zu modifizieren?
*was* genau aus dem vorherigen Skript *wie* ankommt
aus dem vorherigen Skript bekomme ich die exakten Positionen der Motife (also zum Beispiel small_motif_a 805, 903, 1005) das sind aber nur die Anfangspositionen und die Motife sind 11 bp lang. Also wäre zum Beispiel eine Variante 805 bis 815
Jetzt wäre es schön wenn das Skipt um die Spalte zu erstellen die Ausgabe einlesen könnte und damit dann die Spalten 3,4,5 erzeugen könnte. Also den Namen der Variante (small_motif_a) die Anfangsposition und die Endposition. Die Positionen sind in dem gff file aufsteigend sortiert. Also vom Anfang der Sequenz zum Ende hin. Sieht man auch in dem Beispiel das ich eingefügt hatte.
Die Spalte 1 bezieht sich auf die Referenzsequenz und muss von dem user eingegeben werden, also vermutlich über die Konsole. Spalte 2 bezieht sich auf die Quelle der Daten (Programm, NCBI,…) also muss auch vom user eingegeben werden.3,4,5 hatte ich schon erklärt… Spalte 6,7,8 geben an ob der strand kodiert ist oder nicht- muss eingegeben werden. Spalte 9 ist mit am kompliziertesten da die ID mit hochgezählt werden muss und der Name sich auf die Variante in Spalte 3 bezieht.
Ich dachte jetzt wenn ich dieses Sachen über das Terminal eingeben lasse könnte das Skript diese Spalten selber erstellen. Es ändern sich ja nur Spalte 3,4,5 und 9. Der Rest bleibt ja gleich…