A1からA16までの名前を持つ16の個々のフォルダがあり、各フォルダにaligned.sorted.bam
aligned.sorted.bam
このコマンドを使って次のように変換したいと思います。aligned.sam
module load samtools/1.3.2
samtools view -h -o aligned.sam aligned.sorted.bam
aligned.sam
それからに変換counts.txt
module load htseq/0.6.1
htseq-count --stranded=no -q aligned.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt
各フォルダを繰り返してこれらのコマンドを段階的に実行できるスクリプトはありますか?私のLinuxはとても悪い
何か助けてくれてありがとう
@casでこのスクリプトを書くのを手伝ってください。
#!/bin/sh
find /temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/335T/ -type f -name aligned.sorted.bam -print0 | \
xargs -0r -n 1 -P 8 /temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/script.sh
cd "$(/temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/335T/ "$1")"
module load samtools/1.3.2
samtools view -h -o aligned1.sam "$1"
module load htseq/0.6.1
htseq-count --stranded=no -q aligned1.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt
次に、端末に次のように入力します。
chmod +x script.sh
しかし、何も起こりませんでした。
申し訳ありません。最近の変更でscript.shを実行可能にしてから、このコマンドを実行しました。
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find 353T -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash: xargs: command not found
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T{}/ -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash: xargs: command not found
find: `T{}/': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T{} -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash: xargs: command not found
find: `T{}': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash: xargs: command not found
find: `T': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ ls
305N 305T 310N 310T 324T 327T 335T 337N 337T 338T 344T 346T 349T 353B 353N 353T script.sh
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$
私は〜をクリアしました\
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T -type f -name aligned.sorted.bam -print0 | xargs -0r -n 1 -P 8 script.sh
find: `T': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ ls
305N 305T 310N 310T 324T 327T 335T 337N 337T 338T 344T 346T 349T 353B 353N 353T script.sh
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$
@casの最新推薦に基づいています
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find . -type f -name aligned.sorted.bam -print0 | xargs -0r -n 1 -P 8 script.sh
xargs: script.sh: Text file busy
xargs: script.shxargs: : Text file busyscript.sh
: Text file busy
xargs: script.sh: Text file busy
xargs: script.sh: Text file busy
xargs: script.shxargs: : Text file busyscript.sh
: Text file busy
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$
答え1
大まかに推測すると、次のようなことが機能する可能性があります。
find ./A{1..16}/ -type f -name aligned.sorted.bam -print0 |
xargs -0r -n 1 -P 8 ./myscript.sh
これは複数のインスタンスを並列に実行しますmyscript.sh
(-P 8
一度に8つ。CPUコア/スレッドの数が多いか少ない場合は調整します。私のスレッドリッパーでは-P 32
.を使用するか、-P 0
できるだけ多くのインスタンスを実行します)。各インスタンスにファイル名引数が与えられます。スクリプトの。
myscript.sh
次のようになります。
#!/bin/sh
cd "$(dirname "$1")"
module load samtools/1.3.2
samtools view -h -o aligned.sam "$1"
module load htseq/0.6.1
htseq-count --stranded=no -q aligned.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt
このコマンドは渡さなければなりませんchmod +x myscript.sh
。上記のコマンドは、xargs
そのコマンドが現在のディレクトリにあると仮定しています。 PATHのどこかに置き(~/bin/
自分のスクリプトに最適な場所、$ PATHに追加するだけで)、代わりに~/.bashrc
実行できます。myscript.sh
./myscript.sh
私はそれが何を意味するのかわからないmodule load ...
ので、答えのこの部分が間違っている可能性があります。必要に応じて、スクリプトを変更できるように実行する項目を知っているとします。samtools
htseq-count
myscript.sh
ps:ファイルを書かない非常に簡単なテストをお勧めします。
たとえば、次のようになります。
#!/bin/sh
cd "$(dirname "$1")"
echo process-id $$ is in $(pwd), processing file "$1"