Pyradiomics: [BUG] Falha silenciosa ao inicializar o extrator com um caminho inválido

Criado em 17 jun. 2020  ·  5Comentários  ·  Fonte: AIM-Harvard/pyradiomics

Descreva o bug
Falha silenciosa ao inicializar o extrator com um caminho inválido.

Comportamento observado:
Ao usar radiomics.featureextractor.RadiomicsFeatureExtractor com um caminho não existente (ou contendo ~/ ), o arquivo yaml não é lido, mas o extrator retorna um objeto padrão.

Comportamento esperado:
Um erro gerado: arquivo não encontrado. Atualmente, os usuários podem continuar a execute (e publicar ?!) pensando que a saída usa suas configurações.

Configuração PyRadiomics
Não aplicável. Qualquer piradiômica válido yaml.

Versão (preencha as seguintes informações):

  • SO: CentOS 7
  • Versão Python: 3.7.6
  • PyRadiomics versão: 3.0

Contexto adicional
Executando em um ambiente anaconda de base de instalação nova.

bug

Todos 5 comentários

Bom ponto, isso pode ser muito perigoso.

Se você habilitar --validate , esse problema será identificado, mas a validação do arquivo de parâmetro está desativada por padrão.

@JoostJM existe uma razão para nem sempre validar? Que tal mudarmos a sinalização --validate para sim / não e configurá-la como sim por padrão?

Vou investigar, mas pelo que sei o arquivo de parâmetro também é validado ao executar a linha cmd normalmente. --validate usa a interface PyRadiomics regular, mas apenas valida o arquivo de parâmetro e verifica se todos fornecem caminhos de imagem e máscara existem.

Eu olhei ontem e pude confirmar o problema.

Na verdade, é um bug na função __init__ do extrator de recursos, que falhará silenciosamente se uma string for um caminho apontando para um arquivo inexistente e, em seguida, aplicará as configurações padrão. Se vai atualizar isso.
Durante a validação, um erro é registrado quando o caminho do arquivo de parâmetro é inválido.

Ao passar um caminho de arquivo válido, o arquivo de parâmetro é validado em ambos os casos, ou seja, verificado se está de acordo com o esquema de configuração da piradiômica. Isso também é verdadeiro quando um dicionário é passado como um único argumento posicional para inicialização do extrator de recursos (não um dicionário expandido / argumentos de palavra-chave, que são interpretados como parâmetros de configuração do tipo "configurações").

Isso também é verdade quando um dicionário é passado como um único argumento posicional para inicialização do extrator de características

A respeito disso, que tipo de dicionário você quer dizer? Porque a documentação diz:

Os parâmetros do tipo 1 (tipo de imagem) e 2 (classe de recurso) só podem ser fornecidos na inicialização ao usar o arquivo de parâmetro

A menos que você se refira a um dicionário de configurações, então quando eu inicializo o extrator de recursos com mydict vez de **mydict ele deve funcionar? Porque a validação no primeiro caso _sempre_ parece falhar, independentemente das configurações de dicionário.

Edit: Nevermind, encontrei a documentação relevante:

Na inicialização, um dicionário [...] pode ser fornecido contendo todas as configurações necessárias (nível superior contendo as teclas "setting", "imageType" e / ou "featureClass). Isso é feito passando-o como o primeiro argumento posicional.

Esta página foi útil?
0 / 5 - 0 avaliações