テキストファイルからファイルパスを読み取って作業配列を実行します。

テキストファイルからファイルパスを読み取って作業配列を実行します。

以下のスクリプトを使用して一連のジョブを実行しようとしています。

#!/bin/bash --login
#$ -cwd
#$ -t 1-4

module load apps/bioinf
module load apps/trimmomatic/0.36/noarch

file=`awk "NR==$SGE_TASK_ID" ~/scratch/Genome/single_reads.txt`

trimmomatic SE $file $(basename $file) SLIDINGWINDOW:5:20 MINLEN:35

以前は、現在のディレクトリのファイル名のみを含むテキストファイルを読み取るときに機能しました。たとえば、Single_reads.txtという元のテキストファイルには、次のものが含まれます。

ERR179588.fastq.gz
ERR179589.fastq.gz
ERR179590.fastq.gz しばらく...

これで、ファイル名の代わりに各行にリストされているファイルパスを使用しようとしています。たとえば、

~/scratch/fasta_files/ERR1795288.fastq.gz.
~/scratch/fasta_files/ERR1795289.fastq.gz など...

このエラーは引き続き発生します。

TrimmomaticSE: Started with arguments:
~/scratch/fasta_files/ERR1795288.fastq.gz ERR1795288.fastq.gz SLIDINGWINDOW:5:20 MINLEN:35
Automatically using 1 threads
Exception in thread "main" java.io.FileNotFoundException: ~/scratch/fasta_files/ERR1795288.fastq.gz (No such file or directory)

たぶん、ファイルパスを他のディレクトリのファイルではなく現在のディレクトリのファイル名として扱うことができます。

これが基本だったらすみません。私は初めてbashを使います!

関連情報