Conseils: [Python] Restaurer et extraire au hasard un tableau à partir d'un fichier fasta

Il y a des moments où vous souhaitez échantillonner au hasard un grand nombre de séquences. Cette fois, je présenterai le code à utiliser dans un tel cas.

La méthode consiste simplement à ouvrir le fichier, à sélectionner un tableau avec des nombres aléatoires et à y accéder.

Accès en sélectionnant un tableau avec des nombres aléatoires


#Obtenir un tableau
seqnum=random.randint(1,seqnumMAX)
name = linecache.getline(infn, seqnum*2-1) #Nom de la séquence
seq = linecache.getline(infn, seqnum*2)  #Tableau
#l'écriture
outfdl    =   open(outfn, 'w')
outfdl.writelines(name+seq)
outfdl.close()
linecache.clearcache() #Vider le cache

À ce stade, utilisez linecache.getline (nom du fichier d'entrée, nombre de lignes) pour lire. Cela optimisera en interne la lecture de la ligne spécifiée. La bioinformatique a tendance à gérer de gros fichiers de séquence, ce qui peut être utile.

Une extraction de restauration aléatoire peut être effectuée en bouclant autant de fois que vous le souhaitez pour acquérir ce processus.

Ce qui précède peut être résumé comme un processus approprié comme suit.

randsampleFasta.py


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

"""
Restaurez et extrayez au hasard un tableau à partir d'un fichier fasta.
"""
__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):
    """
Restaurez et extrayez au hasard un tableau à partir d'un fichier fasta.
    @param infn nom de fichier fasta à lire{string} 
    @param sortie sortie fasta nom de fichier{string} 
    @param n Nombre de tableaux à restaurer et extraire{int} 
    """

    infdl     =   open(infn, 'r')
    #Vérifiez le nombre de séquences dans le fichier d'entrée
    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')
    #Restauration et extraction aléatoires de séquences
    print('random sampling from a sequence with replacement....(2/2)')
    outfdl    =   open(outfn, 'w')
    random.seed(a='hoge', version=2)    #Réglage des semences
    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  #Arguments de ligne de commande
    argc = len(argvs) #Nombre d'arguments

    if (argc != 4):   #Vérification des arguments
        print("USAGE : python3 randsampleFasta.py <INPUT.fa> <OUTPUT.fa> <NUMBER_OF_SEQUENCES>")
        quit()

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

Exemple

Fichier à saisir

test.fa


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

Entrée sur Bash

contribution


python3 randsampleFasta.py test.fa out.fa 4

Sortie sur Bash

Sortie standard


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.

Fichier de sortie

out.fa


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

Utilisation du code

Tu es libre.

Recommended Posts

Conseils: [Python] Restaurer et extraire au hasard un tableau à partir d'un fichier fasta
Extraire tous les n éléments d'un tableau (liste) en Python et Ruby
[Python] Démarrez un fichier de commandes à partir de Python et passez des variables.
Essayez d'extraire une chaîne de caractères d'une image avec Python3
# 5 [python3] Extraire des caractères d'une chaîne de caractères
Créer un fichier deb à partir d'un package python
Extraire les lignes qui correspondent aux conditions d'un fichier texte avec python
Utilisez BeautifulSoup pour extraire un lien contenant une chaîne d'un fichier HTML
Créer un tableau C à partir d'une feuille Python> Excel
Python --Lisez les données d'un fichier de données numériques et recherchez la ligne de régression multiple.
[Python] Combiner des listes contenant des nombres en chaînes et les écrire dans un fichier de sortie
Exécutez des fichiers Python à partir de HTML en utilisant Django
Sélectionnez au hasard des éléments dans la liste (tableau) en python
Lire ligne par ligne à partir d'un fichier avec Python
Extraire des données d'une page Web avec Python
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
Passez un tableau de PHP à PYTHON et effectuez un traitement numpy pour obtenir le résultat
Faire une copie d'un fichier Google Drive à partir de Python
Python --Lire les données d'un fichier de données numériques et calculer la covariance
J'ai essayé d'exécuter python à partir d'un fichier chauve-souris
[Python débutant] Extrayez la préfecture et la ville de l'adresse (3 lignes).
Je veux échantillonner au hasard un fichier avec Python
Script Python qui crée un fichier JSON à partir d'un fichier CSV
[Python] Extraire uniquement les nombres des listes et des chaînes de caractères
Python: j'ai essayé menteur et honnête
Astuces Python et Numpy
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Extraire uniquement le son d'un instrument spécifique du fichier MIDI et en faire un fichier séparé
Récupérer une image d'une page Web et la redimensionner
Extraire le modèle du fichier EML enregistré depuis Thunderbird avec python3.7
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment échanger des éléments dans un tableau en Python et comment inverser un tableau.
Apprenez les bases et les astuces des expressions canoniques Python à partir de zéro
Python démarré: échangez le tableau de valeurs obtenu dans le résultat SQL vers le type de liste et utilisez-le dans IN d'une autre requête
Hash avec python et échapper à l'égosa d'un certain ministre
Python: créer un dictionnaire à partir d'une liste de clés et de valeurs
Python> Lire à partir d'une chaîne multiligne au lieu d'un fichier> io.StringIO ()
[Python] Comment générer une table pandas dans un fichier Excel
Tirez en accéléré à partir d'une caméra PC en utilisant Python, OpenCV
Tourner un tableau de chaînes avec une instruction for (Python3)
Extraire la valeur la plus proche d'une valeur à partir d'un élément de liste en Python
Obtenez 1000 publications dans l'ordre Python de tous les canaux Slack et rassemblez-les dans un fichier txt
Tri rapide d'un tableau en Python 3
Lire et écrire des fichiers
Créer un tableau numpy python
Écrire et lire des fichiers
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python
Comment transformer une chaîne en tableau ou un tableau en chaîne en Python
Traitez le résultat de l'exécution de Splunk en utilisant Python et enregistrez-le dans un fichier
Obtenez des données de VPS MySQL avec Python 3 et SQL Alchemy
Lisez le fichier en Python avec un chemin relatif depuis le programme
Extraire le texte du pdf [python] et lire les caractères à haute voix avec Open-Jtalk
[Python] Comment stocker un fichier csv en tant que données de tableau à une dimension
Différentes façons de créer un tableau de nombres de 1 à 10 en Python.
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
Obtenez les conditions de simulation OCTA à partir d'un fichier et enregistrez avec les pandas
Extraire des tables de base de données avec CSV [connexion ODBC de R et python]
Je suis mort en pensant qu'une variable de classe Python était une variable d'instance
Python - Obtenez le taux de bitcoin BTC / JPY à partir de bitflyer à intervalles réguliers et enregistrez-le dans un fichier
Un script qui récupère les tweets avec Python, les enregistre dans un fichier externe et effectue une analyse morphologique.