CommonWL for practical use 3
作成したCWL ツール・ワークフローを実際に動かしてみた(その3)
stringtie-merge
ができたものとして、次なるプロセスがmergeされたGFFから該当するFASTAファイルを作成すること。
このプロセスをやってくれるツールがgffread
である。
そこで、これを2019年CWL advent calendarの7日目でも紹介されているzatsu-cwl-generator
を使ってCWL化してみた。
まずはGTFをGFFに直すところから。
#!/bin/sh
docker run --rm ttanjo/zatsu-cwl-generator:latest \
"gffread -E my.gtf -g my_genome.fa -o my.gff3" \
> gtf2gff.cwl
手元のMacBookPro(10.14.6)では無事実行できたが、なぜかマシン(10.13.6と10.15.2)では実行できず。 仕方がないので手元で実行してサーバーにはそれをコピーして使わせてもらった。
また、--container
オプションはDocker版では動かなかったので、後から追記するやり方に(というか、オプションをDockerに引き渡すところが失敗していて、そのやり方を私が知らないというオチだと思われる)。
できたCWLファイルのoutputs
のところをコメントアウトされているところを有効にして、逆にコメントされてなかったところをコメントアウトした。
そして、以下のDockerで動かすための情報(最後の3行)を書き加えた。
#!/usr/bin/env cwl-runner
# Generated from: gffread -E my.gtf -g my_genome.fasta -o my.gff3
class: CommandLineTool
cwlVersion: v1.0
baseCommand: gffread
arguments:
- -E
- $(inputs.E)
- -g
- $(inputs.g)
- -o
- $(inputs.o_name)
inputs:
- id: E
type: File
- id: g
type: File
- id: o_name
type: string
outputs:
# - id: all-for-debugging
# type:
# type: array
# items: [File, Directory]
# outputBinding:
# glob: "*"
- id: o
type: File
outputBinding:
glob: "$(inputs.o_name)"
hints:
- class: DockerRequirement
dockerPull: quay.io/biocontainers/gffread:0.11.6--h8b12597_0
そうすると以下のコマンドでちゃんと動いた。
#!/bin/sh
cwltool cwl-live-coding-2019-12-16/cwl/gtf2gff.cwl \
-E my.gtf -g fa/my_genome.fa --o_name my.gff
こちらは動いたのだが、肝心のGFFからFASTAを生成するコマンドのCWL
#!/bin/sh
docker run --rm ttanjo/zatsu-cwl-generator:latest \
"gffread -g my_genome.fasta -w exon.fa my.gff3" \
> gff2fasta.cwl
は、上述のDockerで動かすための3行を加えて
#!/bin/sh
cwltool cwl-live-coding-2019-12-16/cwl/gff2fasta.cwl \
-g fa/my_genome.fa -w out.fa --my_gff3 my.gff
としても動かなかった。
そこで、前のgtf2gff.cwl
を参考に以下のように書き換えてみると
#!/usr/bin/env cwl-runner
# Generated from: gffread -g my_genome.fasta -w exon.fa my.gff3
class: CommandLineTool
cwlVersion: v1.0
baseCommand: gffread
arguments:
- -g
- $(inputs.g)
- -w
- $(inputs.w_name)
- $(inputs.my_gff3)
inputs:
- id: g
type: File
- id: my_gff3
type: File
- id: w_name
type: string
outputs:
- id: w
type: File
outputBinding:
glob: "$(inputs.w_name)"
hints:
- class: DockerRequirement
dockerPull: quay.io/biocontainers/gffread:0.11.6--h8b12597_0
ちゃんとvalidなCWLになって、
#!/bin/sh
cwltool cwl-live-coding-2019-12-16/cwl/gff2fasta.cwl \
-g fa/my_genome.fa --w_name out.fa --my_gff3 my.gff
としたら、バッチリ目的のFASTAファイルができた。
残るは、stringtie-merge
のCWL化!