プログラムを実行するには、異なるディレクトリにある複数のファイルを繰り返します。

プログラムを実行するには、異なるディレクトリにある複数のファイルを繰り返します。

だから私はiRepプログラムを実行してみました。通常、次のように実行されます。

iRep -f Bins/10000A-01-01_bin.* -s sam/10000A-01-01.sam.sorted.sam --sort -o 10000A-01-01_iRep_output

サムフォルダから -

10000A-01-01.sam.sorted.sam
10000A-01-02.sam.sorted.sam
10000A-01-03.sam.sorted.sam

Binsフォルダから -

10000A-01-01_bin.1.fa
10000A-01-01_bin.2.fa
10000A-01-01_bin.3.fa

10000A-01-02_bin.1.fa
10000A-01-02_bin.2.fa
10000A-01-02_bin.3.fa

10000A-01-03_bin.1.fa
10000A-01-03_bin.3.fa
10000A-01-03_bin.5.fa
10000A-01-03_bin.7.fa

次のように、各例に対して各コマンドを個別に実行するのではなく、1つのコマンドですべての操作を実行するループが必要です。

iRep -f Bins/10000A-01-01_bin.* -s sam/10000A-01-01.sam.sorted.sam --sort -o 10000A-01-01_iRep_output
iRep -f Bins/10000A-01-02_bin.* -s sam/10000A-01-02.sam.sorted.sam --sort -o 10000A-01-02_iRep_output
iRep -f Bins/10000A-01-03_bin.* -s sam/10000A-01-03.sam.sorted.sam --sort -o 10000A-01-03_iRep_output

どうすればいいのかご存知ですか?

ベストアンサー1

#!/bin/sh

# Loop over the SAM files
for sam in sam/*.sam.sorted.sam; do
    # Extract the sample name by taking the basename of the SAM file
    # and removing the known filename suffix.
    sample=$(basename "$sam" .sam.sorted.sam)

    # Call iRep (as described in the question)
    iRep -f Bins/"$sample"_bin.* -s "$sam" --sort -o "$sample"_iRep_output
done

問題のファイルが与えられると、最終的に実行されます。

iRep -f Bins/10000A-01-01_bin.1.fa Bins/10000A-01-01_bin.2.fa Bins/10000A-01-01_bin.3.fa -s sam/10000A-01-01.sam.sorted.sam --sort -o 10000A-01-01_iRep_output
iRep -f Bins/10000A-01-02_bin.1.fa Bins/10000A-01-02_bin.2.fa Bins/10000A-01-02_bin.3.fa -s sam/10000A-01-02.sam.sorted.sam --sort -o 10000A-01-02_iRep_output
iRep -f Bins/10000A-01-03_bin.1.fa Bins/10000A-01-03_bin.3.fa Bins/10000A-01-03_bin.5.fa -s sam/10000A-01-03.sam.sorted.sam --sort -o 10000A-01-03_iRep_output

おすすめ記事