Closed aki2274 closed 3 months ago
@aki2274
例外処理の部分も併せてここで解決できればと思います
について、具体的にどの部分を見るべきか、ご教授いただけますか?🙇
related to #90
サブコマンド名がcreateですが、こちらpreprocessとか、前処理であることを明示したほうが良いかも、と思いました👀.transcript nameはtranscript name(Refseq ID)と明記するとよいでしょう
承知しました.そのように変更します.
関連して、こちら一度preprocessを行ったら、同一の入力が来た場合にはスキップするべき(もう一度実行する必要がないので)と思いますが、そのようなスキップ処理は実装されていますか?
スキップ処理は行っていないです.確認して行うようにします.
chromosome_fasta_pathのヘルプメッセージの"Path to the chromosome fasta file.(ex. mm39.fa)"について、ex.ではなくe.g. でしょうか?
e.gのほうが一般的なようですね.修正します.
efflat_pathやchromosome_fasta_pathが、正しく渡されているか、それぞれの形式を判定する関数はございましたか?
こちらの最後の関数で行っているつもりです.またargparsreでpathを受け取るようになっています.この手法でよろしいですか?
たとえば、refflat_pathに、全然違うファイルを誤って入力してしまった場合にエラーは出ますか?
1つ上のような対応なのですが不十分ですかね?
例外処理の部分も併せてここで解決できればと思います
main.py,create_gene_dataclass.py,main.py の3つになります.(ブランチが違ったらすいません.) printとraiseが十分そうであるか確認いただければと思います.
efflat_pathやchromosome_fasta_pathが、正しく渡されているか、それぞれの形式を判定する関数はございましたか?
のご対応について、ありがとうございます。
拡張子で判断するのはとても良い対応だと思います。
一点、The fasta file must be .fa file
ですが、.fasta
を加えても良いかと思います。ちなみに、DAJIN2ではfa, fasta, fa.gz, fasta.gz
の4つをサポートしています。
fastaファイルは主に以下の拡張子で扱われます。 <一般的>
.fa
.fasta
<たまに gz圧縮>
.fa.gz
.fasta.gz
<極稀なので無視してOK (DAJIN2では無視してます。issueが来たら対応しようかと😅)>
.mfa
.mfasta
.fastaも受け付けるようにしました.とりあえず圧縮ファイルの解凍は各人でお願いする感じでもよいですかね...
printとraiseが十分そうであるか確認いただければと思います.
拝読しました!
↑ raise
ではエラー終了となってしまうので、正常終了(printやlogging.info)のほうが適切です。
↑ 利用者はtranscript_seq_dict
が何なのかがわからないので、明示的にしたほうが良いでしょう
Transcript sequence doese not find your dataset ({refFlat.txt} and {mm39.fa}).
みたいにできますか?raiseではエラー終了となってしまうので、正常終了(printやlogging.info)のほうが適切です。
printでエラー文を示し,sys,exit()で終了するようにしました.データセットの作成, KOnezumi-AIDのmain エラーが起こった場合の挙動を変更しました.こちらについてはsysではなくNoneを返すようにしました.意図としては,複数転写産物のうち1つだけレコードされていないといった異常があった場合はコードを終了するのではなくその転写産物をスキップするのが良いと感じたからです.(KOnezumi-AID的にはそのような状況は起こらないと思いますが.)
Transcript sequence doese not find your dataset ({refFlat.txt} and {mm39.fa}).みたいにできますか?
エラーが起こった場合の挙動を変更しました.こちらで文章を変えています.引数にファイルパスを受け付けるのはpreprocessの時のみなのでこのような表示にしました.
すみません、言葉足らずでした…!
raiseではエラー終了となってしまうので、正常終了(printやlogging.info)のほうが適切です。
こちらは、以下のコードだけに該当する助言でした。
こちらでは、「すでに前処理が終了しています」ということなので、エラーではなく正常終了にしたほうが良いのですが、他の箇所はなんのエラーなのかを明示するために、raise
を使うのが適切です。。。
print/sys.exit(1)
にご変更していただいたのは大変申し訳無いのですが、konezumiaid.main以外のエラーコードを、raiseに戻していただけますと幸いです🙇
ご不明なことがございましたら何なりとご指摘ください。
勘違いしていました.raiseに戻しておきました.
エラーが起こった場合の挙動を変更しました.こちらで文章を変えています.引数にファイルパスを受け付けるのはpreprocessの時のみなのでこのような表示にしました.
こちらはそのままでよろしいでしょうか.
早速のご対応をありがとうございます。
エラーが起こった場合の挙動を変更しました.こちらで文章を変えています.引数にファイルパスを受け付けるのはpreprocessの時のみなのでこのような表示にしました.
文章の変更はとても良いと思います!
一方で、私の理解が追いついていないのですが、エラー扱いとしない理由はなんでしょうか?
両者とも、print
ではなくraise
のほうが適切に思えるのですが👀
まず,
(KOnezumi-AID的にはそのような状況は起こらないと思いますが.)
こちらはgene symbolを受け付けてそのtranscript ごとにKOnezumiAIDを動かしているようなながれになっています. raiseで終了するとgene symbolでの検索自体にエラーを出します.しかし,その中のtranscriptの1つがエラーでもほかのtranscriptが動くのならばそれを表示したほうが良いのでないかと思ってやりました.refFlatのデータと配列情報が別にあるので万が一の参照ミスがある場合の対応かなと考えていました. gene Xに3つのtranscriptsがあった時に,1, 〇 2, RefSeq idから正しく配列を取得できない 3, 〇 の場合1,3の共通するガイドをgene Xの候補として取り出すイメージです. 説明下手ですいません,伝わりますか? ですが,書いててraiseのほうがよい気もしました.意図が伝わってましたらどちらのほうがよいか意見いただければと思います.
ご説明をいただき、ありがとうございます!
raiseで終了するとgene symbolでの検索自体にエラーを出します.しかし,その中のtranscriptの1つがエラーでもほかのtranscriptが動くのならばそれを表示したほうが良いのでないかと思ってやりました.
理解しました🙇 滝さんのご指摘の通り、このような状況は(前処理でrefflat.txtとmm39.faを正しく利用している場合には)には起こらないと思いますが、いかがでしょうか。
もしtranscriptが動かない場合には、前処理に使った「refFlatのデータと配列情報」が間違っている可能性が高い、という印象があります。前処理に間違ったデータを使用したケース以外で、このエラーを起こす可能性はありますか?前処理に間違ったデータを使用したケースでは、他のgRNAのレポートが正しい保証はないので、raiseでエラーを出したほうが良いかと存じます。
argparseを使って引数を受け取るようにしました. createdataをサブコマンド化するための動作も行っています.このあたりの引数の受け取り方は正しいでしょうか.ご確認いただければと思います. また,例外処理の部分も併せてここで解決できればと思います.コメントよろしくお願いします.