Tipps: [Python] Berechnen Sie den Durchschnittswert des angegebenen Bereichs mit Bedgraph

Angenommen, die folgende Bedgraph-Datei wird gelesen und einige Verarbeitungen werden nur in dem angegebenen Bereich ausgeführt.

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

Um beispielsweise den Durchschnittswert in dem Bereich zu berechnen, wird das folgende Skript angewendet.

averageBedgraph.py (korrigierte Version)


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

"""
Berechnen Sie den Durchschnittswert des angegebenen Bereichs aus der Bedgraph-Datei.
"""
__version__ = "1.00"
__date__ = "7 Jun 2017"

import sys

def averageBedgraph(filename, chromosome, start, end):
    """
    @function   averageBedgraph();
Berechnen Sie den Durchschnittswert des angegebenen Bereichs aus der Bedgraph-Datei.
    @param  {string} filename :Geben Sie den Dateinamen ein
    @param  {string} chromosome :Chromosomenzahl
    @param  {int}    start :Startposition
    @param  {int}    end :Endposition
    """

    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()

Ausführungsbeispiel

Berechnen Sie den Durchschnittswert des angegebenen Bereichs der Bettdatei


$ python3 averageBedgraph.py example.bedgraph chr1 10150 10250

Standardausgabe


average : 12.74
done

Es gibt nichts Besonderes zu erwähnen, aber bitte verwenden Sie es, wenn Sie Probleme beim Zusammenbau haben.

Wenn Sie ein Werkzeug haben, das sich gut verarbeiten lässt, wie z. B. Bedgraph, würde ich es begrüßen, wenn Sie mich unterrichten könnten. Es macht keinen Sinn, die Räder neu zu erfinden ... Vielen Dank.

das ist alles. Vielen Dank.

2017/06/09 Nachtrag Der Code, der veröffentlicht wurde, wurde korrigiert. Wir möchten shiracamus unseren tiefen Dank für die Korrektur aussprechen.

Recommended Posts

Tipps: [Python] Berechnen Sie den Durchschnittswert des angegebenen Bereichs mit Bedgraph
[Python] Berechnen Sie den Durchschnittswert des Pixelwerts RGB des Objekts
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Vergleichen Sie die Summe jedes Elements in zwei Listen mit dem in Python angegebenen Wert
Berechnen Sie mit Python Millionen von Stellen in der Quadratwurzel von 2
Überprüfen Sie die Existenz der Datei mit Python
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]
Holen Sie sich das durchschnittliche Gehalt eines Jobs mit bestimmten Bedingungen von Indeed.com
Ruft den Rückgabewert eines externen Shell-Skripts (ls) mit python3 ab
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
2016 Todai Mathematik mit Python gelöst
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Bestimmen Sie den Typ der Iris mit SVM
[Python-Tipps] So rufen Sie mehrere Schlüssel mit dem Maximalwert aus dem Wörterbuch ab
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
[Python Data Frame] Wenn der Wert leer ist, füllen Sie ihn mit dem Wert einer anderen Spalte.
Lerne Nim mit Python (ab Anfang des Jahres).
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
der Zen von Python
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Nehmen Sie den Wert des SwitchBot-Thermo-Hygrometers mit Raspberry Pi
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
[Python & SQLite] Ich habe den erwarteten Wert eines Rennens mit Pferden im 1x-Gewinnbereich ② analysiert
Holen Sie sich mit Python den Betriebsstatus von JR West
Berechnen Sie das Produkt von Matrizen mit einem Zeichenausdruck?
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
[Python] Herons Formelfunktionalisierung und Berechnung der maximalen Fläche
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Ihre URL hat nicht mit dem Wert des Challenge-Parameters geantwortet.
Problem WOL mit Scapy of Python3 (LAN-Steuerungstyp)
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Berühren wir die API der Netatmo Weather Station mit Python. #Python #Netatmo
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Homologie] Zählen Sie mit Python die Anzahl der Löcher in den Daten
Schreiben Sie den Datensatzadditionsknoten von SPSS Modeler mit Python neu.
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Schätzen Sie die Haltung des AR-Markers mit Python + OpenCV + Drohne
Der wahre Wert der Terraform-Automatisierung ab Oracle Cloud
Spielen Sie mit dem Passwortmechanismus von GitHub Webhook und Python
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Auf dem Weg zum Ruhestand von Python2