gatk-3.8/scala/qscript/oneoffs/QTools.q

68 lines
2.3 KiB
Plaintext
Executable File

import org.broadinstitute.sting.queue.library.ipf.vcf.{VCFExtractIntervals, VCFExtractSamples, VCFSimpleMerge, VCFExtractSites}
import org.broadinstitute.sting.queue.library.ipf.SortByRef
import org.broadinstitute.sting.queue.QScript
import collection.JavaConversions._
// todo -- should the argument collection on which this runs be generated at compile-time into extensions??
// todo -- maybe a compile-time generated enum of available library functions? (ipf of course)
class QTools extends QScript {
@Argument(doc="Tool to run",shortName="T", required=true) var qtool : String = _
@Argument(doc="input VCF",shortName="ivcf",required=false) var inVCF : File = _
@Argument(doc="input VCF files",shortName="vcfs",required=false) var inVCFs : String = _
@Argument(doc="output file",shortName="out",required=true) var output : File = _
@Argument(doc="reference file",shortName="ref",required=false) var ref : File = _
@Argument(doc="The samples to extract",shortName="sm",required=false) var samples : String = _
@Argument(doc="Keep filtered sites when merging or extracting?",shortName="kf",required=false) var keepFilters : Boolean = false
// todo -- additional arguments or argument collection
def script = {
if ( qtool.equals("VCFExtractSites") ) {
runVCFExtractSites
}
if ( qtool.equals("VCFSimpleMerge") ) {
runVCFSimpleMerge
}
if ( qtool.equals("VCFExtractSamples") ) {
runVCFExtractSamples
}
if ( qtool.equals("VCFExtractIntervals") ) {
runVCFExtractIntervals
}
if ( qtool.equals("SortByRef") ) {
runSortByRef
}
}
def runVCFExtractSites = {
var ves : VCFExtractSites = new VCFExtractSites(inVCF,output)
add(ves)
}
def runVCFSimpleMerge = {
var vsm : VCFSimpleMerge = new VCFSimpleMerge
vsm.vcfs = inVCFs.split(",").toList.map(new File(_))
vsm.outVCF = output
vsm.fai = new File(ref.getAbsolutePath+".fai")
add(vsm)
}
def runVCFExtractSamples = {
var ves : VCFExtractSamples = new VCFExtractSamples(inVCF,output,samples.split(",").toList)
add(ves)
}
def runVCFExtractIntervals = {
var vei : VCFExtractIntervals = new VCFExtractIntervals(inVCF,output,keepFilters)
add(vei)
}
def runSortByRef = {
var sbr : SortByRef = new SortByRef(inVCF,new File(ref.getAbsolutePath+".fai"),output)
add(sbr)
}
}