aboutsummaryrefslogtreecommitdiff
path: root/tools/hisat2-align.nix
diff options
context:
space:
mode:
authorJustin Bedo <cu@cua0.org>2019-08-15 14:27:43 +1000
committerJustin Bedo <cu@cua0.org>2019-08-15 14:27:43 +1000
commit92da3257c6867b6f54943e39345ab295703a30c4 (patch)
tree2335f6bcf107bea657b21386eaeda194d969c7ec /tools/hisat2-align.nix
parent3e037c4d706f5ac02c663a8d7f56703373785d29 (diff)
hisat2: init
Diffstat (limited to 'tools/hisat2-align.nix')
-rw-r--r--tools/hisat2-align.nix38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/hisat2-align.nix b/tools/hisat2-align.nix
new file mode 100644
index 0000000..277b499
--- /dev/null
+++ b/tools/hisat2-align.nix
@@ -0,0 +1,38 @@
+{ bionix
+, ref
+, bamOutput ? true
+, flags ? null
+, indexAttrs ? {}
+}:
+
+{ input1
+, input2 ? null
+}:
+
+with bionix;
+with lib;
+with types;
+with compression;
+
+let
+ fa = f: matchFiletype "hisat2-ref" { fa = _: f; } f;
+ fq = f: matchFiletype "hisat2-input" { fq = _: f; gz = matchFiletype' "hisat2-input" { fq = _: "<(gunzip < ${f})"; }; } f;
+
+in stage {
+ name = "hisat2-align";
+ buildInputs = with pkgs; [ hisat2 bc samtools ];
+ buildCommand = ''
+ ln -s ${fa ref} ref.fa
+ cores=$(echo $NIX_BUILD_CORES ${optionalString bamOutput "- 1"} | bc)
+ if [[ $cores -lt 1 ]] ; then
+ cores=1
+ fi
+ hisat2 ${optionalString (flags != null) flags} -p $cores -x ${hisat2.index indexAttrs ref}/ \
+ ${if input2 != null then "-1 ${fq input1} -2 ${fq input2}" else "-U ${fq input1}"} \
+ ${optionalString bamOutput "| samtools view -b"} \
+ | samtools sort -n \
+ > $out
+ '';
+ passthru.filetype = if bamOutput then filetype.bam {ref = ref; sorting = sort.name {};} else filetype.sam {ref = ref; sorting = sort.name {};};
+ passthru.multicore = true;
+}