Astuces: [Python] Calculez la valeur moyenne de la zone spécifiée avec bedgraph

Supposons que le fichier bedgraph suivant soit lu et que certains traitements ne soient effectués que dans la zone spécifiée.

example.bedgraph


chr1	10084	10104	2
chr1	10104	10124	4
chr1	10124	10164	6
chr1	10164	10184	11
chr1	10184	10204	14
chr1	10204	10224	16
chr1	10224	10244	14
chr1	10244	10264	15
chr1	10264	10284	14
chr1	10284	10304	17

Par exemple, pour calculer la valeur moyenne dans la zone, le script suivant est appliqué.

averageBedgraph.py (version corrigée)


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

"""
Calculez la valeur moyenne de la zone spécifiée à partir du fichier Bedgraph.
"""
__version__ = "1.00"
__date__ = "7 Jun 2017"

import sys

def averageBedgraph(filename, chromosome, start, end):
    """
    @function   averageBedgraph();
Calculez la valeur moyenne de la zone spécifiée à partir du fichier Bedgraph.
    @param  {string} filename :Nom du fichier d'entrée
    @param  {string} chromosome :Numéro de chromosome
    @param  {int}    start :Position de départ
    @param  {int}    end :Position finale
    """

    total = 0
    with open(filename) as lines:
        for line in lines:
            c, s, e, v = line.split()
            if c != chromosome:
                continue
            s, e, v = int(s), int(e), int(v)
            if s <= start and end <= e:
                total += (end - start) * v
            elif s <= start < e:
                total += (e - start) * v
            elif start < s and e <= end:
                total += (e - s) * v
            elif s < end <= e:
                total += (end - s) * v
            elif end < s:
                break
    print('average : %s' % (total / (end - start)))
    print('done')

if __name__ == '__main__':
    argvs = sys.argv
    argc = len(argvs)

    if (argc != 5):   # Checking input
        print("USAGE : python3 averageBedgraph.py <INPUT_FILE> <CHROMOSOME> <START> <END>")
        quit()

    averageBedgraph(str(argvs[1]),str(argvs[2]),int(argvs[3]),int(argvs[4]))
quit()

Exemple d'exécution

Calculer la valeur moyenne de la zone spécifiée de la litière


$ python3 averageBedgraph.py example.bedgraph chr1 10150 10250

Sortie standard


average : 12.74
done

C'est une méthode boueuse qui n'a pas besoin d'être mentionnée, mais si vous ne voulez pas l'assembler, veuillez l'utiliser.

Aussi, si vous avez un outil qui est bon pour le traitement tel que le bedgraph, je vous serais reconnaissant si vous pouviez m'apprendre. Il ne sert à rien de réinventer les roues ... Je vous remercie.

c'est tout. Merci beaucoup.

2017/06/09 postscript Le code qui a été publié a été corrigé. Nous tenons à exprimer notre profonde gratitude à shiracamus pour avoir apporté la correction.

Recommended Posts

Astuces: [Python] Calculez la valeur moyenne de la zone spécifiée avec bedgraph
[Python] Calculez la valeur moyenne de la valeur de pixel RVB de l'objet
Calculez le nombre total de combinaisons avec python
Calculer le coefficient de régression d'une analyse de régression simple avec python
Comparez la somme de chaque élément dans deux listes avec la valeur spécifiée en Python
Calculez des millions de chiffres dans la racine carrée de 2 avec python
Vérifier l'existence du fichier avec python
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]
Obtenez le salaire moyen d'un emploi avec des conditions spécifiées sur Indeed.com
Obtenez la valeur de retour d'un script shell externe (ls) avec python3
Préparer l'environnement d'exécution de Python3 avec Docker
Mathématiques Todai 2016 résolues avec Python
[Note] Exportez le html du site avec python.
Vérifiez la date du devoir de drapeau avec Python
Découvrez la fraction de la valeur saisie en python
Convertir le code de caractère du fichier avec Python3
[Python] Déterminez le type d'iris avec SVM
[Astuces Python] Comment récupérer plusieurs clés avec la valeur maximale du dictionnaire
Extraire le tableau des fichiers image avec OneDrive et Python
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
Apprenez Nim avec Python (dès le début de l'année).
Détruire l'expression intermédiaire de la méthode sweep avec Python
le zen de Python
Visualisez la gamme d'insertions internes et externes avec python
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Résumé du flux de base de l'apprentissage automatique avec Python
[Python & SQLite] J'ai analysé la valeur attendue d'une course avec des chevaux dans la fourchette 1x win ②
Obtenez l'état de fonctionnement de JR West avec Python
Calculer le produit des matrices avec une expression de caractère?
Obtenir la valeur d'une clé spécifique jusqu'à l'index spécifié de la liste de dictionnaires en Python
J'ai essayé de trouver l'entropie de l'image avec python
Essayez de gratter les données COVID-19 Tokyo avec Python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
L'histoire de la mise en œuvre du sujet Facebook Messenger Bot avec python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Unifier l'environnement de l'équipe de développement Python en commençant par Poetry
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
[Python] Fonctionnalisation de la formule de Heron et calcul de la surface maximale
Hériter de la bibliothèque standard pour trouver la valeur moyenne de Queue
J'ai écrit la grammaire de base de Python dans Jupyter Lab
Exécutez l'intelligence de votre propre bibliothèque python avec VScode.
Votre URL n'a pas répondu avec la valeur du paramètre de défi.
Problème WOL avec Scapy de Python3 (type de contrôle LAN)
J'ai évalué la stratégie de négociation du système boursier avec Python.
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Homologie] Comptez le nombre de trous dans les données avec Python
Réécrivez le nœud d'ajout d'enregistrement de SPSS Modeler avec Python.
[Astuces] Problèmes et solutions dans le développement de python + kivy
Estimer la posture du marqueur AR avec Python + OpenCV + drone
La vraie valeur de l'automatisation Terraform à partir d'Oracle Cloud
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Récupérez la source de la page à charger indéfiniment avec python.
Vers la retraite de Python2