バグを説明する
無効なパスでエクストラクタを初期化するときにサイレントエラーが発生しました。
観察された行動:
存在しないパス(または~/
を含むパス)でradiomics.featureextractor.RadiomicsFeatureExtractor
を使用すると、yamlファイルは読み取られませんが、エクストラクターはデフォルトのオブジェクトを返します。
予想される行動:
スローされたエラー:ファイルが見つかりません。 現在、ユーザーは、出力が自分の設定を使用していると考えて、 execute
(および公開?!)を続ける可能性があります。
PyRadiomics構成
適用できません。 有効なピラディオミクスyaml。
バージョン(次の情報を入力してください):
追加のコンテキスト
フレッシュインストールベースのanaconda環境で実行しています。
良い点ですが、これは非常に危険です。
--validate
を有効にすると、この問題は特定されますが、パラメータファイルの検証はデフォルトでオフになっています。
@JoostJM常に検証するとは限らない理由はありますか? --validate
フラグをyes / noに切り替えて、デフォルトでyesに設定してはどうでしょうか。
調査しますが、私が知る限り、cmd行を正常に実行するとパラメータファイルも検証されます。 --validate
は通常のPyRadiomicsインターフェースを使用しますが、パラメーターファイルを検証し、すべての提供イメージパスとマスクパスが存在するかどうかを確認するだけです。
昨日見て、問題を確認できました。
これは確かに特徴抽出器の__init__
関数のバグであり、文字列が存在しないファイルを指すパスである場合はサイレントに失敗し、デフォルト設定を適用します。 これを更新する場合。
検証中に、パラメータファイルのパスが無効な場合、エラーがログに記録されます。
有効なファイルパスを渡すと、パラメータファイルは両方の場合で検証されます。つまり、ピラディオミクス構成スキーマに準拠しているかどうかがチェックされます。 これは、辞書が特徴抽出器の初期化のための単一の位置引数として渡される場合にも当てはまります(「設定」タイプの構成パラメーターとして解釈される拡張辞書/キーワード引数ではありません)。
これは、辞書が特徴抽出器の初期化のための単一の位置引数として渡される場合にも当てはまります。
これに関して、あなたはどのような辞書を意味しますか? ドキュメントには次のように書かれているため:
タイプ1(画像タイプ)およびタイプ2(フィーチャクラス)のパラメーターは、パラメーターファイルを使用する場合の初期化時にのみ提供できます。
あなたが設定辞書を意味しない限り、私はと特徴抽出initalizeときmydict
の代わりに**mydict
、それが仕事になっているの? 前者の場合の検証は、dictの設定に関係なく_常に_失敗するように見えるためです。
編集:気にしないで、関連するドキュメントを見つけました:
初期化時に、必要なすべての設定(キー「setting」、「imageType」、および/または「featureClass」を含むトップレベル)を含む[...]ディクショナリを提供できます。 これは、最初の位置引数として渡すことによって行われます。