diff options
| author | Justin Bedo <cu@cua0.org> | 2019-08-15 14:27:43 +1000 | 
|---|---|---|
| committer | Justin Bedo <cu@cua0.org> | 2019-08-15 14:27:43 +1000 | 
| commit | 92da3257c6867b6f54943e39345ab295703a30c4 (patch) | |
| tree | 2335f6bcf107bea657b21386eaeda194d969c7ec /tools | |
| parent | 3e037c4d706f5ac02c663a8d7f56703373785d29 (diff) | |
hisat2: init
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/hisat2-align.nix | 38 | ||||
| -rw-r--r-- | tools/hisat2-extractExons.nix | 17 | ||||
| -rw-r--r-- | tools/hisat2-extractSpliceSites.nix | 17 | ||||
| -rw-r--r-- | tools/hisat2-index.nix | 27 | ||||
| -rw-r--r-- | tools/hisat2.nix | 18 | 
5 files changed, 117 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; +} diff --git a/tools/hisat2-extractExons.nix b/tools/hisat2-extractExons.nix new file mode 100644 index 0000000..5785954 --- /dev/null +++ b/tools/hisat2-extractExons.nix @@ -0,0 +1,17 @@ +{ bionix +, flags ? null +}: + +gtf: + +with bionix; +with lib; +with types; + +stage { +  name = "hisat2-extractExons"; +  buildInputs = with pkgs; [ hisat2 ]; +  buildCommand = '' +    hisat2_extract_exons.py ${gtf} > $out +  ''; +} diff --git a/tools/hisat2-extractSpliceSites.nix b/tools/hisat2-extractSpliceSites.nix new file mode 100644 index 0000000..553e682 --- /dev/null +++ b/tools/hisat2-extractSpliceSites.nix @@ -0,0 +1,17 @@ +{ bionix +, flags ? null +}: + +gtf: + +with bionix; +with lib; +with types; + +stage { +  name = "hisat2-extractSpliceSites"; +  buildInputs = with pkgs; [ hisat2 ]; +  buildCommand = '' +    hisat2_extract_splice_sites.py ${gtf} > $out +  ''; +} diff --git a/tools/hisat2-index.nix b/tools/hisat2-index.nix new file mode 100644 index 0000000..82935eb --- /dev/null +++ b/tools/hisat2-index.nix @@ -0,0 +1,27 @@ +{ bionix +, gtf ? null +, flags ? null +, extractSpliceSitesAttrs ? {} +, extractExonsAttrs ? {} +}: + +ref: + +with bionix; +with lib; +with types; + +assert (matchFiletype "hisat2-index" { fa = _: true; } ref); + +stage { +  name = "hisat2-index"; +  buildInputs = with pkgs; [ hisat2 ]; +  buildCommand = '' +    ln -s ${ref} ref.fa +    mkdir $out +    hisat2-build -p $NIX_BUILD_CORES ${optionalString (flags != null) flags} \ +      ${optionalString (gtf != null) "--ss ${hisat2.extractSpliceSites extractSpliceSitesAttrs gtf} --exon ${hisat2.extractExons extractExonsAttrs gtf}"} \ +      ref.fa $out/ +  ''; +  passthru.multicore = true; +} diff --git a/tools/hisat2.nix b/tools/hisat2.nix new file mode 100644 index 0000000..8cc4ddf --- /dev/null +++ b/tools/hisat2.nix @@ -0,0 +1,18 @@ +{ bionix }: + +with bionix; + +rec { +  /* Align read against a reference +  Type: hisat2-mem :: {ref :: fasta, bamOutput :: bool, ...} -> {input1, input2} -> bam/sam +  */ +  align = callBionixE ./hisat2-align.nix; + +  /* Creates an reference index for HISAT2 +  Type: index :: {...} -> fasta -> HISAT2 index +  */ +  index = callBionixE ./hisat2-index.nix; + +  extractSpliceSites = callBionixE ./hisat2-extractSpliceSites.nix; +  extractExons = callBionixE ./hisat2-extractExons.nix; +} | 
