Как сделать скрипт bash, который будет использовать cdhit для каждого файла в каталоге отдельно? - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть каталог с> 500 мультифакторными файлами.Я хочу использовать одну и ту же программу (cd-hit-est) для кластеризации последовательностей в каждом из файлов, а затем сохранить выходные данные в другом каталоге.Я хочу, чтобы имя файла было таким же, как и в оригинальном файле.

for file in /dir/*.fasta; 
do
echo "$file";
cd-hit-est -i $file -o /anotherdir/${file} -c 0.98 -n 9 -d 0 -M 120000 -T 32;
done

Я получаю частичный вывод, а затем ошибку:

...
^M# comparing sequences from      33876  to      33910
    .................---------- new table with       34 representatives
    ^M# comparing sequences from      33910  to      33943
    .................---------- new table with       33 representatives
    ^M# comparing sequences from      33943  to      33975
    ................---------- new table with       32 representatives
    ^M# comparing sequences from      33975  to      34006
    ................---------- new table with       31 representatives
    ^M# comparing sequences from      34006  to      34036
    ...............---------- new table with       30 representatives
    ^M# comparing sequences from      34036  to      34066
    ...............---------- new table with       30 representatives
    ^M# comparing sequences from      34066  to      35059
    .....................
    Fatal Error:
    file opening failed
    Program halted !!

    ---------- new table with      993 representatives

        35059  finished      34719  clusters

Нет выводафайл был создан.Может ли кто-нибудь помочь мне понять, где я могу ошибиться?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018
doit() {
    file="$1"
    echo "$file";
    cd-hit-est -i "$file" -o /anotherdir/$(basename "$transcriptome") -c 0.98 -n 9 -d 0 -M 120000 -T 32;
}
env_parallel doit ::: /dir/*.fasta
0 голосов
/ 22 ноября 2018

ОК, похоже, у меня сейчас есть ответ, в любом случае, если кто-то ищет подобный ответ.

for file in /dir/*.fasta; 
        do
                echo "$file";
                cd-hit-est -i "$file" -o /anotherdir/$(basename "$transcriptome") -c 0.98 -n 9 -d 0 -M 120000 -T 32;
        done

Вызов выходного файла другим способом сделал свое дело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...