Programmatische schnelle Suche von 100-1000 Short Reads auf einem öffentlichen Server und Abrufen einer Liste von Genen in der Nähe

Welche Optionen gibt es für die programmgesteuerte schnelle Suche von 100–1000 Short Reads auf einem öffentlichen Server und zum Abrufen einer Liste von Genen in der Nähe, auf denen die Reads abgebildet sind?

Eingabe: ~100-1000 kurze Lesevorgänge

Ausgabe: GFF-Liste von Genen, auf die es abbildet, oder in der Nähe von Genen

Genome UCSC beschränkt sich auf die Anzahl der Suchen und AFAICS erlaubt keine programmgesteuerte Verwendung.

Irgendwelche Ideen? Ich habe diese Frage ohne viel Glück einem anderen Forum gestellt: https://www.biostars.org/p/114124/

Ich denke, wenn Sie Ihr Skript verlangsamen und die Suchen über einen längeren Zeitraum senden, kann dies mit Blat/Blast funktionieren

Antworten (1)

Dies kann offline erfolgen und erfordert nicht zu viel Rechenleistung.

Was wirst du brauchen:

  • Ein schneller Short Read Aligner wie STAR oder sogar Bowtie (STAR ​​ist schneller)
  • Genomsequenz (Sie müssen einen Index für das Genom für Ihren Aligner erstellen)
  • Eine GTF-Anmerkungsdatei (beziehen Sie sie von GENCODE oder einem anderen Standard-Genom-Repository für Ihren interessierenden Organismus)

Entfernen Sie vor dem Alignment redundante Reads. Behalten Sie ihre Zählungen bei Bedarf bei. Richten Sie die Lesevorgänge mit einem dieser Aligner aus und erhalten Sie die Ausrichtungskoordinaten. Die Standardausgabe ist das SAM-Format für STAR und ein tabellarisches Format für bowtie (bowtie gibt auch SAM).

  • Spalte 3 von SAM zeigt den Namen der Referenzsequenz, in der das Alignment stattfand (Chromosom).
  • Spalte-4 ist Sequenzstart
  • Spalte-10 ist die Lesesequenz. Addieren Sie diese Länge zum Wert in Spalte 4, um die Stopp-Site zu erhalten.

Die Spalten sind tabulatorgetrennt

Definieren Sie nun ein Fenster, das Sie als proximal/in der Nähe definieren (sagen wir 500nt).

Jetzt müssen Sie nur noch Gene finden, die lügen ± 500 N T von Ihren Start-/Stopp-Sites. Analysieren Sie in Ihrem Referenz-GTF nach den Zeilen, die das Merkmal " Gen " haben.

Ich gebe ein Beispiel mit awk. Sie können jede Programmiersprache verwenden, mit der Sie vertraut sind. Überprüfen Sie auch das GTF-Format .

Angenommen, Sie haben eine Datei (reads.txt) aus Ihrer SAM-Ausgabe in diesem Format erstellt:

Chromosome <tab> Orientation (+/-) <tab> Start <tab> Stop

Ich gebe ein Beispiel für ein awk-Skript:

Beispiel.awk

#!/bin/gawk

BEGIN{FS=OFS="\t"}

NR==FNR{
    a[$1 FS $2][$3 FS $4] # store the co-ordinate information from your reads file
    next
}

$3=="gene" && ($4 FS $7) in a{ # quick parse for reference chromosome and orientation

    i=$4 FS $7
    for(j in a[i]){
        split(j,jj,FS) 
        if(jj[1]>=$4 && jj[2]<=$5)
            print $0";contained"

        else if($4<=jj[2]+500 || $5>=jj[1]-500)
            print $0";partial overlap/proximal"
        }
}

nenne es so:

awk -f example.awk reads.txt annotations.gtf

HINWEIS : Im obigen Skript habe ich keine Antisense-Nähe berücksichtigt. Wenn Sie dies zulassen möchten, analysieren Sie nicht zur Orientierung. Außerdem erlaubt die gawk-Version < 4.0 keine mehrdimensionalen Arrays. Installieren Sie also gawk>=4.0

Die Ausgabe ist standardmäßig ein GTF, da Sie ausgewählte Zeilen des Referenz-GTF drucken.

Wenn ich dies lokal ausführen werde, mit welchem ​​der Aligner kann ich das System als Client/Server ausführen? Ich möchte nicht, dass der Aligner 5 Minuten braucht, um die Referenz in den Speicher zu laden, und 5 Sekunden, um meine 1000 Lesevorgänge auszurichten ...
Es dauert nicht so lange, den Referenzindex zu laden. STAR verwendet einen binären Index und Bowtie verwendet einen komprimierten Burrows-Wheeler-Index. Beide sind schnell geladen. Und wenn Sie Bowtie-Papier sehen, sagen sie, dass einer der Gründe, warum Bowtie schnell ist, darin besteht, dass es den Index schnell lädt. Das Erstellen eines Index aus fasta wird jedoch einige Zeit in Anspruch nehmen
Diese Aligner wurden für Reads in der Größenordnung von ~50-200 nt entwickelt. Ich glaube jedoch nicht, dass sie bei längeren Lesevorgängen nicht funktionieren (oder suboptimal funktionieren würden). In einem solchen Fall können Sie die längeren Lesevorgänge aufteilen.
Ich führe eine Ausrichtung von ~ 1000 verschiedenen Lesevorgängen mit jeweils 50-250 nt durch, nicht "1000-bp-Lesevorgänge".
Ich lese die SSAHA-Dokumentation und es scheint in der Lage zu sein, Client/Server zu verwenden.
Sie können auch Client / Server-Dinge implementieren. Sie müssen nur eine geeignete Schnittstelle erstellen. Ich habe diese Tools verwendet und sie funktionieren gut. Wenn Sie Zeit für mehrere Jobs hintereinander sparen möchten, können Sie den Index im RAM geladen lassen (dafür müssen Sie den Quellcode ein wenig bearbeiten).