diff --git a/ivy.xml b/ivy.xml
index f90b9a010..96c1de844 100644
--- a/ivy.xml
+++ b/ivy.xml
@@ -46,7 +46,7 @@
-
+
@@ -75,6 +75,9 @@
+
+
+
diff --git a/public/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java b/public/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java
index 04cbef0c3..f24bbb636 100644
--- a/public/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java
+++ b/public/java/src/org/broadinstitute/sting/utils/classloader/PluginManager.java
@@ -35,8 +35,10 @@ import org.reflections.scanners.SubTypesScanner;
import org.reflections.util.ConfigurationBuilder;
import org.slf4j.LoggerFactory;
+import java.io.File;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
@@ -57,8 +59,25 @@ public class PluginManager {
Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Reflections.class);
logger.setLevel(Level.OFF);
+ Set classPathUrls = new LinkedHashSet();
+
+ URL cwd;
+ try {
+ cwd = new File(".").getAbsoluteFile().toURI().toURL();
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+
+ // NOTE: Reflections also scans directories for classes.
+ // Meanwhile some of the jar MANIFEST.MF Bundle-ClassPath properties contain "."
+ // Do NOT let reflections scan the CWD where it often picks up test classes when
+ // they weren't explicitly in the classpath, for example the UninstantiableWalker
+ for (URL url: JVMUtils.getClasspathURLs())
+ if (!url.equals(cwd))
+ classPathUrls.add(url);
+
defaultReflections = new Reflections( new ConfigurationBuilder()
- .setUrls(JVMUtils.getClasspathURLs())
+ .setUrls(classPathUrls)
.setScanners(new SubTypesScanner()));
}
diff --git a/public/packages/Queue.xml b/public/packages/Queue.xml
index 589cb45f5..c256e5687 100644
--- a/public/packages/Queue.xml
+++ b/public/packages/Queue.xml
@@ -59,7 +59,12 @@
-
+
+
+
+
+
+
diff --git a/public/scala/src/org/broadinstitute/sting/queue/extensions/snpeff/SnpEff.scala b/public/scala/src/org/broadinstitute/sting/queue/extensions/snpeff/SnpEff.scala
new file mode 100644
index 000000000..62f66ec06
--- /dev/null
+++ b/public/scala/src/org/broadinstitute/sting/queue/extensions/snpeff/SnpEff.scala
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2011, The Broad Institute
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use,
+ * copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following
+ * conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+package org.broadinstitute.sting.queue.extensions.snpeff
+
+import org.broadinstitute.sting.queue.function.JavaCommandLineFunction
+import java.io.File
+import org.broadinstitute.sting.commandline.{Argument, Output, Input}
+
+/**
+ * Basic snpEff support.
+ * See: http://www.broadinstitute.org/gsa/wiki/index.php/Adding_Genomic_Annotations_Using_SnpEff_and_VariantAnnotator
+ */
+class SnpEff extends JavaCommandLineFunction {
+ javaMainClass = "ca.mcgill.mcb.pcingola.snpEffect.commandLine.SnpEff"
+
+ @Input(doc="snp vcf4 file")
+ var inVcf: File = _
+
+ @Input(doc="config file with path to data dir", required=false)
+ var config: File = _
+
+ @Argument(doc="genome version")
+ var genomeVersion: String = _
+
+ @Argument(doc="verbose", required=false)
+ var verbose = true
+
+ @Output(doc="snp eff output")
+ var outVcf: File = _
+
+ override def commandLine = Array(
+ super.commandLine,
+ " eff",
+ if (verbose) " -v" else "",
+ optional(" -c ", config),
+ " -i vcf -o vcf %s %s > %s".format(genomeVersion, inVcf, outVcf)
+ ).mkString
+}
diff --git a/settings/repository/net.sf.snpeff/snpeff-2.0.2.jar b/settings/repository/net.sf.snpeff/snpeff-2.0.2.jar
new file mode 100755
index 000000000..bfd06f97f
Binary files /dev/null and b/settings/repository/net.sf.snpeff/snpeff-2.0.2.jar differ
diff --git a/settings/repository/net.sf.snpeff/snpeff-2.0.2.xml b/settings/repository/net.sf.snpeff/snpeff-2.0.2.xml
new file mode 100644
index 000000000..f0568def4
--- /dev/null
+++ b/settings/repository/net.sf.snpeff/snpeff-2.0.2.xml
@@ -0,0 +1,3 @@
+
+
+