Mercurial > repos > yating-l > rename_tracks
comparison rename_tracks.py @ 1:75d9357a0a53 draft
planemo upload commit 58057cff13206fae66c938464c052f416047c1b3-dirty
author | yating-l |
---|---|
date | Mon, 25 Jun 2018 13:12:47 -0400 |
parents | dd6d3b009659 |
children |
comparison
equal
deleted
inserted
replaced
0:dd6d3b009659 | 1:75d9357a0a53 |
---|---|
4 Rename the custom evidence tracks so that the tracks use the same sequence names as the renamed reference | 4 Rename the custom evidence tracks so that the tracks use the same sequence names as the renamed reference |
5 """ | 5 """ |
6 import sys | 6 import sys |
7 import csv | 7 import csv |
8 import subprocess | 8 import subprocess |
9 import tempfile | |
9 | 10 |
10 def rename_interval(inputFile, nameDict, renamedFile): | 11 def rename_interval(inputFile, nameDict, renamedFile): |
11 writer = open(renamedFile, 'w') | 12 writer = open(renamedFile, 'w') |
12 with open(inputFile, 'r') as f: | 13 with open(inputFile, 'r') as f: |
13 lines = f.readlines() | 14 lines = f.readlines() |
27 array_call.append('-e') | 28 array_call.append('-e') |
28 array_call.append(substitute) | 29 array_call.append(substitute) |
29 reheader = subprocess.Popen(array_call, stdin=header.stdout, stdout=subprocess.PIPE) | 30 reheader = subprocess.Popen(array_call, stdin=header.stdout, stdout=subprocess.PIPE) |
30 out = open(renamedFile, 'w') | 31 out = open(renamedFile, 'w') |
31 subprocess.Popen(['samtools', 'reheader', '-', inputFile], stdin=reheader.stdout, stdout=out) | 32 subprocess.Popen(['samtools', 'reheader', '-', inputFile], stdin=reheader.stdout, stdout=out) |
33 | |
34 def rename_bigwig(inputFile, renamedReference, nameDict, renamedFile): | |
35 bedGraphFile = tempfile.NamedTemporaryFile(bufsize=0) | |
36 chrom_sizes = tempfile.NamedTemporaryFile(bufsize=0) | |
37 sorted_bedGraphFile = tempfile.NamedTemporaryFile(bufsize=0) | |
38 renamed_sorted_bedGraphFile = tempfile.NamedTemporaryFile(bufsize=0) | |
39 | |
40 subprocess.call(['bigWigToBedGraph', inputFile, bedGraphFile.name]) | |
41 subprocess.call(['faSize', '-detailed', '-tab', renamedReference], stdout=chrom_sizes) | |
42 subprocess.call(['sort', '-k1,1', '-k2,2n', bedGraphFile.name], stdout=sorted_bedGraphFile) | |
43 rename_interval(sorted_bedGraphFile.name, nameDict, renamed_sorted_bedGraphFile.name) | |
44 subprocess.call(['bedGraphToBigWig', renamed_sorted_bedGraphFile.name, chrom_sizes.name, renamedFile]) | |
32 | 45 |
33 def getNameDict(nameMapping): | 46 def getNameDict(nameMapping): |
34 nameDict = {} | 47 nameDict = {} |
35 with open(nameMapping, 'r') as f: | 48 with open(nameMapping, 'r') as f: |
36 reader = csv.reader(f) | 49 reader = csv.reader(f) |
46 nameDict = getNameDict(nameMapping) | 59 nameDict = getNameDict(nameMapping) |
47 if inputFormat == "bed" or inputFormat == "gff3" or inputFormat == "gtf": | 60 if inputFormat == "bed" or inputFormat == "gff3" or inputFormat == "gtf": |
48 rename_interval(inputFile, nameDict, outputfile) | 61 rename_interval(inputFile, nameDict, outputfile) |
49 elif inputFormat == "bam": | 62 elif inputFormat == "bam": |
50 rename_bam(inputFile, nameDict, outputfile) | 63 rename_bam(inputFile, nameDict, outputfile) |
64 elif inputFormat == "bigwig": | |
65 renamedReference = sys.argv[5] | |
66 rename_bigwig(inputFile, renamedReference, nameDict, outputfile) | |
51 | 67 |
52 if __name__ == "__main__": | 68 if __name__ == "__main__": |
53 main() | 69 main() |