annotate sequenza_wrapper.py @ 33:90e2f2e84ab2 draft

Uploaded
author jbrayet
date Fri, 21 Aug 2015 05:46:18 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
1 #! /usr/bin/python
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
2 # -*- coding: utf8 -*-
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
3 """#Sequenza Galaxy - developed by Jocelyn Brayet <jocelyn.brayet@curie.fr>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
4 #Copyright (C) 2015 Institut Curie
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
5 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
6 #This program is free software: you can redistribute it and/or modify
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
7 #it under the terms of the GNU General Public License as published by
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
8 #the Free Software Foundation, either version 3 of the License, or
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
9 #(at your option) any later version.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
10 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
11 #This program is distributed in the hope that it will be useful,
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
14 #GNU General Public License for more details.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
15 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
16 #You should have received a copy of the GNU General Public License
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
17 #along with this program. If not, see <http://www.gnu.org/licenses/>.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
18 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
19 ###########################################################'
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
20 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
21 #usage: sequenza_wrapper.py [-h] -normal <NORMAL_FILE> -tumor <TUMOR_FILE>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
22 # -name <SAMPLE_NAME> -gcContent <GC_FILE> -format
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
23 # <FILE_FORMAT> -estimation <ESTIMATION>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
24 # [-ref_file <REF_FILE>] [-cellularity <CELLULARITY>]
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
25 # [-ploidy <PLOIDY>] [-selector_index <SELECTOR>]
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
26 # [-samtools_options <SAMTOOLS_OPTIONS>] -outGalaxy
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
27 # <OUT_GALAXY>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
28 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
29 #Run Sequenza with Galaxy.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
30 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
31 #optional arguments:
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
32 # -h, --help show this help message and exit
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
33 # -normal <NORMAL_FILE>, --normalFile <NORMAL_FILE>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
34 # Normal input file (BAM, pileup, pileup.gz).
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
35 # -tumor <TUMOR_FILE>, --tumorFile <TUMOR_FILE>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
36 # Tumor input file (BAM, pileup, pileup.gz).
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
37 # -name <SAMPLE_NAME>, --sampleName <SAMPLE_NAME>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
38 # Sample Name.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
39 # -gcContent <GC_FILE>, --GCfile <GC_FILE>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
40 # GC content file (txt).
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
41 # -format <FILE_FORMAT>, --fileFormat <FILE_FORMAT>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
42 # Files format.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
43 # -estimation <ESTIMATION>, --usePersonalEstimation <ESTIMATION>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
44 # To use sequenza estimation or not.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
45 # -ref_file <REF_FILE>, --refFile <REF_FILE>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
46 # Index file to samtools mpileup.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
47 # -cellularity <CELLULARITY>, --cellularityToUsed <CELLULARITY>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
48 # If estimation = no, cellularity used.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
49 # -ploidy <PLOIDY>, --ploidyToUsed <PLOIDY>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
50 # If estimation = no, plody used.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
51 # -samtools_options <SAMTOOLS_OPTIONS>, --samtoolsOptions <SAMTOOLS_OPTIONS>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
52 # Samtools options (-A, -B, -d, -q and -Q).
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
53 # -outGalaxy <OUT_GALAXY>, --outGalaxy <OUT_GALAXY>
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
54 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
55 #Version 1.2 - 05/08/2015 - Adapted from Jocelyn Brayet, France Genomique team
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
56 #
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
57 ###########################################################"""
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
58 __author__ = 'Jocelyn Brayet'
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
59
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
60 ###########################################################'
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
61 ## Import
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
62
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
63 import argparse
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
64 import glob
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
65 import os
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
66 import signal
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
67 import subprocess
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
68
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
69 ## Tested with python 2.6.6
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
70 sequenzaVersion = '1.2 - 05/08/2015'
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
71
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
72 ################################ functions ############################################################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
73 ## Define a function to test arguments
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
74
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
75 def testNone(argument):
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
76 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
77 Test if argument is None or not.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
78 argument -> argument gived by user (XML file)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
79 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
80
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
81 if not argument is None:
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
82 variable = argument[0]
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
83 else:
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
84 variable = ""
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
85 return variable
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
86
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
87 def subprocess_setup():
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
88 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
89 Python installs a SIGPIPE handler by default. This is usually not what non-Python subprocesses expect.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
90 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
91
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
92 signal.signal(signal.SIGPIPE, signal.SIG_DFL)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
93
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
94 def createHTML(resultFile,resultPath,sample):
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
95 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
96 Building a result HTML displayed in Galaxy.
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
97 resultFile -> HTML file
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
98 resultPath -> Galaxy result path
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
99 sample -> sample name
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
100 """
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
101
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
102 resultHTML=open(resultFile,"w")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
103
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
104 cmdLine="cd "+resultPath.replace(os.path.basename(resultPath),"")+"; tar czf all_files.tar.gz "+os.path.basename(resultPath)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
105 os.system(cmdLine)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
106 os.system("mv "+resultPath.replace(os.path.basename(resultPath),"")+"all_files.tar.gz "+resultPath)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
107
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
108 resultHTML.write("<html>\n<head>\n</head>\n<body>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
109 resultHTML.write("<h1><a target='_top' href='http://cran.r-project.org/web/packages/sequenza/index.html'>Sequenza</a> - results</h1>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
110 resultHTML.write("<p align='center'>\n<table width=70% border=1>\n<font size='30pt'><tr>\n<th colspan=3>Additional files</th>\n</tr>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
111 resultHTML.write("<tr>\n<td><a href='out.seqz.gz'>Out Sequenza</a><br><a href='out.small.seqz.gz'>Out small Sequenza</a></td>\n<td><a href='"+sample+"_sequenza_cp_table.RData'>Cellularity and ploidy matrix (RData)</a><br><a href='"+sample+"_sequenza_extract.RData'>Sequenza extract (RData)</a></td><td><a href='logFile.txt'>Log file</a><br><a href='all_files.tar.gz'>All files</a></td>\n</tr>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
112 resultHTML.write("</font>\n</table>\n</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
113 resultHTML.write("<h2>Genome-wide view of the allele and copy number state</h2>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
114 resultHTML.write("<p align='center'><embed src='"+sample+"_analyse.pdf' width='800px' height='590px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
115 resultHTML.write("<p align='center'>Genome-wide allele-specific copy number profile obtained from exome sequencing (top), genome-wide absolute copy number profile obtained from exome sequencing (middle) and depth ratio (bottom).</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
116
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
117 fileList=glob.glob(resultPath+"/segments_*.txt")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
118 alternativeSolutionsList=""
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
119
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
120 for segmentsFile in fileList:
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
121 if not "segments_1.txt" in segmentsFile:
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
122 alternativeSolutionsList = alternativeSolutionsList+" "+segmentsFile
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
123
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
124 os.system("mkdir "+resultPath+"/segments")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
125 os.system("mv "+alternativeSolutionsList+" "+resultPath+"/segments")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
126 cmdLine="cd "+resultPath+"; tar czf "+sample+"_segments.tar.gz segments"
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
127 os.system(cmdLine)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
128
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
129 resultHTML.write("<p align='center'>File (best solution or user solution): <a href='"+sample+"_segments.txt'>Segments</a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
130 resultHTML.write("<p align='center'>File (alternative solutions): <a href='"+sample+"_segments.tar.gz'>Segments</a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
131 resultHTML.write("<p align='center'>File : <a href='"+sample+"_mutations.txt'>Mutations</a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
132 resultHTML.write("<h2>Confidence intervals, confidence region and point estimate</h2>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
133 resultHTML.write("<p align='center'><embed src='"+sample+"_CP_contours.pdf' width='580px' height='580px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
134 resultHTML.write("<p align='center'>Result from the inference over the defined range of cellularity and ploidy. Color intensity indicates the log posterior probability of corresponding cellularity/ploidy values.</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
135 resultHTML.write("<p align='center'><embed src='"+sample+"_CN_bars.pdf' width='580px' height='580px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
136 resultHTML.write("<p align='center'><embed src='"+sample+"_model_fit.pdf' width='580px' height='580px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
137 resultHTML.write("<p align='center'>Observed depth ratio and BAF values for each genomic segment (black circles and dots) along with the representative joint LPP density (colors). The representative joint LPP density is calculated for the best cellularity and ploidy.</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
138 resultHTML.write("<p align='center'>File : <a href='"+sample+"_cellularity_ploidy.txt'>Cellularity and ploidy</a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
139 resultHTML.write("<p align='center'><embed src='"+sample+"_alternative_fit.pdf' width='580px' height='580px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
140 resultHTML.write("<p align='center'>Observed depth ratio and BAF values for each genomic segment (black circles and dots) along with the representative joint LPP density (colors). The representative joint LPP density is calculated for the alternative cellularity and ploidy (scroll).</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
141 resultHTML.write("<p align='center'>File : <a href='"+sample+"_alternative_solutions.txt'>Alternative solutions</a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
142 resultHTML.write("<h2>Normalization of depth ratio</h2>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
143 resultHTML.write("<p align='center'><a href='"+sample+"_gc_stat.png'><img border='1' width='680px' height='300px' src='"+sample+"_gc_stat.png'></a></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
144 resultHTML.write("<p align='center'>Visualization of depth.ratio bias in relation of GC content (left), and resulting normalization effect (right)</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
145 resultHTML.write("<h2>Plot chromosome view with mutations, BAF, depth ratio and segments (best solution or user solution)</h2>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
146 resultHTML.write("<p align='center'><embed src='"+sample+"_chromosome_view.pdf' width='680px' height='680px'></p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
147 resultHTML.write("<p align='center'>Plots of mutant allele frequency (top), B allele frequency (middle) and depth ratio (bottom) vs. chromosome position (scroll).</p>\n")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
148 resultHTML.write("</body>\n</html>")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
149 resultHTML.close()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
150
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
151 if __name__ == '__main__':
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
152
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
153 ########### sequenza arguments ####################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
154 parser = argparse.ArgumentParser(description='Run Sequenza with Galaxy.', epilog='Version '+sequenzaVersion)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
155
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
156 parser.add_argument('-normal', '--normalFile', metavar='<NORMAL_FILE>', type=str, nargs=1, help='Normal input file (BAM, pileup, pileup.gz).', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
157 parser.add_argument('-tumor', '--tumorFile', metavar='<TUMOR_FILE>', type=str, nargs=1, help='Tumor input file (BAM, pileup, pileup.gz).', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
158 parser.add_argument('-name', '--sampleName', metavar='<SAMPLE_NAME>', type=str, nargs=1, help='Sample Name.', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
159 parser.add_argument('-gcContent', '--GCfile', metavar='<GC_FILE>', type=str, nargs=1, help='GC content file (txt).', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
160 parser.add_argument('-format', '--fileFormat', metavar='<FILE_FORMAT>', type=str, nargs=1, help='Files format.', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
161 parser.add_argument('-estimation', '--usePersonalEstimation', metavar='<ESTIMATION>', type=str, nargs=1, help='To use sequenza estimation or not.', required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
162 parser.add_argument('-ref_file', '--refFile', metavar='<REF_FILE>', type=str, nargs=1, help='Index file to samtools mpileup.', required=False)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
163 parser.add_argument('-cellularity', '--cellularityToUsed', metavar='<CELLULARITY>', type=int, nargs=1, help='If estimation = no, cellularity used.', required=False)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
164 parser.add_argument('-ploidy', '--ploidyToUsed', metavar='<PLOIDY>', type=int, nargs=1, help='If estimation = no, plody used.', required=False)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
165 parser.add_argument('-samtools_options', '--samtoolsOptions', metavar='<SAMTOOLS_OPTIONS>', type=str, nargs=1, help='Samtools options (-A, -B, -d, -q and -Q).', required=False)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
166
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
167 ################################ galaxy arguments ############################################################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
168 parser.add_argument('-outGalaxy', '--outGalaxy', metavar='<OUT_GALAXY>', type=str, nargs=1, required=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
169 ###########################################################'
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
170
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
171 args = parser.parse_args()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
172
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
173 normalFile = testNone(args.normalFile)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
174 tumorFile = testNone(args.tumorFile)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
175 sampleName = testNone(args.sampleName)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
176 gcContent = testNone(args.GCfile)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
177 fileFormat = testNone(args.fileFormat)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
178 usePersonalEstimation = testNone(args.usePersonalEstimation)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
179 refFile = testNone(args.refFile)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
180 cellularityToUsed = testNone(args.cellularityToUsed)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
181 ploidyToUsed = testNone(args.ploidyToUsed)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
182 samtoolsOptions = testNone(args.samtoolsOptions)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
183 outGalaxyValue = testNone(args.outGalaxy)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
184
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
185 ################Rscrip PATH#################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
186 RscriptPath = "Rscript --vanilla "
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
187 samtoolsPath = "samtools mpileup "
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
188 ############################################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
189
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
190 pathFile = os.path.dirname(os.path.realpath(__file__))
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
191 outGalaxyValueDir = outGalaxyValue.replace(".dat","_files")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
192 os.popen("mkdir "+outGalaxyValueDir)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
193 os.popen("chmod 777 -R "+outGalaxyValueDir)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
194
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
195 log = open(outGalaxyValueDir+"/logFile.txt", "w")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
196
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
197 log.write(samtoolsOptions)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
198
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
199 if fileFormat=="BAM" :
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
200
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
201 cmd=samtoolsPath+"-f "+refFile+" "+normalFile+" "+samtoolsOptions+" > "+normalFile+".tmp"
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
202 proc = subprocess.Popen( args=cmd, shell=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
203 proc.wait()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
204 os.system("gzip -f -c "+normalFile+".tmp > "+normalFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
205 os.system("rm -f "+normalFile+".tmp")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
206
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
207 cmd=samtoolsPath+"-f "+refFile+" "+tumorFile+" "+samtoolsOptions+" > "+tumorFile+".tmp"
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
208 proc = subprocess.Popen( args=cmd, shell=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
209 proc.wait()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
210 os.system("gzip -f -c "+tumorFile+".tmp > "+tumorFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
211 os.system("rm -f "+tumorFile+".tmp")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
212
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
213 if fileFormat=="pileup" :
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
214 os.system("gzip -f -c "+normalFile+" > "+ normalFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
215 os.system("gzip -f -c "+tumorFile+" > "+tumorFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
216
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
217 if fileFormat=="pileup_gz" :
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
218 os.system("cp -f "+normalFile+" "+normalFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
219 os.system("cp -f "+tumorFile+" "+tumorFile+".gz")
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
220
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
221
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
222
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
223
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
224 #############################################################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
225
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
226 if usePersonalEstimation=="yes":
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
227
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
228 cellularityToUsed = float(cellularityToUsed)/100
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
229 command = RscriptPath+pathFile+"/Sequenza_analysis.R -normal "+normalFile+".gz"+" -tumor "+tumorFile+".gz"+" -out "+outGalaxyValueDir+" -gcContent "+gcContent+" -name "+sampleName+ " -cellularity "+str(cellularityToUsed)+" -ploidy "+str(ploidyToUsed)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
230 log.write(str(command))
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
231
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
232 Rscrpit = subprocess.Popen(command, preexec_fn=subprocess_setup, stdout=log, stderr=log, shell=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
233 Rscrpit.wait()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
234
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
235 else :
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
236
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
237 command = RscriptPath+pathFile+"/Sequenza_analysis.R -normal "+normalFile+".gz"+" -tumor "+tumorFile+".gz"+" -out "+outGalaxyValueDir+" -gcContent "+gcContent+" -name "+sampleName+ " -cellularity 0 -ploidy 0"
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
238 log.write(str(command))
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
239
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
240 Rscrpit = subprocess.Popen(command, preexec_fn=subprocess_setup, stdout=log, stderr=log, shell=True)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
241 Rscrpit.wait()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
242
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
243 #############################################################
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
244
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
245 createHTML(outGalaxyValue,outGalaxyValueDir,sampleName)
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
246
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
247
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
248 log.close()
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
249
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
250
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
251
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
252
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
253
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
254
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
255
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
256
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
257
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
258
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
259
90e2f2e84ab2 Uploaded
jbrayet
parents:
diff changeset
260