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.