Remover definição de variáveis vazias
Problema
Atualmente, variáveis "indefinidas" no código estão sendo passadas como "None" e sua checagem feita a partir disso:
-
main.nf
:
if (params.prefix == "None") {...
-
modules/basecall.nf
:
...${barcoding_kit != "None" ? "--kit-name ${barcoding_kit}" : ""}...
Isso gera 3 problemas:
Redundância na checagem
Caso queiramos checar se uma variável foi definida, precisamos não só checar se ela foi chamada na definição, o que é feito com:
if(params.var == null)
, mas também checar se ela foi definida, mas definida com "None". O que levaria toda checagem completa a se tornar:
if(params.prefix != null && params.prefix != "None")
.
Quando ela poderia simplesmente não ser definida, levando a dificuldade de checagem como vista em #2.
Dificuldade de interpretação para o usuário
Caso uma variável seja insignificante para o usuário, ele não deveria precisar definir ela com "None". Remover isso torna o sistema mais intuitivo e menos sucetível a erros (caso o usuário escreva "none" ao invés de "None", por exemplo).
Imprevisibilidade do sistema de tipos
Fazer com que uma variável de tipo inteiro seja definida como uma string "None" faz com que nunca se saiba o tipo de uma variável em um primeiro momento. Parâmetros com tipo null
podem ser checados e, se for o caso, podem ser definidos com valores padrões dentro do arquivo do workflow, facilitando o debugging e a legibilidade do código.
Por exemplo:
workflow {
if(params.nome != null) {
println "Bom dia, senhor " + params.nome
} else {
println "Bom dia, senhor"
}
}
Poderia ser:
params.nome = ""
workflow {
println "Bom dia, senhor " + params.nome
}
Solução
- Remover testes de "None" (ou substituir por testes de null)
- Remover definição de "None" dentro de arquivos de parâmetro e configuração