0
|
1 #!/usr/bin/env python
|
|
2 # -*- coding: utf-8 -*-
|
|
3
|
|
4 import sys
|
|
5 import os
|
|
6 from read_file import *
|
|
7 from read_s_file import *
|
|
8
|
|
9 type_input = sys.argv[1]
|
|
10 seq_file = sys.argv[2]
|
|
11 ref_file = sys.argv[3]
|
|
12 shift = sys.argv[4]
|
|
13 length = sys.argv[5]
|
|
14 map_type = sys.argv[6]
|
|
15 output_file = sys.argv[7]
|
|
16
|
|
17
|
|
18 if map_type!="default":
|
|
19 s = ""
|
|
20 s = s+"-v "+sys.argv[8]
|
|
21 s = s+" -5 "+sys.argv[9]
|
|
22 s = s+" -3 "+sys.argv[10]
|
|
23 s = s+" -k "+sys.argv[11]
|
|
24 if sys.argv[12]:
|
|
25 s = s+" -a"
|
|
26 if int(sys.argv[13])>=1:
|
|
27 s = s+" -m "+sys.argv[13]
|
|
28 if sys.argv[14]:
|
|
29 s = s+" --best --strata "
|
|
30
|
|
31 else:
|
|
32 s = "-v 3 -a --best --strata "
|
|
33
|
|
34 ospath = os.path.realpath(sys.argv[0])
|
|
35 ost = ospath.split('/')
|
|
36 syspath = ""
|
|
37 for i in range(len(ost)-1):
|
|
38 syspath = syspath+ost[i].strip()
|
|
39 syspath = syspath+'/'
|
|
40
|
|
41 os.system("bowtie-build -f "+ref_file+" "+syspath+"ref > "+syspath+"log.txt")
|
|
42
|
|
43 os.system("cp "+seq_file+" "+syspath+"seq0.fa")
|
|
44
|
|
45 if type_input == "fasta":
|
|
46 tp = 'fasta'
|
|
47 if type_input == "fastq":
|
|
48 tp = 'fastq'
|
|
49
|
|
50 k = 0
|
|
51 print(type_input)
|
|
52 while(True):
|
|
53 if type_input == "fasta":
|
|
54 os.system("bowtie "+s+"-f "+syspath+"ref"+" "+syspath+"seq"+str(k)+".fa --quiet -S > "+syspath+"map"+str(k)+".sam")
|
|
55 if type_input == "fastq":
|
|
56 os.system("bowtie "+s+"-q "+syspath+"ref"+" "+syspath+"seq"+str(k)+".fa --quiet -S > "+syspath+"map"+str(k)+".sam")
|
|
57 os.system("samtools view -Sb -F 0xfff "+syspath+"map"+str(k)+".sam > "+syspath+"mapped"+str(k)+".bam 2>"+syspath+"log.txt") #get mapped reads
|
|
58 os.system("samtools view -Sb -f 0x4 "+syspath+"map"+str(k)+".sam > "+syspath+"umapped"+str(k)+".bam 2>"+syspath+"log.txt") #get unmapped reads
|
|
59 os.system("samtools view -Sb -f 0x10 "+syspath+"map"+str(k)+".sam > "+syspath+"rmapped"+str(k)+".bam 2>"+syspath+"log.txt") #get reversed mapped reads
|
|
60 os.system("samtools merge -f "+syspath+"unmapped"+str(k)+".bam "+syspath+"umapped"+str(k)+".bam "+syspath+"rmapped"+str(k)+".bam") #get reversed mapped reads
|
|
61 os.system("samtools view -h -o "+syspath+"unmapped"+str(k)+".sam "+syspath+"unmapped"+str(k)+".bam") #get reversed mapped reads
|
|
62 if k>0:
|
|
63 os.system("samtools view -h -o "+syspath+"mapped"+str(k)+".sam "+syspath+"mapped"+str(k)+".bam") #get reversed mapped reads
|
|
64 os.system("cut -f 1 "+syspath+"unmapped"+str(k)+".sam > "+syspath+"unmapped"+str(k)+".txt")
|
|
65 os.system("cut -f 1 "+syspath+"mapped"+str(k)+".sam > "+syspath+"mapped"+str(k)+".txt")
|
|
66 os.system("python "+syspath+"remove_map.py "+syspath+"unmapped"+str(k)+".txt "+syspath+"mapped"+str(k)+".txt "+syspath+"runmapped"+str(k)+".txt")
|
|
67 os.system("rm "+syspath+"mapped"+str(k)+".sam")
|
|
68 os.system("rm "+syspath+"mapped"+str(k)+".txt")
|
|
69 os.system("rm "+syspath+"unmapped"+str(k)+".txt")
|
|
70 else:
|
|
71 os.system("cut -f 1 "+syspath+"unmapped"+str(k)+".sam > "+syspath+"runmapped"+str(k)+".txt")
|
|
72
|
|
73 os.system("rm "+syspath+"unmapped"+str(k)+".bam")
|
|
74 os.system("rm "+syspath+"umapped"+str(k)+".bam")
|
|
75 os.system("rm "+syspath+"rmapped"+str(k)+".bam")
|
|
76 os.system("python "+syspath+"seq_track.py "+syspath+"runmapped"+str(k)+".txt "+syspath+"seq"+str(k)+".fa "+syspath+"unmap_seq"+str(k)+".fa "+tp) #get unmapped sequence
|
|
77 os.system("python "+syspath+"truncate.py "+syspath+"unmap_seq"+str(k)+".fa "+shift+" "+syspath+"seq"+str(k+1)+".fa "+length) #truncate unmapped sequence
|
|
78 os.system("rm "+syspath+"seq"+str(k)+".fa") #Remove sequences being mapped
|
|
79 os.system("rm "+syspath+"map"+str(k)+".sam") #Remove mapping file
|
|
80 os.system("rm "+syspath+"unmap_seq"+str(k)+".fa") #Remove unmapped sequnce
|
|
81 os.system("rm "+syspath+"runmapped"+str(k)+".txt")
|
|
82 os.system("rm "+syspath+"unmapped"+str(k)+".sam")
|
|
83
|
|
84 os.system("wc -l "+syspath+"seq"+str(k+1)+".fa > "+syspath+"count"+str(k+1)+".txt")
|
|
85 c = read_sp_file(syspath+"count"+str(k+1)+".txt")
|
|
86 if c[0][0] == '0': #If no reads is in the sequence file, stop
|
|
87 os.system("rm "+syspath+"count"+str(k+1)+".txt")
|
|
88 os.system("rm "+syspath+"seq"+str(k+1)+".fa")
|
|
89 break
|
|
90 os.system("rm "+syspath+"count"+str(k+1)+".txt")
|
|
91 k = k+1
|
|
92
|
|
93 ss = ""
|
|
94 for i in range(0,k+1):
|
|
95 ss = ss+" "+syspath+"mapped"+str(i)+".bam"
|
|
96
|
|
97
|
|
98 os.system("samtools merge -f "+output_file+" "+ss)
|
|
99 #print("samtools merge mapped_all.bam"+ss)
|
|
100 os.system("rm "+syspath+"mapped*.bam")
|
|
101 os.system("rm "+syspath+"ref*")
|
|
102
|
|
103
|