diff --git a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/GATKResourcesBundle.scala b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/GATKResourcesBundle.scala index dc6cae197..3bd7514f2 100755 --- a/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/GATKResourcesBundle.scala +++ b/public/scala/qscript/org/broadinstitute/sting/queue/qscripts/GATKResourcesBundle.scala @@ -44,7 +44,7 @@ class GATKResourcesBundle extends QScript { var exampleFASTA: Reference = _ var refs: List[Reference] = _ - class Resource(val file: File, val name: String, val ref: Reference, val useName: Boolean = true, val makeSites: Boolean = true ) { + class Resource(val file: File, val name: String, val ref: Reference, val useName: Boolean = true, val makeSites: Boolean = true, val makeCallsIfBam: Boolean = true ) { def destname(target: Reference): String = { if ( useName ) return name + "." + target.name + "." + getExtension(file) @@ -68,6 +68,7 @@ class GATKResourcesBundle extends QScript { def isVCF(file: File) = file.getName.endsWith(".vcf") def isBAM(file: File) = file.getName.endsWith(".bam") + def isOUT(file: File) = file.getName.endsWith(".out") def isFASTA(file: File) = file.getName.endsWith(".fasta") var RESOURCES: List[Resource] = Nil @@ -94,7 +95,7 @@ class GATKResourcesBundle extends QScript { addResource(new Resource(DATAROOT + "dbsnp_132_b37.vcf", "dbsnp_132", b37, true, false)) addResource(new Resource(exampleFASTA.file, "exampleFASTA", exampleFASTA, false)) - addResource(new Resource("public/testdata/exampleBAM.bam", "exampleBAM", exampleFASTA, false)) + addResource(new Resource("public/testdata/exampleBAM.bam", "exampleBAM", exampleFASTA, false, false, false)) } def initializeStandardDataFiles() = { @@ -172,7 +173,7 @@ class GATKResourcesBundle extends QScript { // exampleFASTA file // addResource(new Resource(exampleFASTA.file, "exampleFASTA", exampleFASTA, false)) - addResource(new Resource("public/testdata/exampleBAM.bam", "exampleBAM", exampleFASTA, false)) + addResource(new Resource("public/testdata/exampleBAM.bam", "exampleBAM", exampleFASTA, false, false, false)) } def createBundleDirectories(dir: File) = { @@ -184,6 +185,15 @@ class GATKResourcesBundle extends QScript { } } + def createCurrentLink(bundleDir: File) = { + + val currentLink = new File(BUNDLE_ROOT + "/current") + + if ( currentLink.exists ) currentLink.delete() + + add(new linkFile(bundleDir, currentLink)) + } + def script = { if ( TEST ) initializeTestDataFiles(); @@ -201,8 +211,10 @@ class GATKResourcesBundle extends QScript { } else if ( isBAM(resource.file) ) { val f = copyBundleFile(resource, resource.ref) add(new IndexBAM(f)) - @Output val outvcf: File = swapExt(f.getParent, f, ".bam", ".vcf") - add(new UG(resource.file, resource.ref.file, outvcf)) + if ( resource.makeCallsIfBam ) { + @Output val outvcf: File = swapExt(f.getParent, f, ".bam", ".vcf") + add(new UG(resource.file, resource.ref.file, outvcf)) + } } else if ( isVCF(resource.file) ) { for ( destRef <- refs ) { val out = destFile(BUNDLE_DIR, destRef, resource.destname(destRef)) @@ -240,6 +252,9 @@ class GATKResourcesBundle extends QScript { //throw new ReviewedStingException("Unknown file type: " + resource) } } + + createCurrentLink(BUNDLE_DIR) + } else { createBundleDirectories(DOWNLOAD_DIR) createDownloadsFromBundle(BUNDLE_DIR, DOWNLOAD_DIR) @@ -249,7 +264,6 @@ class GATKResourcesBundle extends QScript { def createDownloadsFromBundle(in: File, out: File) { Console.printf("Visiting %s%n", in) - // todo -- ignore some of the other files too (e.g. *.out); will test next time we make a bundle if (! in.getName.startsWith(".")) { if ( in.isDirectory ) { out.mkdirs @@ -261,7 +275,7 @@ class GATKResourcesBundle extends QScript { if ( isBAM(in) ) { add(new cpFile(in, out)) add(new md5sum(out)) - } else { + } else if ( !isOUT(in) ) { add(new GzipFile(in, out + ".gz")) add(new md5sum(out + ".gz")) } @@ -299,6 +313,10 @@ class GATKResourcesBundle extends QScript { def commandLine = "cp %s %s".format(in.getAbsolutePath, out.getAbsolutePath) } + class linkFile(@Input val in: File, @Output val out: File) extends CommandLineFunction { + def commandLine = "ln -s %s %s".format(in.getAbsolutePath, out.getAbsolutePath) + } + class md5sum(@Input val in: File) extends CommandLineFunction { @Output val o: File = new File(in.getAbsolutePath + ".md5") def commandLine = "md5sum %s > %s".format(in.getAbsolutePath, o)