ウェビナー参加者よりQ&Aに寄せられた質問

Q1. 先生方がRではなく、pythonを使う理由を教えていただけますでしょうか?例えば、single cell解析との相性が良いといった理由があるのでしょうか。
・データサイズのスケーラビリティと、深層学習への対応がやはり一番大きな理由です。深層学習は良くも悪くもPythonが標準的なインターフェースになってしまっているので。そのため、シングルセル解析関連でニューラルネットワークが関わるツールの大半がPython実装です。また、ジェネラルな言語なので、数値計算やグラフ描画だけでなく、サーバ管理からウェブアプリケーション開発までなんでもPythonで賄える点も大きなところです。
・個人的な理由でよろしければ。自分の場合は、RとPythonを使い分けています。たとえば、高速に巨大なテキストの処理をする場合はPython、図を書く時はR(ggplot)を使うことが多いです。あと、たまたまですが、Pythonを覚え始めたころ=機械学習and/or深層学習ブームがあり、機械学習関連で使う機会が増えたという理由もあります。
Q2. 私はbulk RNA-seqデータの検定には、RでEdgeRを使用することが多いです。EdgeRとDESeq2のどちらの方が良いでしょうか?(おすすめはありますでしょうか?)本日教えて頂いたので、PyDESeq2も試してみたいと思います。
どちらも長年使われてきた手法だけあって、それぞれユーザコミュニティが育っておりドキュメントやチュートリアル、バグ除去もしっかりしていますし、人気が二分しております。いろいろなベンチマーク論文でもどちらもあまり差がないという結果が多いので、どちらを使うかは好みの問題と思います。
Q3. 今の深層生成モデルの最初の部分で、import scviでImportError: cannot import name ‘_compare_version’ from ‘torchmetrics.utilities.imports’というエラーが出たのですが、追加でインストールすべきものがありますでしょうか?
PCに搭載されているチップがM1やM2チップ場合に、scviのインポートがうまくいかないようです。お使いのPCの環境はいかがでしょうか?windowsでは十分に動作検証ができておらず解決につながるか不明ですが、公式サイトに jax を追加でインストールする必要がある旨が書かれていました。https://docs.scvi-tools.org/en/stable/installation.html#windows
Q4. 昨日から何度か出ているwarningで、以下のようなものがあるのですが、これもMac特有の問題でしょうか
Intel MKL WARNING: Support of Intel(R) Streaming SIMD Extensions 4.2 (Intel(R) SSE4.2) enabled only processors has been deprecated. Intel oneAPI Math Kernel Library 2025.0 will require Intel(R) Advanced Vector Extensions (Intel(R) AVX) instructions.
Appleシリコン(M1,M2チップなど)を利用しているために出ている警告だと思います。IntelのMath Kernel LibraryはIntelチップ用に最適化されたパッケージなので、本来はAppleシリコンに最適化された数学ライブラリを使った方がいいと思います。エラーが出ていなければ、計算効率は落ちるとはいえ結果に影響はありません。
Q5. CellAssignのモデルのセットアップの際に、countでなくscviで得られたscvi_normalizedを指定することは可能か、推奨かどうか教えていただけないでしょうか。
非推奨です。CellAssignは生のカウントデータを生成するモデルを仮定しています。scviで正規化したデータは、仮に整数値に丸めたとしても、元のデータのスケールや分布とは大きく異なり、CellAssignが仮定しているモデルにはフィットしない可能性が高いです。
Q6. 事前にインストールしたモジュールの中に、cellrankがありましたが、cellrankについて詳しい解説等がありましたら、教えて頂きたいです。
去年の講習では扱ったのですが今回はスキップしてしまいました。去年の動画で少し解説していますので、現在も公開中の動画をごらんいただければと思います。使っているデータセットなどは同一のものです。
Q7. seuratで作成したクラスターをvelocyteに反映することはできますか?loomファイルに入れることはできますでしょうか?
はい、AnnDataをpython側で構成したときに、seuratで検出したクラスタ情報を書き出しておいたファイルを読み込んで、obs側のメタデータに格納すればOKです。
loomファイルについては仕様がよくわかっておらず、可能かどうかわからないです。seuratのh5seuratとscanpyのh5adであれば相互変換可能です。
Q8. バッチとdrop-outイベントの補正の観点からscviに期待してしまっているのですが、実験条件(刺激/非刺激, 健常/疾患など)のDEGを計算する際にscviで補正した発現推定量で論じることはできるのでしょうか。
またlayerにscvi_normalizedを残しておいて、これをよく利用する解析などあれば教えていたけないでしょうか。
はい、基本的には、scvi_normalizedの数値をすべてのベースに、通常のscRNA-seqのさまざまな解析に関する議論ができます。すべて、normalizeされた値をベースに議論しても問題ないと思います。たとえば、trajectory上の発現量ダイナミクスをこの値をベースに検討するなどもできると思います。カウントを利用する確率モデル推論には使わないようにすることだけ注意が必要です。
Q9. 私はM2 マックで、Visual Studio Code を使っています。python3 をインストールしましたが、こちらでも使えるでしょうか?
はい、大丈夫だと思います。condaの環境もVScodeから呼び出せます。
Q10. 初歩的な質問ですみません、表示されているjupyter notebookはどちらからアクセス可能でしょうか? jupyter notebookの起動自体は出来るのですが、当該ファイルの場所がわからないでいます。
Jupyter起動後、各単元に対応するディレクトリ(1-2, 1-3など)に入って、そこに置いてあるXXX.ipynbファイルをクリックすると単元ごとのnotebookを起動できます。
2-4の内容については別のリポジトリ(https://github.com/khigashi1987/scRNAseq_handson_2023.git)なので、そちらに記載されている手順を実行して、Python_scRNAseq_2.ipynb のファイルをクリックすればアクセスできます。
Q11. ファイル読み込みのところで、UsageError: Line magic function `%cat` not found. と出るのですが、どうすればよいですか?
おそらくwindowsをお使いかと思います。magic functionはOS側で用意されているコマンドを使えるようにするコマンドなので、OS側で用意されていないとnot foundになります。WSLが使える場合はWSLでjupyter notebookを起動していただければと思います。WSLが使えない場合はmagic commandのcatは今回の講習の本質的な部分ではありませんので、飛ばしていただいて大丈夫です。
Q12. Python の追加モジュールを conda の仮想環境内にインストールする工程で、conda install -c conda-forge scvi-tools が完了できませんでした。 以下の後進まず、フリーズしてしまいます。
ーーー
(pags2023) bash-3.2$ conda install -c conda-forge scvi-tools
Collecting package metadata (current_repodata.json): – WARNING conda.models.version:get_matcher(556): Using .* with relational operator is superfluous and deprecated and will be removed in a future version of conda. Your spec was 1.7.1.*, but conda is ignoring the .* and treating it as 1.7.1
done
Solving environment: unsuccessful initial attempt using frozen solve. Retrying with flexible solve.
ーーー
もしかすると、mambaというツールを使ったらインストールできるかもしれません。まず、
conda install -c conda-forge mamba
でmambaを入れていただいて、そのあと、
mamba install -c conda-forge scvi-tools
を試してみていただけますか?