staging.inyokaproject.org

Für diese Funktion musst du eingeloggt sein.

awk und verschiedene Variablen

Status: Ungelöst | Ubuntu-Version: Ubuntu 16.04 (Xenial Xerus)
Antworten |

oxidizer

Anmeldungsdatum:
29. Januar 2018

Beiträge: 9

Hallo zusammen

Ich hoffe ich kann euch erklären, vor welchem Problem ich stehe.

Ich habe ein Gen, das startet im Genom bei der Position 100 Basenpaare und endet bei 150 Basenpaare. Es ist somit 50 Basenpaare gross. Ich habe ein Genome sequenziert und ich habe an der Stelle im Genom von 95 bis 170 ein Loch (Deletion, es liegen keine Basenpaare vor).

Meine Aussage soll sein, x Basenpaare des Gens abgedeckt oder, wie in diesem Fall, nicht abgedeckt sind.

Wenn:

a=100 (Startposition des Gens) b=150 (Endposition des Gens) c=95 (Startposition der Deletion) d=170 (Endposition der Deletion)

dann würde sich ja folgende Abfrage stellen:

wenn c>a dann c=Var1 ansonsten a=Var1

wenn d>b dann b=Var2 ansonsten d=var2

Var2-Var1=x

Das ganze würde ich gerne mit awk realisieren, weil die Zahlen in eine Art Tabelle stehen.

Kann mir da einer helfen? ich komme mit der 2fach "wenn dann" Abfrage nicht zurecht.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Unter der Annahme, dass a=$1, b=$2, c=$3 und d=$4 ist:

$ cat data.txt 
100 150 95 170
100 150 110 170
100 150 95 125
100 150 110 125
$ awk '{gds= $1>=$3 ? $1 : $3; gde= $2<=$4 ? $2 : $4; print gde - gds " Basenpaare gelöscht"}' data.txt 
50 Basenpaare gelöscht
40 Basenpaare gelöscht
25 Basenpaare gelöscht
15 Basenpaare gelöscht 

oxidizer

(Themenstarter)

Anmeldungsdatum:
29. Januar 2018

Beiträge: 9

Super, vielen Dank. Genau das hab ich gesucht. 😀

Antworten |