diff --git a/umi.wdl b/umi.wdl
index 7c43565405c02f43666a08bb54a7bebad29603b9..360405ff55b79fa30311ff609a8c2b245be9cc82 100644
--- a/umi.wdl
+++ b/umi.wdl
@@ -37,8 +37,9 @@ task BamReadNameToUmiTag {
     String bamIndexPath = sub(select_first([outputPath]), "\.bam$", ".bai")
     command <<<
         python <<CODE
-        import pysam
+        import pysam 
         import sys
+        import os
 
         from typing import Tuple
 
@@ -56,8 +57,9 @@ task BamReadNameToUmiTag {
                 return " ".join([new_id, other_parts]), umi
             return new_id, umi
 
-        def annotate_umis(in_file, out_file, bam_tag = "RX"):
+        def annotate_umis(in_file, out_file, bam_tag="RX"):
             in_bam = pysam.AlignmentFile(in_file, "rb")
+            os.makedirs(os.path.dirname(out_file), exist_ok=True)
             out_bam = pysam.AlignmentFile(out_file, "wb", template=in_bam)
             for segment in in_bam:  # type: pysam.AlignedSegment
                 new_name, umi = split_umi_from_name(segment.query_name)