diff --git a/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala b/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala
index 78bf5f309f77ea2916715a0681640b4d1400cd72..67240e7ed0dc80ac33eee75c9fb0c8f25ba0f6f4 100644
--- a/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala
+++ b/bammetrics/src/main/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetrics.scala
@@ -17,15 +17,16 @@ package nl.lumc.sasc.biopet.pipelines.bammetrics
 
 import java.io.File
 
-import nl.lumc.sasc.biopet.core.annotations.{ RibosomalRefFlat, AnnotationRefFlat }
+import nl.lumc.sasc.biopet.core.annotations.{ AnnotationRefFlat, RibosomalRefFlat }
 import nl.lumc.sasc.biopet.utils.config.Configurable
 import nl.lumc.sasc.biopet.core.summary.SummaryQScript
-import nl.lumc.sasc.biopet.core.{ Reference, BiopetFifoPipe, PipelineCommand, SampleLibraryTag }
+import nl.lumc.sasc.biopet.core.{ BiopetFifoPipe, PipelineCommand, Reference, SampleLibraryTag }
 import nl.lumc.sasc.biopet.extensions.bedtools.{ BedtoolsCoverage, BedtoolsIntersect }
 import nl.lumc.sasc.biopet.extensions.picard._
 import nl.lumc.sasc.biopet.extensions.samtools.SamtoolsFlagstat
 import nl.lumc.sasc.biopet.pipelines.bammetrics.scripts.CoverageStats
 import nl.lumc.sasc.biopet.extensions.tools.BiopetFlagstat
+import nl.lumc.sasc.biopet.utils.intervals.BedCheck
 import org.broadinstitute.gatk.queue.QScript
 
 class BamMetrics(val root: Configurable) extends QScript
@@ -72,6 +73,8 @@ class BamMetrics(val root: Configurable) extends QScript
   /** executed before script */
   def init(): Unit = {
     inputFiles :+= new InputFile(inputBam)
+    ampliconBedFile.foreach(BedCheck.checkBedFileToReference(_, referenceFasta(), biopetError = true))
+    roiBedFiles.foreach(BedCheck.checkBedFileToReference(_, referenceFasta(), biopetError = true))
   }
 
   /** Script to add jobs */
diff --git a/bammetrics/src/test/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetricsTest.scala b/bammetrics/src/test/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetricsTest.scala
index 4a75d99e00d3a21324c8d5459d891e6435691185..6da49168e2166189dd05fb481ded00ccff66b43a 100644
--- a/bammetrics/src/test/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetricsTest.scala
+++ b/bammetrics/src/test/scala/nl/lumc/sasc/biopet/pipelines/bammetrics/BamMetricsTest.scala
@@ -61,9 +61,9 @@ class BamMetricsTest extends TestNGSuite with Matchers {
   def testBamMetrics(rois: Int, amplicon: Boolean, rna: Boolean, wgs: Boolean) = {
     val map = ConfigUtils.mergeMaps(Map("output_dir" -> BamMetricsTest.outputDir, "rna_metrics" -> rna, "wgs_metrics" -> wgs),
       Map(BamMetricsTest.executables.toSeq: _*)) ++
-      (if (amplicon) Map("amplicon_bed" -> "amplicon.bed") else Map()) ++
+      (if (amplicon) Map("amplicon_bed" -> BamMetricsTest.ampliconBed.getAbsolutePath) else Map()) ++
       (if (rna) Map("annotation_refflat" -> "transcripts.refFlat") else Map()) ++
-      Map("regions_of_interest" -> (1 to rois).map("roi_" + _ + ".bed").toList)
+      Map("regions_of_interest" -> (1 to rois).map(BamMetricsTest.roi(_).getAbsolutePath).toList)
     val bammetrics: BamMetrics = initPipeline(map)
 
     bammetrics.inputBam = BamMetricsTest.bam
@@ -94,6 +94,14 @@ object BamMetricsTest {
 
   val bam = new File(outputDir, "input" + File.separator + "bla.bam")
   Files.touch(bam)
+  val ampliconBed = new File(outputDir, "input" + File.separator + "amplicon_bed.bed")
+  Files.touch(ampliconBed)
+
+  def roi(i: Int): File = {
+    val roi = new File(outputDir, "input" + File.separator + s"roi${i}.bed")
+    Files.touch(roi)
+    roi
+  }
 
   private def copyFile(name: String): Unit = {
     val is = getClass.getResourceAsStream("/" + name)
diff --git a/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/intervals/BedCheck.scala b/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/intervals/BedCheck.scala
new file mode 100644
index 0000000000000000000000000000000000000000..c432fbab3c20a28ed6f3dc7f759b07feb248e03e
--- /dev/null
+++ b/biopet-utils/src/main/scala/nl/lumc/sasc/biopet/utils/intervals/BedCheck.scala
@@ -0,0 +1,27 @@
+package nl.lumc.sasc.biopet.utils.intervals
+
+import java.io.File
+import scala.collection.mutable.Set
+
+import nl.lumc.sasc.biopet.utils.Logging
+
+/**
+ * Created by pjvanthof on 14/05/16.
+ */
+object BedCheck {
+  private val cache: Set[(File, File)] = Set()
+
+  def checkBedFileToReference(bedFile: File, reference: File, biopetError: Boolean = false, ignoreCache: Boolean = false): Unit = {
+    if (ignoreCache || !cache.contains((bedFile, reference))) {
+      cache.add((bedFile, reference))
+      val bedrecords = BedRecordList.fromFile(bedFile)
+      if (biopetError) {
+        try {
+          bedrecords.validateContigs(reference)
+        } catch {
+          case e: IllegalArgumentException => Logging.addError(e.getMessage + s", Bedfile: $bedFile")
+        }
+      } else bedrecords.validateContigs(reference)
+    }
+  }
+}