Привет всем, у меня есть следующий скрипт bash, который вызывает hmmscan из программного обеспечения hmmer3.hmmscan требует указать 6 аргументов командной строки, в этом случае код, который я написал, выглядит следующим образом:
hmmscan_fun () {
local file=$1
local marker_profiles=$2
local n_threads=$3
local out_dir=$4
fname=$(echo $file | rev | cut -d'/' -f1 | rev)
echo 'filename'
echo $out_dir$fname".txt"
echo 'n threads'
echo $n_threads
echo 'marker profiles'
echo $marker_profiles
echo $out_dir$fname".txt" >> $out_dir"out.txt"
hmmscan -o $out_dir$fname".txt" --tblout $out_dir$fname".hmm" -E 1e-10 --cpu $n_threads $marker_profiles $file
}
В основном я перебираю список файлов, найденных в каталоге, и запускаю hmmscan для каждогофайл, и я использую это имя файла, чтобы добавить к выходным именам, чтобы у меня были разные выходные имена, соответствующие каждому из моих входных файлов.
Мой вопрос заключается в том, что цикл довольно длинный, и я хотел бы распараллелить этот процесс для масштабирования с количеством процессоров, которые я предоставляю в командной строке.Я хочу сделать это с помощью xargs, важно, чтобы я использовал xargs, поскольку у меня нет параллельной функции GNU и, к сожалению, я не могу ничего установить.Пожалуйста помоги.По сути, я застрял в том, как вызвать функцию с помощью xargs и как передать ей множество аргументов командной строки.