Tipps: [Python] Stellt ein Array nach dem Zufallsprinzip wieder her und extrahiert es aus einer Fasta-Datei

Es gibt Zeiten, in denen Sie eine große Anzahl von Sequenzen zufällig abtasten möchten. Dieses Mal werde ich den Code vorstellen, der in einem solchen Fall verwendet werden soll.

Die Methode besteht einfach darin, die Datei zu öffnen, ein Array mit Zufallszahlen auszuwählen und darauf zuzugreifen.

Zugriff durch Auswahl eines Arrays mit Zufallszahlen


#Array abrufen
seqnum=random.randint(1,seqnumMAX)
name = linecache.getline(infn, seqnum*2-1) #Sequenzname
seq = linecache.getline(infn, seqnum*2)  #Array
#Schreiben
outfdl    =   open(outfn, 'w')
outfdl.writelines(name+seq)
outfdl.close()
linecache.clearcache() #Cache leeren

Verwenden Sie zu diesem Zeitpunkt `linecache.getline (Name der Eingabedatei, Anzahl der Zeilen)` `zum Lesen. Dadurch wird das Lesen der angegebenen Zeile intern optimiert. Bioinformatik neigt dazu, große Sequenzdateien zu verarbeiten, was nützlich sein kann.

Die zufällige Wiederherstellungsextraktion kann durchgeführt werden, indem so oft eine Schleife ausgeführt wird, wie Sie diesen Prozess erfassen möchten.

Das Obige kann wie folgt als geeigneter Prozess zusammengefasst werden.

randsampleFasta.py


#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

"""
Stellen Sie ein Array nach dem Zufallsprinzip wieder her und extrahieren Sie es aus einer Fasta-Datei.
"""
__author__  = "Kazuki Nakamae <[email protected]>"
__version__ = "0.00"
__date__    = "29 May 2017"

import sys
import mmap
import linecache
import random

def randsampleFasta(infn,outfn,n):
    """
Stellen Sie ein Array nach dem Zufallsprinzip wieder her und extrahieren Sie es aus einer Fasta-Datei.
    @param infn fasta Dateiname zu lesen{string} 
    @param outfn gibt den Namen der Fasta-Datei aus{string} 
    @param n Anzahl der Arrays, die wiederhergestellt und extrahiert werden sollen{int} 
    """

    infdl     =   open(infn, 'r')
    #Überprüfen Sie die Anzahl der Sequenzen in der Eingabedatei
    print('Checking how many sequences are in a FASTA format sequence file....(1/2)')
    buf = mmap.mmap(infdl.fileno(), 0, prot=mmap.PROT_READ)
    seqnumMAX= 0
    readline = buf.readline
    while readline():
        seqnumMAX += 1
    seqnumMAX = int(seqnumMAX / 2)
    infdl.close()
    print(str(seqnumMAX)+' sequences')
    #Zufällige Wiederherstellung und Extraktion von Sequenzen
    print('random sampling from a sequence with replacement....(2/2)')
    outfdl    =   open(outfn, 'w')
    random.seed(a='hoge', version=2)    #Sameneinstellung
    seqi=1
    while seqi<=n:
        seqnum=random.randint(1,seqnumMAX)
        name = linecache.getline(infn, seqnum*2-1)
        seq = linecache.getline(infn, seqnum*2)
        outfdl.writelines(name+seq)
        seqi += 1
    outfdl.close()
    linecache.clearcache() 
    print('done.')

if __name__ == '__main__':
    argvs = sys.argv  #Kommandozeilenargumente
    argc = len(argvs) #Anzahl der Argumente

    if (argc != 4):   #Argumentprüfung
        print("USAGE : python3 randsampleFasta.py <INPUT.fa> <OUTPUT.fa> <NUMBER_OF_SEQUENCES>")
        quit()

    randsampleFasta(argvs[1],argvs[2],int(argvs[3]))
quit()

Beispiel

Datei zum Eingeben

test.fa


>1
CCGTATTGGAAAGCTC
>2
AGGATTATCGGATACT
>3
ATCCGGACGGGGGGTT
>4
GACCTCGTTATCATCC
>5
AGTCAGGTTACCCGCA

Eingabe auf Bash

Eingang


python3 randsampleFasta.py test.fa out.fa 4

Ausgabe auf Bash

Standardausgabe


Checking how many sequences are in a FASTA format sequence file....(1/2)
5 sequences
random sampling from a sequence with replacement....(2/2)
done.

Ausgabedatei

out.fa


>3
ATCCGGACGGGGGGTT
>2
AGGATTATCGGATACT
>4
GACCTCGTTATCATCC
>3
ATCCGGACGGGGGGTT

Verwendung von Code

Du bist frei.

Recommended Posts

Tipps: [Python] Stellt ein Array nach dem Zufallsprinzip wieder her und extrahiert es aus einer Fasta-Datei
Extrahieren Sie alle n Elemente aus einem Array (einer Liste) in Python und Ruby
[Python] Starten Sie eine Batchdatei aus Python und übergeben Sie Variablen.
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
# 5 [python3] Extrahiert Zeichen aus einer Zeichenfolge
Erstellen Sie eine Deb-Datei aus einem Python-Paket
Extrahieren Sie mit Python Zeilen, die den Bedingungen entsprechen, aus einer Textdatei
Verwenden Sie BeautifulSoup, um einen Link mit einer Zeichenfolge aus einer HTML-Datei zu extrahieren
Erstellen Sie ein C-Array aus einer Python> Excel-Tabelle
Python - Lesen Sie Daten aus einer numerischen Datendatei und suchen Sie die multiple Regressionslinie.
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
Führen Sie Python-Dateien mit Django aus HTML aus
Wählen Sie zufällig Elemente aus der Liste (Array) in Python aus
Lesen Sie mit Python Zeile für Zeile aus der Datei
Extrahieren Sie mit Python Daten von einer Webseite
Verwendung der NUITKA-Utilities-Hinweis-Kompilierung zum einfachen Erstellen einer ausführbaren Datei aus einem Python-Skript
Übergeben Sie ein Array von PHP an PYTHON und führen Sie eine Numpy-Verarbeitung durch, um das Ergebnis zu erhalten
Erstellen Sie eine Kopie einer Google Drive-Datei aus Python
Python - Lesen Sie Daten aus einer numerischen Datendatei und berechnen Sie die Kovarianz
Ich habe versucht, Python aus einer Bat-Datei auszuführen
[Python-Anfänger] Extrahieren Sie die Präfektur und die Stadt aus der Adresse (3 Zeilen).
Ich möchte eine Datei mit Python zufällig testen
Python-Skript, das eine JSON-Datei aus einer CSV-Datei erstellt
[Python] Extrahieren Sie nur Zahlen aus Listen und Zeichenfolgen
Python: Ich habe es mit Lügner und Ehrlichkeit versucht
Python- und Numpy-Tipps
Python - Lesen Sie Daten aus einer numerischen Datendatei, um die verteilte, gemeinsam verteilte Matrix, Eigenwerte und Eigenvektoren zu finden
Extrahieren Sie nur den Klang eines bestimmten Instruments aus der MIDI-Datei und machen Sie es zu einer separaten Datei
Holen Sie sich ein Bild von einer Webseite und ändern Sie die Größe
Extrahieren Sie die Vorlage der aus Thunderbird gespeicherten EML-Datei mit python3.7
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Lernen Sie die Grundlagen und Tipps der kanonischen Python-Ausdrücke von Grund auf neu
Started Python: Tauschen Sie das im SQL-Ergebnis erhaltene Array von Werten in den Listentyp aus und verwenden Sie es in IN einer anderen Abfrage
Hasch mit Python und entkomme dem Ego eines bestimmten Ministers
Python: Erstellen Sie ein Wörterbuch aus einer Liste von Schlüsseln und Werten
Python> Aus einer mehrzeiligen Zeichenfolge anstelle einer Datei lesen> io.StringIO ()
[Python] So geben Sie eine Pandas-Tabelle in eine Excel-Datei aus
Nehmen Sie Zeitraffer von einer PC-Kamera mit Python, OpenCV auf
Drehen Sie ein Array von Zeichenfolgen mit einer for-Anweisung (Python3).
Extrahieren Sie den Wert, der einem Wert am nächsten kommt, aus einem Listenelement in Python
Holen Sie sich 1000 Beiträge in Python-Reihenfolge von allen Slack-Kanälen und fügen Sie sie in einer txt-Datei zusammen
Sortieren Sie schnell ein Array in Python 3
Dateien lesen und schreiben
Erstellen Sie ein Python-Numpy-Array
Dateien schreiben und lesen
Erstellen Sie eine Instanz einer vordefinierten Klasse aus einer Zeichenfolge in Python
So machen Sie einen String in Python zu einem Array oder ein Array zu einem String
Verarbeiten Sie das Ausführungsergebnis von Splunk mit Python und speichern Sie es in einer Datei
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Extrahieren Sie Text aus [python] pdf und lesen Sie Zeichen mit Open-Jtalk vor
[Python] Speichern einer CSV-Datei als eindimensionale Array-Daten
Verschiedene Möglichkeiten, um in Python ein Array von Zahlen von 1 bis 10 zu erstellen.
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab
Holen Sie sich OCTA-Simulationsbedingungen aus einer Datei und speichern Sie sie mit Pandas
Datenbanktabellen mit CSV extrahieren [ODBC-Verbindung von R und Python]
Ich bin gestorben, weil ich dachte, eine Python-Klassenvariable sei eine Instanzvariable
Python - Holen Sie sich in regelmäßigen Abständen die Bitcoin-Rate BTC / JPY von Bitflyer und speichern Sie sie in einer Datei
Ein Skript, das Tweets mit Python abruft, sie in einer externen Datei speichert und morphologische Analysen durchführt.