Estou tentando automatizar a execução de um comando python com argumentos usando vários arquivos (um de cada vez) e escrevendo a saída em diretórios de saída com o mesmo nome do arquivo de entrada, mas sem a extensão.
Os arquivos são arquivos fasta contendo as proteínas de genomas bacterianos. A rotina python é projetada para extrair essas proteínas com certas propriedades e imprimir várias saídas no diretório /myruns/test
. Se eu executá-lo com um genoma, o nome de test
seria substituído.
Exemplo:
O arquivo rápido XYZ.faa
será tomado como entrada e os arquivos de saída serão colocados em /myruns/XYZ
.
Manualmente funciona muito bem, mas quero usá-lo em lote com vários *.faa
arquivos e criar diretórios com seus nomes correspondentes, caso contrário, o último arquivo processado apagará o conteúdo do anterior.
Até agora eu construí o seguinte script:
#!/bin/sh
for filename in *.faa ; do
python predict_genome.py \
--fasta_path /Users/mvalvano/DeepSecE/myruns/${filename} \
--model_location /Users/mvalvano/DeepSecE/model/checkpoint.pt \
--data_dir data \
--out_dir myruns/test --save_attn --no_cuda
done
exit 0
Este script funciona, e os arquivos de saída são salvos em um diretório de teste que é especificado no --out_dir
argumento. Minha pergunta é como posso substituir test
no --out_dir
argumento por uma função que nomearia o diretório com o mesmo nome do arquivo de entrada. Tentei algumas opções, mas elas não parecem funcionar.
Obrigado Mike