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