シングルエンドシーケンスデータまたはペアエンドシーケンスデータのいずれかでfastqトリミングの実行を処理するsnakemakeルールを作成しています。データがペアエンドの場合は2つの出力ファイルが必要であり、シングルエンドの場合は1つである必要があります。
私が書いたルールはこれまでのところ機能しますが、トリミングされた2番目のペアが出力ファイルであるということはありません。これは、snakemakeがそのファイルが存在するかどうかを確認していないことを意味します。出力されますが、チェックされていません。オプションの出力を持つことは可能ですか?
input:
#get the value in the fast1 column
fastq_file = lambda wildcards: return_fastq(wildcards.fastq_name,wildcards.unit,first_pair = True)
output:
out_fastqc = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_trimmed.fastq.gz",
fastpjson = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.json",
fastphtml = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.html"
params:
fastp_parameters = return_parsed_extra_params(config['fastp_parameters']),
fastq_file2 = lambda wildcards: return_fastq(wildcards.fastq_name,wildcards.unit,first_pair = False),
out_fastqc2 = lambda wildcards: return_fastq2_name(wildcards.fastq_name,wildcards.unit),
fastpjson = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.json",
fastphtml = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_fastp.html"
run:
if config["end_type"] == "se":
shell("{config[fastp_path]} -i {input.fastq_file} -o {output.out_fastqc} --json {output.fastpjson} --html {output.fastphtml} {params.fastp_parameters}")
if config["end_type"] == "pe":
shell("{config[fastp_path]} --in1 {input.fastq_file} --in2 {params.fastq_file2} --out1 {output.out_fastqc} --out2 {params.out_fastqc2} --json {output.fastpjson} --html {output.fastphtml} {params.fastp_parameters}")
目標は、out_fastqc2がルールのオプションの出力として含まれるため、snakemakeが存在するかどうかを確認し、存在しない場合は適切にエラーを表示することです。
Snakemakeがオプションの出力を許可しない場合は、2つのルールに分割することもできますが、それは私が望んでいることではありません。
expand
関数がどのように機能するかを見てください。Snakemakeが依存関係のDAGを構築するフェーズで呼び出され、この関数の結果を使用してoutput
セクションのファイルのリストを構築します。
同じことを試してみることをお勧めします。空かどうかのリストを作成します-条件によって異なります。
このソリューションはout_fastqc2
、事前に必要かどうかがわかっている場合にのみ機能します(ただし、優先順位を使用して2つのルールを定義しても同じです)。out_fastqc2
ルールの実行中にのみ必要性に関する情報を取得する場合、それはチェックポイントが必要な場合とはまったく異なります。
以下は私のアプローチを説明するコードです:out_fastqc2
ファイルを説明する文字列になります(end_type
がに構成されている"pe"
場合)、そうでない場合は出力のリストを変更しない空のリストになります。
output:
out_fastqc = config["fastp_trimmed_output_folder"] + "{unit}/{fastq_name}_trimmed.fastq.gz",
out_fastqc2 = lambda wildcards: return_fastq2_name(wildcards.fastq_name,wildcards.unit) if config["end_type"] == "pe" else []
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加