macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

グラフィカルなリソース監視ツール Netdata

2020 5/8 説明追加

 

 Netdata は、システムやアプリケーションのパフォーマンスをリアルタイムで監視する監視エージェントである。Netdata を使うと、非常にインタラクティブな Web ダッシュボードを使用して、実行中のシステム (Web サーバ、データベース、アプリケーションを含む) で発生しているすべての事象をリアルタイムで把握する事が出来る。

 非常に効率的なデータベースは、数日、数週間、数ヶ月の長期的な履歴メトリクスを、すべて1秒単位の粒度で保存する。この長期ストレージを自律的に実行したり、Netdata を既存のモニタリングツールチェーン(Prometheus、Graphite、OpenTSDB、Kafka、Grafana など)と統合したりすることができる。Netdata は高速かつ効率的で、すべてのシステム(物理サーバ、仮想サーバ、コンテナ、IoT デバイス)で永続的に動作するように設計されており、コア機能を中断することはない。フリーのオープンソース・ソフトウェアで、現在はLinuxFreeBSDmacOSのほか、KubernetesやDockerなどの派生システムで動作する。v1.12から、Netdataはデフォルトで匿名の利用情報を収集し、Google Analyticsに送信する。これらの統計情報は、バグの発見や新機能の優先順位付けのためにのみ利用される。

 

"Once you use it on your systems, there is no going back! You've been warned..."

Githubより)

 

ABOUT NETDATA

https://www.netdata.cloud/about/

 

 

 インストール

本体 Github 

ここではdockerイメージを使う

#dockerhub(link)
docker pull netdata/netdata

 

 

実行方法

dockerイメージを実行する(*1)。

#常駐させる
docker run -d --name=netdata \
-p 19999:19999 \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata

#from source(指示に従ってインストールする。linux対象)
bash <(curl -Ss https://my-netdata.io/kickstart.sh)

ローカルマシンで実行しているなら、localhostのポート番号19999、つまりhttp://localhost:19999/ にアクセスする。

 

様々なリソースを監視できる。

f:id:kazumaxneo:20200508185536p:plain

 右端にメニューが表示されているが、監視対象は非常に多いため、環境によっては何十ページ分も下にスクロールされる。

 

グラフ上にカーソルを合わせると、その時間における他のリソースの使用率が上の円グラフに表示される。=> 過去のxxxというタイミングでどんな負荷がかかっていたか素早く確認できる。

f:id:kazumaxneo:20200508213353p:plain

右端のボタンで時間軸の縮小、拡大、移動が可能。▶︎で初期状態。

f:id:kazumaxneo:20200508190544p:plain

 

 設定を変えずとも、24hまで縮小できる。これはmac miniのCPU利用率の1日の推移。

f:id:kazumaxneo:20200508212950p:plain

タッチパネルなら指で時間軸をスクロールできる。まさに監視ツールといったところ。

 

上のメニューのAlarmをクリックすると、異常時や高負荷時の警告ログを出したり、アラームを出すことが可能。この辺りは完全にサーバー用途。

f:id:kazumaxneo:20200508190134p:plain

引用

https://github.com/netdata/netdata

 

参考

 

*1

ホストを監視するためにコンテナ内でエージェントを実行すると、その機能が制限されることがある。これを回避すルため、Dockerコンテナに特別なマウントを提供することで、Agentが/sysや/procフォルダ、さらには/etc/groupやシャドウファイルのようなホストOSの情報を可視化できるようにする。詳細はdocumentを読んで下さい(link)。

 

補足

ctop、vtop、gtop、glancesなども簡単に導入できます。私はmacにglancesを入れています。

#anaconda (link)
conda install -c conda-forge glances -y

#pipにも対応
pip install glances

 

 

Jupiter notebookの使い方其の4 まとめ

2020 5/11 誤字修正

2020 10/9 リンク追加

2020 11/8 論文リンク追加

 

 3回にわたってjupyter notebookの簡単な使い方を説明してきました。 これまでの説明でjupyter notebookはどうやって使うのか、ある程度は伝えられたかと思います。ここで改めてJupiter notebookの特徴を書き出してみます。間違いがあれば教えて下さい。

  • コードを実行し、その場で出力を得るwebベースの対話式ノートブックである。
  • markdown記法を使って構造化された文章や数式を表現できるため、マニュアルとコードを一体化できる(*1、2)。
  • わかりやすく言えば、テストランができてしまうコマンド環境の"説明書"である。 わかりにくい。
  • 時系列はあるが各々のコードセルはその場でいつでも再実行できる。また、使用したコードと手順は全て表現できるので、再現性のある解析を簡単に行う事ができる。
  • ノート自体は軽量なjsonファイルである。Githubなどを介した共有・配布が容易にできる(サイズが大きなオミクスデータはノート上でダウンロードする。またはリンクを張る)
  • IpythonカーネルPythonとJupiter notebookの橋渡しを行なっている。Ipythonカーネル以外にIjuliaカーネル、IRubyカーネルBashカーネルなど様々存在する(link)。
  • Jupiter notebook自体はIPythonカーネルによって提供されるwebインターフェイスを提供しているに過ぎない。
  • オープンソースOSS)の成果物であり、maclinuxwindows問わず無料で利用できる。
  • 数式だけでなく動画リンクも埋め込めたりする(HP)。

このように、Jupiter notebookというのは、コードから出力まで、全てが表現できる研究・実験ノートというわけです。ノート1つで完結し、コードはいつでも再実行できるため、論文のsupplementary documentとして提供すればデータ分析プロセスに透明性が出るでしょう。Jupiter notebook相当の実験ノートを要求する生物系のジャーナルも今後出てくるかもしれません。

 

それでは皆様はJupiter notebookをどのように使われているのでしょうか?公開されているレポジトリを少し覗いてみましょう。

講習会に使う。

書籍の補足資料として使う。

コマンドの使用手順をまとめる。

ツールのチュートリアル(2020 5/24追記)

 project jupyterオフィシャル - 興味深いノートブックへのリンク

 2021 6/4


 

Jupiter notebookでHTSのデータ分析環境を提供するツールの論文も出てきています。

授業や講習会

TGSのデータ解析環境

ゲノミクス可視化ツール

 Jupyter notebook based genomic data visualization toolkit. (Preprint)

 igv-jupyter - igv.js をラップする Jupyter Notebook 用の拡張機能

#igv-jupyter(python >= 3.6.4, jupyter >= 4.2.0)を導入後ノートブックを起動
git clone https://github.com/igvteam/igv-jupyter.git
cd igv-jupyter/examples
#launch
jupyter notebook

操作可能です。コードを見て下さい。呼び出す方法がシンプルなので、いつでもjupyter notebookで使えそうです。素晴らしいですね。

f:id:kazumaxneo:20200507203105p:plain

今後、時間を見つけてこれらのツールも紹介していきます。


このブログの説明より動画の方が理解しやすいかもしれません。 動画を3つ埋め込んでおきます。

Jupyter Notebook の基本的な使い方

Python講座】第11回 Jupyter Notebook の使い方について【独り言】

 

こちらはVSCode内でのJupiter notebook環境を説明した動画です。すごく聴きやすいです。

 株式会社キカガク - VSCodeにJupyter Notebookの環境が! | お役立ち情報シリーズ

VSCode内でのJupiter notebook環境はJupiter labに近い感じです。こちらの拡張機能をインストールすると使えるようになります。実際に使う際は、コマンドパレットからPython: Create Blank New Jupyter Notebookを選択するか、新規書類のセーブ時にjupyter notebookを選択してjupyter notebookモードにします。(*8)

 

3つ目はGoogle Colaboratory(以下、Google Colab)の解説動画です。事前に構築したJupyter notebookのノートを、Google Colaboratory Notebook Style Transferという機能を使ってワンクリックでGoogle Colabに移して実行しています。Google ColabはGoogleが提供するクラウドのJupiter notebook環境で、Googleのアカウントをもっていれば誰でも使う事が出来ます。

Google Colabでは、GPUやTPU(深層学習に特化した行列演算専用プロセッサ。汎用プロセッサであるGPU・CPUより効率的)が使えるのが大きなメリットです。無料版では13 GB 近いRAMも利用できます。深層学習向けのライブラリはすでにインストールされているため、すぐに使い始める事ができます。

クラウドなので、データは前もってアップロードか(参考サイト)、レポジトリに置いたデータにリンク読み込めるようにするなど工夫する必要があります。この動画のノートは以下のレポジトリで管理されています。よかったら試してみて下さい。

 

こちらは、統合TVから公開されているBioJupiesというRNA seq分析ツールについて説明した動画です。BioJupiesは分析結果をJupiter notebook形式で出力します。

6:00ごろからです。

 

まとめ

 要点だけですが、4回にわたってJupiter notebookの使い方を紹介してきました。使えそうでしょうか?メリットばかり強調して書いてきましたので、いざ使い出してみると細かいところで使い難さを感じるかもしれませんね*5。しかしそれもそのはずで、"Jupiter notebook"という存在はまだまだ新しく、成熟しきっていないのです。これは、新機能を導入した言わば第3世代notebook*7であるjupyter labの開発が積極的に続いている事からも示唆されます。公開されているノートブックが少ない事もその証左かもしれません。 しかしながら、Jupiter notebookは使わない・使えないと判断したとしても、学んだ時間は無駄ではないと考えます。新しい環境・道具は自分の文脈で使う事で本当の価値が理解できます(=あなたは不満を口にする権利を手に入れた!)。そして、その瞬間では価値がないように思える物事も、将来的には学んでおいてよかった、またはその経験がアンカーとなって次に繋がる事はザラにあるからです。現在のJupiter notebookはそうゆう微妙な立ち位置にいる感じがします。自分のペースで使い方を学び、機会があれば自身の研究に取り入れていただければと思います*6。

 最後に蛇足ですが、バイオインフォマイクスは情報学と生物学の学際的な研究分野であるため、現在はプレイヤーの絶対数はまだまだ多くありません。Jupiter notebookのような研究の再現性を担保する環境が整うことで、バイオインフォマイクスは面白い研究分野だと感じてくれる若い人が増えてくれれば素晴らしいですね。

 

*最終回みたいな内容ですが、これからも継続していきます。応援よろしくお願いします。次はJupyter labかGoogle Colabあたりについて説明します。

引用

Jupyter Notebooks – a publishing format for reproducible computational workflows

Kluyver, Thomas, Ragan-Kelley, Benjamin, Pérez, Fernando, Granger, Brian, Bussonnier, Matthias, Frederic, Jonathan, Kelley, Kyle, Hamrick, Jessica, Grout, Jason, Corlay, Sylvain, Ivanov, Paul, Avila, Damián, Abdalla, Safia, Willing, Carol and Jupyter development team, (2016) Jupyter Notebooks – a publishing format for reproducible computational workflows. Loizides, Fernando and Scmidt, Birgit (eds.)

In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press. pp. 87-90 . (doi:10.3233/978-1-61499-649-1-87)

 

 参考

 *1

LaTeXで論文を書くというのは情報系の分野で時々耳にします。markdownでなんとか論文を書こうとしている方もいらっしゃるようです。

 

*2

技術系資料作成時にwordの代わり使っている方もいるようです(参考)。

 

*3

少し前の動画のため、おそらく依存ライブラリの関係でpython2のコードになっています。python2のサポートが終わったため、Google colabでもpython2のコードのサポートは終了しています。正常に動作しないかもしれませんがコードのバグではありません。注意して下さい。

 

*4

Google colabプロ版ではより長い接続時間(無料版の最大12時間 => 最大24時間)、より大きなメモリ、より高速なGPU、CPUなどを使用できるようになります。月単位のSubscriptionサービスです。

 

*5

1つデメリットを挙げるとすれば、Jupiter notebookのコードセルは逐次実行するようになっているため、長い計算を複数のセルで同時実行することはできない事でしょうか。これは当然の仕様ですが、HTSのデータ解析ではそれなりに時間がかかる長いジョブを並行して複数走らせる事もままあります。そのため、時間のかかるジョブをJupiter notebookで実行すると使いにくくなります(前もって計算中に次のコードセルを実行しておくか、Run allすれば、並列化できなくてもオーバーナイトで全コードセルのランは進められる)。そのためか、ターミナルの劣化版という意見もあります。

 

 

*7 

Ipythonが初代

 

*8

jupyter notebookは同一LAN内にある計算サーバーで動かして、そこにローカルマシンからアクセスして使うこともできます。VScodeでJupyter notebookを使うときも同じ事ができるようになっています。

 

1−3回目のリンクです。 

1、Jupiter notebookのインストールと操作方法

2、Markdown

3、数式とマジックコマンド

 

 

補足

1、defaultのconfigファイルを書き出す。環境設定などを変更するときに使う。例えば計算機サーバーに入れてリモートログインする場合のパスワード設定などを書き込むなど。

jupyter notebook --generate-config

 

2、nbextensionsのインストール(*10)

Jupiter notebookの拡張機能。コード補完やコードの整形、出力非表示など様々なことができるようになる。

GIthub

#anaconda (link)前回作成した仮想環境に導入
conda activate jupyter
conda install -c conda-forge jupyter_contrib_nbextensions -y

#condaを使ってないならpipで導入する
pip install jupyter_contrib_nbextensions

jupyter notebookを起動すると、右端にNbextensionsタブができる。

f:id:kazumaxneo:20200503013109p:plain
Notify

しばらく操作が止まっている場合が通知してくれるようになります。ONにしておけば、長い計算をする時、計算が終わったら教えてくれます(*5)。

 例えばジョブ環境後5秒間操作がない時に通知。

f:id:kazumaxneo:20200506165122p:plain

通知が来ます。音が鳴るようにもできます。

f:id:kazumaxneo:20200506164834p:plain

(コントロールパネル => safari => バナー通知ON、にしておく)

 

nbextensionsについてはこのページに詳しくまとめられています。

 

2020 11/8

バイオ/健康情報学分野の教育環境でJupyterノートブックを使用する際の基本的な側面を紹介した論文。また、ケーススタディとして、プログラミングスキルを教えるためにJupyterノートブックをどのように使用したかを説明している。


2021 4/27

 

 

 

 

Jupiter notebookの使い方其の3(数式とマジックコマンドについて)

更新中

 

第3回の今回は、数式の表示とマジックコマンドについてです(第2回)。Jupyter Notebookに含まれるMarkdownパーサーはJSのMathJaxライブラリ(wiki)に対応しており、LaTex( ラテック、ラテフ)で書いた数式をノートブック上にレンダリングして表示することができます。数式を載せることでコードをノート上に載せるだけよりずっと理解しやすくなります。手順はシンプルで、Markdownモードにして$ $または$$ $$で囲んで数式を書くだけです。

 

Jupiter notebook Docu ment - Motivating Examples

 

実際に書いてみましょう。 Markdownモードにして書きます。数式部分は$$ $$で囲むか、\begin{math} \end{math}で囲みます(mathは紛らわしくない適当な文字)(*1)。

f:id:kazumaxneo:20200505125152p:plain

出力です。数式なので変数は斜体(イタリック)、数値、演算子は立体(ローマン)です(*2)。

f:id:kazumaxneo:20200505125329p:plain


こちらは

f:id:kazumaxneo:20200505122610p:plain

オイラーの等式でした(*3)。

f:id:kazumaxneo:20200505122622p:plain

$ $だと左揃え)

 

複雑な数式もLaTeX記法で書きます。

f:id:kazumaxneo:20200505002152p:plain

出力

f:id:kazumaxneo:20200505002421p:plain

このような感じです。

$ $を改行なしで書くと

f:id:kazumaxneo:20200505002602p:plain

文章中に埋め込む事ができます。

f:id:kazumaxneo:20200505002607p:plain

 

このように美しい数式を書けますが、LaTeXに慣れていないと大変です。書き方が分からない時は奥村晴彦先生LaTeX2ε美文書作成入門などがバイブルになると思います。

 

こちらはMathJaxのコマンド紹介サイトです。コピペするだけで使えます。

 

補足 

最近では数式からLaTeX記法に変換するツールも存在します。こちらのブログ記事を読んで下さい。 

数式部分を囲むだけでほぼ正しくOCR化して変換してくれます。すごいアプリです。

f:id:kazumaxneo:20200505115453p:plain

ログイン後、右上からアプリをダウンロード。アプリを常駐後、commnad + option + M(winPCはCtrl + Alt + M)で数式キャプチャ(上限あり*4)。

 

 

マジックコマンド 

 次はマジックコマンドについて簡単に説明します。マジックコマンドはIPythonカーネル固有のコマンドで(jupyterとipythonの違い)、ディレクトリ移動、ファイル一覧、python以外のコードの表示機能などを可能にする、ノートをサポートする役割を持つ一連のコマンド群です。%をprefixとして%pwdのように始めます。%を使うのは、%はPythonでは有効な単項演算子解説サイト)ではないためです(%無しでも初期は認識されるが変数を定義すると上書きされる)。

 

Jupiter notebook Docu ment - Built-in magic commands 

 

少しだけコマンドを挙げてみます(*6)。Markdownモードの人はコードモードに戻して下さい(Y)。

 

%pwd

現在のパス

f:id:kazumaxneo:20200505173202p:plain

unixpwdと同じですが、あくまで機能をミミックしたコマンドです。

 

%pwd??のように??を2回でソースコードを表示します。

f:id:kazumaxneo:20200505173637p:plain

(escで閉じる)

?1回でhelp表示になります(編集モード中にshft + tabでも可能)。%pwd?だと

f:id:kazumaxneo:20200505173747p:plain

 

%cd 

作業ディレクトリ変更(移動)

f:id:kazumaxneo:20200505174518p:plain

 

%ls

ファイル一覧表示

f:id:kazumaxneo:20200505175341p:plain

 

%rm 

ファイルを消す

f:id:kazumaxneo:20200505180145p:plain

 

%run xxx.pyで外部のpythonスクリプトxxx.pyを実行。

(外部の jupyter ノートブックの実行も可能) 

 

%matplotlib

%matplotlib inlineを宣言しておくと、Notebook内にmatplotlibの結果を描画する。Notebook上でmatplotlibを使うために必要。

 

%lsmagic

現在利用可能なマジックコマンドを表示

f:id:kazumaxneo:20200505135713p:plain

 

これ以外にもたくさんのマジックコマンドがあります。Qiitaの記事を読んでみてください。

 

駆け足でしたが、これで基本的な事は説明しました。明日はまとめの文章を書きます。 

引用

Jupyter Notebooks – a publishing format for reproducible computational workflows

Kluyver, Thomas, Ragan-Kelley, Benjamin, Pérez, Fernando, Granger, Brian, Bussonnier, Matthias, Frederic, Jonathan, Kelley, Kyle, Hamrick, Jessica, Grout, Jason, Corlay, Sylvain, Ivanov, Paul, Avila, Damián, Abdalla, Safia, Willing, Carol and Jupyter development team, (2016) Jupyter Notebooks – a publishing format for reproducible computational workflows. Loizides, Fernando and Scmidt, Birgit (eds.)

In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press. pp. 87-90 . (doi:10.3233/978-1-61499-649-1-87)

 

参考

*1

 

*2

 

*3

映画にもなった "博士の愛した数式"(新潮社)で有名ですね。

 

*4 


 *5

独自のマジックコマンドを登録することもできます。 

 

*6


そのほか参考にした資料

TEXLaTeXの違い

 

Jupiter notebookの使い方其の2(Markdown記法について)

2020 5/4 誤字修正

2020 5/5  リンク追加, 構成変更

 

 Jupiter notebookの使い方を解説する記事の第2弾です(第一回はこちら)。今回はJupiter notebookがサポートしているMarkdown記法について説明します。Markdownはプレーンテキストの文書からマークアップ言語であるHTMLを生成するために開発された軽量マークアップ言語です(wiki)。Markdownで書いた文章はパーサを通して構造化された文章として表示されます。HTMLは書きにくいので、これを補うために開発されました。

 Markdownを使うと、構造化された文章をコードやバイオインフォのコマンドの間に表示 して、まさにデジタルノートといった使い方ができるようになります。下の写真をみてください。コードの間にMarkdown記法で説明文を書いています。

f:id:kazumaxneo:20200503181500p:plain

(写真は例です)

このようにコードの間に構造化された文章を差し込んで見やすいマニュアルを作れます。

 

Jupiter notebook上でMarkdownに切り替えるには、コマンドモード時にMを押します。

f:id:kazumaxneo:20200503223515p:plain

Mを押すと左のIn []が消え、セルがMarkdownモードになります。この状態でEnterを押すとMarkdown記法で記入できます。コードモードに戻すにはYです。

 

Markdownの書き方を書く前にjupyter notebook以外のMarkdown普及状況について説明します。興味がなければステップ2に行って下さい。

 

Jupyter Notebook Document - Markdown basics

 

1、Markdownに対応したエディタ、ブログサイト、ツールなど

 普通のエディタでもMarkdownの編集はできますが、リアルタイムプレビュー表示がないとたいへん不便です。そのためMarkdown記法のリアルタイムプレビューに対応したAtomエディタ(プラグインで対応)やマイクロソフトVS codelink)(関連ツイート)が汎用のMarkdownエディタとして最近はよく使われているようです。さらにMacDownのようなMarkdown専用エディタや(HP)やweb上でMacDownを編集できるStackEdit(HPの一番上にあるstart editingをクリック)などのサイトも複数存在します。また、iOSAndroid向けのMarkdown対応エディタ、Sphinxなどのmarkdown記法に対応したツールなど色々あります(*2)。拡張機能を入れることで、gmailですらMarkdown技法に対応します(リンク)。

 Qiitaやはてなブログの記事はMarkdown記法をサポートしており、見やすい技術系記事を簡単に作成できるようになっています。

f:id:kazumaxneo:20200503185444p:plain

はてなブログではMarkdown記法で記事を作成できる。

 

 Markdownが身近な存在であるよりわかりやすい例は、GithubREADME.mdです(*1)。README.mdはGithubレポジトリのトップに表示されるDocumentで、プロジェクト新規作成時に自動で生成されます(自動作成のチェックをつけている場合のみ)。このREADME.mdはMarkdown記法で書かれています(*3)(.mdはmarkdownの略)。

 1つ既存のレポジトリを見てみましょう。 下に載せた写真はロングリードのアセンブラFlyeレポジトリのトップ画面のキャプチャです。

f:id:kazumaxneo:20200503163949p:plain

 

README.mdはMarkdown記法に従って書かれています。確認のため、FlyeアセンブラのREADMEをMarkdownエディタで開いてみましょう。

 

まずFlyeのソースコードをダウンロードします。緑のclone or download ボタンからDownload Zipを選択。

f:id:kazumaxneo:20200503171457p:plain

 

zipファイルを解凍して中のREADME.mdをVS codelink)で開いたのが下の写真です。ウィンドウの左半分がMarkdownのコード、右半分がプレビュー表示というレイアウトです。プレビュー表示がwebブラウザでFlyeレポジトリにアクセスした時と同じ体裁になっていることを確認してください。

f:id:kazumaxneo:20200503121615p:plain

VS codeでFlye(github)のREADME.mdを開いたところ。macではCommand + KVMarkdownの2画面リアルアイムプレビューモードになる。背景が黒いのはVS codeの仕様。

 

f:id:kazumaxneo:20200503165920p:plain

MacDown(HP)でsomalierというツールのREADME.mdを開いたところ。MacDownではデフォルトで2画面リアルアイムプレビュー表示に対応。

 

このように、GithubレポジトリではMarkdown記法で書かれたREADME.mdをトップに表示することで、どんなツールやライブラリのレポジトリなのか説明しています。GIhub以外では、例えばDocker HubのDocumentもMarkdown記法で書かれています。 

f:id:kazumaxneo:20200504005826p:plain

 

追記

HackMD

軽量かつ共同編集でき、議事録を作成するなどの用途に向いたHackMDというMarkdownエディタもあります。アカウントを作ればすぐ利用開始できます。

f:id:kazumaxneo:20200504233832p:plain

 

 

・Typora

2画面表示は見にくい場合もあるので、直接MarkdownをスタイリングするTyporaのようなツールもあります(*5)。

Typora — a markdown editor, markdown reader.

f:id:kazumaxneo:20200504190755p:plain

 

こちらのサイトでは色々紹介されています(有料アプリもあります)。

 

 

2、Jupiter notebookでMarkdown記法を使う

では早速Jupiter notebook上でMarkdown記法を使ってみましょう。まず 前回と同じディレクトリでJupiter notebookを起動して下さい。

#起動(jupyter notebookでもO.K)
jupyter-notebook

  

新規ノートを作成します。ノートが立ち上がったら、今回はノート名をmarkdownに変更します(リネームは1回目に説明済み)。

f:id:kazumaxneo:20200503222833p:plain

 

コマンドモードでMを押すとMarkdownモードに変更します。pythonのコードモードに戻すにはYです。

f:id:kazumaxneo:20200503223459p:plain

 

Markdownモードになりました。コードではないため、左のIn [num]は消えています。

f:id:kazumaxneo:20200503223515p:plain

 

Enterを押してセルを編集していきます。

f:id:kazumaxneo:20200503223720p:plain

 

最初に説明したように、markdownモードでは最小限の動作で構造化された文章を出力する事ができます。まず見出しを作成しましょう。見出しは#<スペース>です。#<スペース>の後に文字を打って下さい。

f:id:kazumaxneo:20200503225908p:plain

実行前から結果はプレビューされます。

 

shift + Enterで実行します。見出しなので大きく表示されました。

f:id:kazumaxneo:20200503225842p:plain

 

見出しのサイズは#の数で調整します。#を増やすと小さくなります。htmlの見出しタグ<h>のh1-h6に対応しています。#の後にスペースを入れるのを忘れないで下さい。

f:id:kazumaxneo:20200503230403p:plain
 

実行するとこうなります。

f:id:kazumaxneo:20200503230421p:plain


HTMLタグもサポートしています。HTMLタグの<h1> </h1>で書いてみましょう(画像の一番下)。

f:id:kazumaxneo:20200503230906p:plain

 

Markdownで書いたのと同じ結果が出力されました(一番下のセル)。しかし、HTMLタグよりMarkdonw記法の方がずっとシンプルに記述できますね。

f:id:kazumaxneo:20200503231001p:plain

 

コマンドモードにしていったん不要なセルを消しましょう(dd)。

f:id:kazumaxneo:20200503231147p:plain

 

markdownモードかどうかの確認を忘れないでください。markdownモードであれば左端のIn []は無いはずです。

f:id:kazumaxneo:20200503223515p:plain

 

間違ってコードモード(Y)でmarkdown記法の文字を書いてしまった場合、編集モード中にctrl + Mを押して、

f:id:kazumaxneo:20200503231609p:plain

コマンドモードに戻します。そのまま

f:id:kazumaxneo:20200503231855p:plain

Mを押してmarkdownモードに変え、

f:id:kazumaxneo:20200503231912p:plain

再びEnterを押して編集します。

f:id:kazumaxneo:20200503232020p:plain

 

斜体は* *で囲みます。ボールドは** **で囲みます。

f:id:kazumaxneo:20200503232550p:plain

 

実行すると改行が認識されていませんでした。

f:id:kazumaxneo:20200503232842p:plain


改行するにはスペースを連続2回打ちます。この例では*斜体*<space><space>です。<space><space>は<br>タグと同じです。

f:id:kazumaxneo:20200503233213p:plain

改行されました。

 

* *で斜体、** ** でボールドでした。*** ***で斜体のボールドになります。

f:id:kazumaxneo:20200504120554p:plain

 

打ち消し線は~~ ~~で囲みます。

f:id:kazumaxneo:20200504115923p:plain

出力

f:id:kazumaxneo:20200504120203p:plain

 

 *(または+ or -)と<space> or <tab>で箇条書き(リスト)です。箇条書きの時は<space><space>がなくても勝手に改行されます。

f:id:kazumaxneo:20200504010319p:plain

出力

f:id:kazumaxneo:20200504010457p:plain

 

数値付きリスト

f:id:kazumaxneo:20200504011237p:plain

出力

f:id:kazumaxneo:20200504011239p:plain

 

リンクを張るには[テキスト](URL)、または[テキスト](URL "タイトル")です。

f:id:kazumaxneo:20200504011656p:plain

出力

f:id:kazumaxneo:20200504011717p:plain

 

URLをそのまま載せるなら<>で囲みます。

f:id:kazumaxneo:20200504120821p:plain

出力

f:id:kazumaxneo:20200504120853p:plain

 

画像は ![代替テキスト](画像のURL)です。

f:id:kazumaxneo:20200504012221p:plain

出力

f:id:kazumaxneo:20200504012141p:plain

 

区切り線を引く。*-を3回以上。

f:id:kazumaxneo:20200504012658p:plain

 

インラインでコードを埋め込む。バッククオートで` `のようにコード部分を混む。

f:id:kazumaxneo:20200504161047p:plain

 出力

f:id:kazumaxneo:20200504161050p:plain

 

コードのシンタックスハイライト表示。バッククオート3つ(```)と言語名で開始して、最後を```で囲みます。 bashスクリプトならこんな感じで書いて...

f:id:kazumaxneo:20200504121920p:plain

 

出力はこうなります。コードがコマンドや括りごとに見やすく色分けされます(シンタックスハイライトwiki)。もちろんpythonにも対応しています。マニュアルによると数百の言語をサポートしているそうです。

f:id:kazumaxneo:20200504122157p:plain

 

QiitaにはMarkdownの記法をまとめたチートシートが投稿されています。参考にして下さい。

こちらのサイトでは実際に手を動かして学ぶことができます。


長くなってしまったので今回はここまでにします。次は 数式やマジックコマンドについて書いていきます。

引用

Jupyter Notebooks – a publishing format for reproducible computational workflows

Kluyver, Thomas, Ragan-Kelley, Benjamin, Pérez, Fernando, Granger, Brian, Bussonnier, Matthias, Frederic, Jonathan, Kelley, Kyle, Hamrick, Jessica, Grout, Jason, Corlay, Sylvain, Ivanov, Paul, Avila, Damián, Abdalla, Safia, Willing, Carol and Jupyter development team, (2016) Jupyter Notebooks – a publishing format for reproducible computational workflows. Loizides, Fernando and Scmidt, Birgit (eds.)

In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press. pp. 87-90 . (doi:10.3233/978-1-61499-649-1-87)

 

参考

*1


*2

 

*3

GithubのREADME.mdはレポジトリを作成するときに自動で生成され、そのツールでどんなことが行えるのか、そしてどうやって使うのか説明する役割を持っています。詳細はGithubのヘルプを読んで下さい。

 

*4

HackMDについてはQiitaの記事を読んで下さい。

 

*5

TyporaについてはこちらのQiita記事を参考にしました。

初めてコマンドを使う人向けの解説:その3、Jupiter notebookの使い方 - 其の1

2020 5/2文章修正

2020 5/3 誤字修正

2020 5/4タイトル修正

2020 5/5 文章修正

2020 5/7 導入部分の文章と構成を変更

 

 初心者向け解説記事第3弾の今回は、急速に普及が進んでいるjupyter notebookの導入と基礎的な使い方について説明します。Jupiter notebookというのは、簡単に言うと、pythonを使ったデータ分析を行ったり、手順をmarkdownでまとめることができるデジタルノートです。2014年、Project Jupyterと呼ばれるIPythonのスピンオフプロジェクトから始まりました(開発したFernando Perezさんのスライド)。2020年現在、Project Jupyterは非営利団体によって維持されており、JupyterはGitHub上で保守・開発されています(*2)。修正BSDライセンスlink)の100%オープンソースのソフトウェアです。このJupyterという言葉ですが、これはJupyterがサポートする3つのコアプログラミング言語(Julia、Python、R)を意味します。また、木星の4つの衛星(ガリレオ衛星)を発見したガリレオガリレオノートブック(画像検索)へのオマージュにもなってるそうです(*1)。普及が進んでいるのは、オープンソースであることも大きく影響しているのでしょう。

 

 ではなぜこのノートブックが開発されたのでしょうか?Jupyter Notebooksの論文として引用される事が多い次の論文を読んで、開発の動機を確認してみましょう。下に翻訳したIntroductionを載せました。 

Jupyter Notebooks—a publishing format for reproducible computational workflows  

doi:10.3233/978-1-61499-649-1-87

1. Introduction

今日、あらゆる学問分野の研究者は、データを収集して処理したり、統計的検定を行ったり、シミュレーションを実行したり、図を描いたりするために、しばしばコンピュータコードを書く必要がある。そのために広く利用できるライブラリやツールはオープンソースプロジェクト(NumPy、Julia、FEniCSなど)として開発されていることが多いが、研究者が特定の作業のために書いた特定のコードは未発表のままになっていることが多く、再現性の妨げになっている。著者の中には、研究方法の一般的な説明の一部として、計算方法を文章で記述する人もいるかもしれない。しかし、人の言語はコードの精度に欠けており、そのような方法を再現することは、本来あるべきほど迅速ではないし、信頼性も高くはない。また、コードを別途補足資料として提供しているものもあるが、コードと文章の相互参照が困難な場合があり、著者が作業を進めていくうちに両者の整合性が取れなくなる危険性がある。
Notebooks—documents integrating prose, code and resultsは、読みやすく複製可能な計算方法を公開する方法を提供する。

 

という事です。

論文上でin silicoの実験手順を正確に記述するのは難しく、記述はしばしば不完全になります。人間が使う言語はコンピュータ言語ほど厳密ではないので、分析手順や方法の記述が不完全であったとしても、文章構造に破綻がない限り、文章が成立してしまうためです(コンピュータから見ると論理の飛躍があったとしても)。このような背景から、実験・データ分析の再現性を担保するために登場したノートブックがJupiter notebookという事です。jupyter notebookを使うと、コードを直接表記したり、コードをその場で実行して視覚的な結果を得ることができます。生データが手に入りやすい機械学習の分野での相性が高く、よく使われている印象です(書籍や動画を見ればわかります)。

 さて、前置きはこのくらいにして始めましょう。順番に説明していきますが、説明すべき内容が多いので4回に分けます。今日はJupiter notebookのインストールと基本的な操作方法について説明します。実際に何ができるのか、どのような使い方が想定されるのかは4回目の記事を読んでください。 

 

1、Jupiter notebookのインストール

まずはJupiter notebookを使えるようにします。注意点として、2回目の記事で書いている通り、anacondaを導入済みの方はJupiter notebookもJupiter labもすでにインストールされてるはずです(minicondaでは導入されない)。anacondaを導入済みの方は本ステップを飛ばし、ステップ2に行ってください。そもそもcondaを使ってないという方は、pipコマンドを使ってJupiter notebookをインストールしてください。

#anaconda (link)
conda install -c anaconda jupyter

#または2020/05時点で最新のpython3.8の仮想環境を作って導入(使うツールとの整合性を考えると枯れたpython3.6-3.7あたりの方がいいかもしれません)
conda create -n jupyter python=3.8 -y
conda activate jupyter
conda install -c anaconda jupyter -y

#condaを使ってないならpipで導入する(参考記事
pip install --upgrade pip setuptools
pip install numpy scipy matplotlib Pillow ipython[all]
pip install jupyter

(インストールしないで使う方法もありますが今回は触れません)

正常にインストールされたかどうか確認するためhelpを表示します。

jupyter-notebook -h

$ jupyter-notebook -h

The Jupyter HTML Notebook.

 

This launches a Tornado based HTML Notebook Server that serves up an

HTML5/Javascript Notebook client.

 

Subcommands

-----------

 

Subcommands are launched as `jupyter-notebook cmd [args]`. For information on

using subcommand 'cmd', do: `jupyter-notebook cmd -h`.

 

list

    List currently running notebook servers.

stop

    Stop currently running notebook server for a given port

password

    Set a password for the notebook server.

 

Options

-------

 

Arguments that take values are actually convenience aliases to full

Configurables, whose aliases are listed on the help line. For more information

on full configurables, see '--help-all'.

 

--debug

    set log level to logging.DEBUG (maximize logging output)

--generate-config

    generate default config file

-y

    Answer yes to any questions instead of prompting.

--no-browser

    Don't open the notebook in a browser after startup.

--pylab

    DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.

--no-mathjax

    Disable MathJax

    

    MathJax is the javascript library Jupyter uses to render math/LaTeX. It is

    very large, so you may want to disable it if you have a slow internet

    connection, or for offline use of the notebook.

    

    When disabled, equations etc. will appear as their untransformed TeX source.

--allow-root

    Allow the notebook to be run from root user.

--script

    DEPRECATED, IGNORED

--no-script

    DEPRECATED, IGNORED

--log-level=<Enum> (Application.log_level)

    Default: 30

    Choices: (0, 10, 20, 30, 40, 50, 'DEBUG', 'INFO', 'WARN', 'ERROR', 'CRITICAL')

    Set the log level by value or name.

--config=<Unicode> (JupyterApp.config_file)

    Default: ''

    Full path of a config file.

--ip=<Unicode> (NotebookApp.ip)

    Default: 'localhost'

    The IP address the notebook server will listen on.

--port=<Int> (NotebookApp.port)

    Default: 8888

    The port the notebook server will listen on.

--port-retries=<Int> (NotebookApp.port_retries)

    Default: 50

    The number of additional ports to try if the specified port is not

    available.

--transport=<CaselessStrEnum> (KernelManager.transport)

    Default: 'tcp'

    Choices: ['tcp', 'ipc']

--keyfile=<Unicode> (NotebookApp.keyfile)

    Default: ''

    The full path to a private key file for usage with SSL/TLS.

--certfile=<Unicode> (NotebookApp.certfile)

    Default: ''

    The full path to an SSL/TLS certificate file.

--client-ca=<Unicode> (NotebookApp.client_ca)

    Default: ''

    The full path to a certificate authority certificate for SSL/TLS client

    authentication.

--notebook-dir=<Unicode> (NotebookApp.notebook_dir)

    Default: ''

    The directory to use for notebooks and kernels.

--browser=<Unicode> (NotebookApp.browser)

    Default: ''

    Specify what command to use to invoke a web browser when opening the

    notebook. If not specified, the default browser will be determined by the

    `webbrowser` standard library module, which allows setting of the BROWSER

    environment variable to override it.

--pylab=<Unicode> (NotebookApp.pylab)

    Default: 'disabled'

    DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.

--gateway-url=<Unicode> (GatewayClient.url)

    Default: None

    The url of the Kernel or Enterprise Gateway server where kernel

    specifications are defined and kernel management takes place. If defined,

    this Notebook server acts as a proxy for all kernel management and kernel

    specification retrieval.  (JUPYTER_GATEWAY_URL env var)

 

To see all available configurables, use `--help-all`

 

Examples

--------

 

    jupyter notebook                       # start the notebook

    jupyter notebook --certfile=mycert.pem # use SSL/TLS certificate

    jupyter notebook password              # enter a password to protect the server

 

 O.K! 

 

 

2、Jupiter notebookのテーマ変更

Jupiter notebook起動前に、jupyterthemesを使って少し外観をカスタマイズします(*3)。デフォルトの方が良い方はステップ3に飛んで下さい。

#anaconda (link)
conda install -c conda-forge jupyterthemes -y
#不要になったらアンインストール
conda uninstall jupyterthemes

#pip
pip install jupyterthemes

> jt -h #help

$ jt -h

usage: jt [-h] [-l] [-t THEME] [-f MONOFONT] [-fs MONOSIZE] [-nf NBFONT]

          [-nfs NBFONTSIZE] [-tf TCFONT] [-tfs TCFONTSIZE] [-dfs DFFONTSIZE]

          [-ofs OUTFONTSIZE] [-mathfs MATHFONTSIZE] [-m MARGINS]

          [-cursw CURSORWIDTH] [-cursc CURSORCOLOR] [-cellw CELLWIDTH]

          [-lineh LINEHEIGHT] [-altp] [-altmd] [-altout] [-P] [-T] [-N] [-kl]

          [-vim] [-r] [-dfonts]

 

optional arguments:

  -h, --help            show this help message and exit

  -l, --list            list available themes

  -t THEME, --theme THEME

                        theme name to install

  -f MONOFONT, --monofont MONOFONT

                        monospace code font

  -fs MONOSIZE, --monosize MONOSIZE

                        code font-size

  -nf NBFONT, --nbfont NBFONT

                        notebook font

  -nfs NBFONTSIZE, --nbfontsize NBFONTSIZE

                        notebook fontsize

  -tf TCFONT, --tcfont TCFONT

                        txtcell font

  -tfs TCFONTSIZE, --tcfontsize TCFONTSIZE

                        txtcell fontsize

  -dfs DFFONTSIZE, --dffontsize DFFONTSIZE

                        pandas dataframe fontsize

  -ofs OUTFONTSIZE, --outfontsize OUTFONTSIZE

                        output area fontsize

  -mathfs MATHFONTSIZE, --mathfontsize MATHFONTSIZE

                        mathjax fontsize (in %)

  -m MARGINS, --margins MARGINS

                        fix margins of main intro page

  -cursw CURSORWIDTH, --cursorwidth CURSORWIDTH

                        set cursorwidth (px)

  -cursc CURSORCOLOR, --cursorcolor CURSORCOLOR

                        cursor color (r, b, g, p)

  -cellw CELLWIDTH, --cellwidth CELLWIDTH

                        set cell width (px or %)

  -lineh LINEHEIGHT, --lineheight LINEHEIGHT

                        code/text line-height (%)

  -altp, --altprompt    alt input prompt style

  -altmd, --altmarkdown

                        alt markdown cell style

  -altout, --altoutput  set output bg color to notebook bg

  -P, --hideprompt      hide cell input prompt

  -T, --toolbar         make toolbar visible

  -N, --nbname          nb name/logo visible

  -kl, --kernellogo     kernel logo visible

  -vim, --vimext        toggle styles for vim

  -r, --reset           reset to default theme

  -dfonts, --defaultfonts

                        force fonts to browser default

 

jupyterthemesを使い、開発者お勧めの設定に変更してみます。ここではlightの方を選択しました (”-N”フラグを追加)。 

# dark
jt -t onedork -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T -N

# light
jt -t grade3 -fs 95 -altp -tfs 11 -nfs 115 -cellw 88% -T -N

#default
jt

#reset
jt -r
  •  -fs    code font-size
  • -altp    alt input prompt style
  • -tfs      txtcell fontsize
  • -nfs    notebook fontsize
  • -cellw    set cell width (px or %)
  • -T    make toolbar visible
  • -N    nb name/logo visible

 

 

3、Jupiter notebookの起動

準備ができたら起動してみましょう。分析対象のデータがあるディレクトリに移動してから起動します。練習なら、適当なディレクトリを作成してその中で起動しましょう。

cd ~/<change>/<to>/<your>/<datadir>
#または
mkdir ~/Desktop/jupyter && cd ~/Desktop/jupyter

#起動(jupyter notebookでもO.K)
jupyter-notebook

自動でデフォルトブラウザのhttp://localhost:8888/tree がロードされます。 

f:id:kazumaxneo:20200501121142p:plain

(補足;頻繁に使うならこのアドレスをブックマークするか、"jupiter"などでhttp://localhost:8888/treeに変換されるように辞書登録するのはどうでしょうか)

 

 

Jupiterが起動しました。ノートを新しく作る場合は右上のNewボタン=> python3を選択します。少し頑張ればここでR、Go、Ruby、Juliaなども選択できたりします(詳細)。

f:id:kazumaxneo:20200501143914p:plain

新しいタブに切り替わります。python3のノートを使えるようになりました。

f:id:kazumaxneo:20200501144013p:plain

テーマは一度リセットしてます(コンソールで"jt")。

 

 

 

4、基本操作1 ~ セルへの入力(コーディング)と実行

Jupiter notebookはショートカットキーを使うことを前提に設計されています。そのため、快適に操作するには、ショートカットを覚える必要があります。操作方法を説明しつつ、ショートカットキーも順番に紹介していきます。

 

では始めましょう!なるべく真似しながら進めて下さい。操作をしないと忘れてしまいます。

まずインターフェイスの説明です。下の写真をみて下さい。Code cellという場所にpython3のコードを打って進めていきます。

 

f:id:kazumaxneo:20200504124124p:plain

Jupiter notebook user interface. マニュアルより転載。

 

コードセルの中にコードを記入するにはEnterを押します。

f:id:kazumaxneo:20200501211304p:plain

 

入力モードになりました。この状態を編集モードと言います。print関数を使い文字列を表示させてみましょう。python3なのでprint("test")と打って下さい。

f:id:kazumaxneo:20200501211244p:plain

 

タイプしたらコードを実行します。メニューにあるRunボタンをクリックするか、shift + Enterのショートカットキーを使います(Enterだけ押すとセル内改行)。このshift + Enterは多用します。必ず覚えてください。

f:id:kazumaxneo:20200501225208p:plain

 

実行結果です。コードセルの下にtestという文字が表示されました。同時に次のセルも自動生成され、そちらが緑線で囲まれました。これはそのセルが選択状態である事を意味します。

f:id:kazumaxneo:20200501221839p:plain

(補足;  実行済みのセルはIn[ ]: =>In[1]:に変わってます(後述)。)

 

Enterを押すことで選択中のセルが編集モードになります。次は変数に数値を代入して、shift + Enterで実行しました(セル内で改行するにはshiftを押さずにEnterを押す)。

f:id:kazumaxneo:20200501233348p:plain

a + bの結果の3が表示されました。このような感じです。簡単ですね。

注意

1つのセルは1つの出力のみ求めるようにして下さい。複数出力させると最後の出力以外表示されません。

f:id:kazumaxneo:20200505164032p:plain

 

 

5、基本操作2 ~ セルの編集

次にセル間の移動方法です。まずは編集モードを抜けます。Escキーctrl + Mを押して下さい。セルを実行せずに編集モードから抜けることができます。 編集モードから抜けると枠が青く変わりました。枠が青いこの状態をコマンドモードと言います。十字キーを押して上下に移動してみて下さい。

f:id:kazumaxneo:20200502115857p:plain
(ここでは一番上のセルに移動しました。コマンドモードなので枠線は青いままです。)


繰り返しになりますが、選択中のセルでEnterを押せば編集モードに入ります。編集モードに入ると枠が緑になります。print("test")からprint("Hello")に書き換えて下さい。

f:id:kazumaxneo:20200502232917p:plain

 

下の写真は編集後にctrl + Enterで再実行した結果です。再実行すると前の出力が完全に消え、新しい出力だけが表示されました。

f:id:kazumaxneo:20200502120043p:plain

今回はshift + Enterではなくctrl + Enterで実行しました。ctrl + Enterで実行すると、次のセルが自動で選択状態にはなりません(一番下のセルで実行した場合も新規セルが下に追加されない)。

  

コマンドモード状態でもう一度移動してみましょう。移動は十字キーの上下以外にK(上)、D(下)でもできます。

f:id:kazumaxneo:20200502120043p:plain

 

コマンドモードでは移動するだけでなくセルの削除、追加・複製、並び替えなどセルの編集全般が行えます。またマークダウンへの切り替えなども可能です(2回目参照)。ここではセルの編集について説明します。順番に見ていきましょう!

 

セルの追加 - セルを選択した状態でAまたはBAで選択中のセルの上にセル追加。Bで下にセル追加(間違って編集モードにしてしまったらEscキーかctrl + Mで戻して下さい。)

f:id:kazumaxneo:20200502122024p:plain

 

セルの削除 - セルを選択した状態でDD(vi、vimなどと同じキーバインド)。

f:id:kazumaxneo:20200502121212p:plain

(上の写真は挿入した不要なセルを消したところ)

 

セルのカット&ペーストXでカット、Cでコピー、Vで下にペースト、Shift + V で上にペースト。

f:id:kazumaxneo:20200502121629p:plain

(上の写真はprint("golden week")と書いたセルを作り、適当にカット&ペーストしたところ)


複数セルの選択とマージ - shift +  十字キー上下で複数セル選択。その状態でshift + Mでセルのマージ。

f:id:kazumaxneo:20200502122951p:plain

(上の写真はprint("golden week")セルと上下の空セルをマージしたところ)

 

undo - Zでundoになる。押した分だけコマンドモードの操作を戻れる。

 

これらの操作は上のEditからも実行できます。

f:id:kazumaxneo:20200502143838p:plain

 

 

このように、コマンドモードではセル自体を編集できます。ところでセルを途中に追加したりして順番がどんどん変わっていっていますが、途中に挿入して定義した変数はどうゆう扱いになるのでしょうか?これを実感するため少しコードを書いてみましょう。

 

その前に環境をリセットします。セルを全て削除してrestart & Clear outoutを選択します。カーネルをリセットして出力や変数定義などを初期化します。セルは消えないので安心して下さい。

f:id:kazumaxneo:20200502144336p:plain

 

では始めます。以下のコードを見て下さい。最初のセルでa=1と定義して、次のセルでa=2と上書き定義しています。それから上から3番目のセルを実行してaの値を出力させましった。出力は2になりました。

f:id:kazumaxneo:20200502151417p:plain

 

では次にIn [1]の下にセルを追加します(type A)。

f:id:kazumaxneo:20200502151552p:plain

そのセルでa=10  と定義します。そのまま実行しましょう(=> In [4])。

f:id:kazumaxneo:20200502152430p:plain


再び一番下のIn [3] に移動して実行します。再実行する場合、編集モードに切り替える必要はありません。コマンドモードのままセルを選択してCtrl + Enterを押すとコードが実行されます。さて、aの値はいくつになるでしょうか?

f:id:kazumaxneo:20200502153345p:plain

答え

10になりました(Out [5])。

f:id:kazumaxneo:20200502153257p:plain

これは、Jupiter notebookがセルを実行した順番に定義を更新しているためです。定義された変数はグローバル定数であり、セルがどこにあっても、解釈された順番にグローバル定数として上書き定義されます。上から下に順番に流れているとは限らない事を覚えておきましょう。

 

順番についてはセルの左端にあるIn [number] を見て下さい(数値がないのは未実行のセル)。数値がセルを実行した順番を表しています。

では改めて質問します。下の図のIn[17]セルでのaの値はいくらでしょうか?

f:id:kazumaxneo:20200502161022p:plain

 


In[16]でa=10としているので、In[17]の答えは10です。

f:id:kazumaxneo:20200502161118p:plain

 

このInとかoutは何でしょうか?これらは Jupiter notebook がこれまでのコードを変数(配列)に記録したものです。こんな感じで呼び出せます。

f:id:kazumaxneo:20200502154825p:plain

一旦実行したセルを書き換えて再実行しても、Inは新しい数値が割り振られます。このため、セルを上書きしてしまっても、最初のセルの内容や出力内容はいつでも呼び出せます(数値を覚えていれば)。

 

 

6、ショートカットキーのまとめ

Jupiter notebookはショートカットを多用して進めるため、コマンドモード、編集モードともに様々なショートカットキーが存在します。忘れた時はHelpのKeyboead Shortcutsを開いて下さい。

f:id:kazumaxneo:20200502113836p:plain

様々なショートカットが存在します。まずは使うものだけ覚えましょう。

f:id:kazumaxneo:20200502113933p:plain

 

QIitaのチートシート記事へのリンクです。とても見やすくて参考になります。

【完全版】Jupyter Notebook ショートカット - Qiita

 

補足

実はlsやpwdなどのシェルコマンドにそっくりなマジックコマンドというものがあり、Jupiter notebook内でもこれらコマンドは実行できます。つまり!pwdなどと” ”をつけて実行しなくても良いと言うことです。詳細は次回説明します。

f:id:kazumaxneo:20200502165205p:plain

マジックコマンドがない外部コマンドは!をつけて実行します。上の写真ではcondaを使ってJupiter notebookの仮装環境にもsamtools1.10を導入、helpを表示してます(=> Jupiter notebook上でHTSのデータ解析は可能ということ)。

 

 

7、ノートの保存

ではノートブック名を決めて保存します。その前にFinderから作成したフォルダの中を見てみましょう。Untitled.ipynbというノートブックがすでに保存されていますね。この.ipynbはipython notebookを意味します。中身はjsonファイルです。

f:id:kazumaxneo:20200502170017p:plain

すでに作成されているのは、デフォルトで自動セーブ機能がONになっているためです(autosave 120)。その瞬間に保存するにはコマンドモードでSを押します。

 

ファイル名はノートの一番上に表示されています。現在はUntitledです。文字をダブルクリックして名前を変更しましょう。

f:id:kazumaxneo:20200502164614p:plain

 

ここではtestとします。Renameをクリック。

f:id:kazumaxneo:20200501211638p:plain

 

自動でtest.ipynbに更新され、リネーム前のUntitled.ipynbは消えました。

f:id:kazumaxneo:20200502170356p:plain

実際につける名前ですが、例えば何かのパイプラインの実行手順をまとめたノートなら、"2020 5/1 GATK best practice tutorial"など、ドライ実験内容やまとめ内容がわかる名前が良いのではないでしょうか。

 

終了します。ターミナルでCtrl + Cを押します。メッセージ表示後、5秒以内にyで終了します。

f:id:kazumaxneo:20200502175830p:plain

終了しました。

f:id:kazumaxneo:20200502180027p:plain

 

このディレクトリから移動せずにJupiter notebookを再起動してみましょう。

どうですか?test.ipynbがちゃんと見えているはずです。これをクリックすればノートを再開できます。

f:id:kazumaxneo:20200502180142p:plain

 

 

長くなってきたので今日はこれくらいにします。明日以降、マークダウンモードと数式の表示、外部コマンドの実行など、より実践的なJupiter notebookの操作方法についてまとめていく予定です。よろしくお願いします。

追記


引用

Jupyter Notebooks – a publishing format for reproducible computational workflows

Kluyver, Thomas, Ragan-Kelley, Benjamin, Pérez, Fernando, Granger, Brian, Bussonnier, Matthias, Frederic, Jonathan, Kelley, Kyle, Hamrick, Jessica, Grout, Jason, Corlay, Sylvain, Ivanov, Paul, Avila, Damián, Abdalla, Safia, Willing, Carol and Jupyter development team, (2016) Jupyter Notebooks – a publishing format for reproducible computational workflows. Loizides, Fernando and Scmidt, Birgit (eds.)

In Positioning and Power in Academic Publishing: Players, Agents and Agendas. IOS Press. pp. 87-90 . (doi:10.3233/978-1-61499-649-1-87)

 

参考

*1 Project Jupyter wiki

https://en.wikipedia.org/wiki/Project_Jupyter#cite_note-2

 

*2

Jupiter notebook HP

 

*3

アカデミアでのJupiter notebookの活用方法について興味があれば、Nature toolbox(Natureのデジタルツールを紹介する社説)の記事を読んでみて下さい。

https://www.nature.com/articles/d41586-018-07196-1

 

 

 

 

補足 

この”初めてコマンドを使う人向けの解説”シリーズは今回で3回目です。1回目、2回目のリンクを張っておきます。

・1回目

問い合わせをいただき、その質問に答える形でまとめた記事です。目的ありきで書いたため、初めてコマンドを扱う人が参考にすると突飛な内容になってしまっています。リンクは載せてますが、見てない方もこの記事はスキップしていただいて構いません。

・2回目

バイオインフォマティクスのツールのランに適したmacの選び方と、ツールのインストールに活躍するcondaコマンドの導入・使用方法についてまとめた記事です。condaをどうやって使えばバイオインフォマティクスのツールが導入できるのか分からないという方は読んでみて下さい。内容的にこちらを1回目とすべきでした。

 

インタラクティブな主成分分析webサービスによってRNA seqデータを分析する PCAGO

 

 過去10年の間に、全トランスクリプトームのシークエンス(RNA-Seq)は、多様な分子機構を理解し、様々な生物学的問題に取り組むための強力な技術として浮上してきた。RNA-Seq実験の初期段階では、異なる遺伝子発現レベルに基づいた生物学的サンプルの初期特性評価とクラステリングが重要なステップとなっている。主成分分析(PCA)は、変動を強調し、遺伝子発現値の行列のような高次元データセットの中から強いパターンを切り出すために使用される技術である。
 PCA変換のアウトプットは、データの探索や可視化を容易にするために使用することができ、バイオインフォマティクスで広く使われているアプローチであり、今日ではほとんどすべてのRNA-Seq解析パイプラインの重要な一部となっている。
 PCAは計算が簡単で、トランスクリプトミクス、メタボロミクス、医学研究などで頻繁に使用されているが、実験データを解析する際に特に発生する可能性のあるいくつかの課題や欠点が存在する。例えば、データの可視化と解釈は、考慮される主成分、最変量遺伝子の数、遺伝子発現の事前正規化によって大きく影響を受ける可能性がある。一般的に、総分散偏差に最も寄与する主成分が選択される。しかし、多くの場合、例えば、個々の成分の分散が互いに近い場合など、最大の分散を持つ成分だけに焦点を当てても、興味深い結果が直接観察できないことがある。したがって、変換から意味のある解釈を導き出すためには、成分を慎重に評価することが重要である。
 一般的に、(バルクの)RNA-Seqデータは、数千の遺伝子の発現を基にしており、サンプル数が非常に少ないため、高い次元性を持っている。低次元の投影は、PCAのような特異値分解を用いて達成することができる。データは、元の変数の特異値分解(遺伝子とサンプルごとに1回のリード数)を行うことで構築された主成分(PC)と呼ばれるより少ない数の変数の形で提示される。(一部略)

ベストプラクティスとして、PCAはまず品質管理、例えば、生物学的リプリケートが類似した発現プロファイルを持ち、クラスタリングする傾向があるかどうかを確認するために使用されるべきである。

 定義により、第一主成分(PC1)は、データ内の可能な最大の分散を説明する。PC2は分散の2番目に大きい部分を説明する。伝統的に、最初の数個のPCが元のデータセットの変動の大部分を捉えているため、これらのPCが可視化に使用される。しかし、PC3やPC4のような情報量の少ないPCも、PC1やPC2に匹敵する強いパターンを捉え、遺伝子発現パターンの違いをより明確に区別するのに役立つかもしれない(ref.2)。PCAのバックボーンとして使用する遺伝子セットの違いやPC数の違いは、クラスター構造を捉える際の有効性に影響を及ぼす可能性がある(ref.2,3)。したがって、低分散PCは、ユビキタスに発現している遺伝子(例えば、潜在的なハウスキーピング遺伝子)を特定するためにも使用可能であり、その場合は、PCA可視化のバックボーンとして、より信頼性の高い遺伝子セットを定義するための追加のフィルタリングステップとして使用することができる。したがって、遺伝子発現データに結論を出す前に、PCA変換の有効性を調査する必要性が大いにある。
 ここでは、RNA-Seqから得られた定量データをPCAで解析し、可視化するためのインタラクティブで使いやすいツールであるPCAGOを紹介する。PCAGOはWebサービスから直接実行でき、特にローカルで使用する場合は、Dockerコンテナから単一のコマンドでツールを起動することができる。機能性は、Klassertら(ref.7)とRiegeら(ref.8)から得られたRNA-Seqサンプルのリードカウントをロードすることで簡単にテストできる(Start analysis -→Load all sample dataを実行)。他のPCAツールとは対照的に、PCAGOは、PCのようなトランスフォーメーションの主要な機能を包括的に検査し、変化させる機会をユーザーに与え、異なる結果を簡単に比較することができる。さらに、PCAはアノテーションでフィルタリングされた遺伝子サブセット上に構築することができ、最終的な可視化に関心のある生物学的な疑問をより良く反映させることができる。すべての遺伝子と同じクラスタリングを生成する遺伝子の最小セットを計算することができ、アニメーション化されたPCAは、変換に少ないバリアント遺伝子を徐々に含めることによって、PCとクラスタリングがどのように変化するかを示す。最後に、すべての計算ステップは、実行されたPCAの完全な再現性を可能にするために十分に文書化されている。

 



Github


ローカルでのラン

#1 run
#ローカルマシン
docker run -p 8000:8000 --user $(id -u):$(id -g) --rm -it mhoelzer/pcago:1.0--c1e506c ./run_packrat.sh

#計算機サーバーで立ち上げてログインする
ssh -L 8000:127.0.0.1:8000 your@your.server.com

#login
access to 127.0.0.1:8000

*webサーバーのリソースは限られるため、データサイズが大きければローカルマシンでのランが推奨されている。

 

 

webサービス

https://pcago.bioinf.uni-jena.de にアクセスする。

f:id:kazumaxneo:20200430225550p:plain



 

 

 CSV形式のリードカウントファイルをロードする。ここではexampleファイルを指定。 raw リードカウントファイル、正規化したリードカウントファイル、統計的に絞り込まれた発現変動遺伝子群のファイルなどを使う。submitをクリック。

f:id:kazumaxneo:20200430235626p:plain

 

データが読み込まれた。1列目に遺伝子名、1行目にサンプルアノテーションで参照されているサンプル名、というフォーマットになっている必要がある。

f:id:kazumaxneo:20200430235722p:plain



リードカウントファイル以外に、サンプルに条件を割り当てるサンプルの注釈ファイルおよび遺伝子アノテーションファイルを読み込む。

まずはImport samples annotationに切り替え、サンプルの注釈ファイルをアップロードする。ここではexampleを選ぶ。

f:id:kazumaxneo:20200501000634p:plain

アノテーションファイルがない場合、generate dataを選ぶとsample名から自動生成することができる。

 

submitをクリック。

f:id:kazumaxneo:20200501001951p:plain

 

読み込まれたexampleの注釈ファイル。1列目にサンプル名(上のリードカウントの1行目と合致する名前)、1行目にサンプルの様々な注釈(言い方を変えればメタデータ)というフォーマット。それ以外はtrueかfaluseかを記載する。試していないが、1/0の2値でも認識するかもしれない。

f:id:kazumaxneo:20200501001536p:plain

 

 

true・faluseの共通性に基づき注釈ファイルのベン図が表示される。

f:id:kazumaxneo:20200501002212p:plain

 

次に遺伝子アノテーションファイルを読み込む。ここではexampleを選ぶ。自分のデータを使う場合、モデル生物ならEnsembl GFFなどを使用できる。

f:id:kazumaxneo:20200501003632p:plain


読み込まれた。

f:id:kazumaxneo:20200501004056p:plain

 

PCAの前にrawリードカウントはTPMまたはDESeq2による正規化を行う。

f:id:kazumaxneo:20200501004454p:plain

 

calculateをクリック。大規模なデータセットでは、この処理に時間がかかる場合がある(マニュアルより)。

f:id:kazumaxneo:20200501005609p:plain

 

 


Filter genesのタブに移る。ここでは任意で遺伝子のアノテーションでフィルタリングできるようになっている。

f:id:kazumaxneo:20200501010142p:plain

 

さらに分散で遺伝子をフィルタリングすることもできる。ここではスライダーをドラッグするだけで上位のバリアント遺伝子を選択することができる。

f:id:kazumaxneo:20200501010304p:plain

 

フィルタはアニメーションにも対応している。再生ボタンをクリックすると、閾値が徐々に変化してクラスタリングがどう変化するか確認していける。速度は遅めなので適宜▶︎と◀︎をクリックする。

f:id:kazumaxneo:20200501010656p:plain

 

どのタイミングでも右上のsaple ploボタンをクリックしてPC1とPC2のPCA plotを表示できる。パラメータをチューニングする時のPCAのプレビューにも使う。

f:id:kazumaxneo:20200501011731p:plain


3D PCAを描くにはplotタブのAxisで追加の主成分を選ぶ。

f:id:kazumaxneo:20200501011943p:plain

 

PC3を追加した。自動で3D plotに変化した。

f:id:kazumaxneo:20200501012023p:plain

9.55%のPC3は底からの高さで表現されている。色はサンプル注釈ファイルとのリンクを表す。



PCAGOでは、多くのプロット設定をアプリケーション内で直接変更することができる。例えば、条件に色や形状を割り当てたり、プロットに表示される名前を変更したりすることが可能。

f:id:kazumaxneo:20200501012233p:plain

 

引用

PCAGO: An interactive tool to analyze RNA-Seq data with principal component analysis

Ruman Gerst, Martin Hölzer

bioRxiv, 2018

多変量データのクラスタリングと可視化を行うwebサービス ClustVis

2020 4/30 文章修正、タイトル修正

2022/04/06 リンク修正

 

 ハイスループット実験の出現により、研究者はしばしば多変量データに直面している。これらは、通常、行列として提示される。この種のデータは様々なソースから得られることがあり、例えば、特定の遺伝的パスウェイを調べることが大きな関心事である遺伝子発現研究などが挙げられる(ref.1)。さらに、画像解析アルゴリズムは、臨床ガンの予後に関連する特徴を抽出するために、高解像度画像上で使用することができる(ref.2)。ヒートマップと主成分分析(PCA)は、この種のデータを分析するための2つの一般的な手法である。

 ヒートマップは、カラーグラデーションを使用して細胞内の値を可視化したデータマトリックスである。これにより、行列内の最大値と最小値の概要がよくわかる。行列の行および/または列はクラスタ化されていることが多く、ユーザーは個々の行または列ではなく、行または列のセットを解釈することができる。PCA は,多変量データ集合を,説明された分散の降順に並べて,相関のない変数の集合に線形変換する手法である(ref.3).この方法では、しばしば大量の変動を説明する主要ないくつかの成分を解釈できる。

 ユーザーが調査中のオブザベーションは、しばしば事前に定義された実験的注釈グループを持ち、この情報をプロットの両方に追加すると、解釈がより簡単になる。例えば、標本群のいくつかが互いに重なっているか、あるいは別々のクラスタを形成しているかを見ることができるだろう。特定の統計ソフトウェアがなければ、この種の分析は通常は簡単ではなく、ソフトウェアをインストールして設定する必要がある。

 例えば、MS Excelで条件付き書式を適用して色のグラデーションを表示することはできるが、行列をクラスター化したり注釈を付けたりすることは容易ではない。NumXLという独自のExcelアドインを使えば主成分の計算はできるが、グループを表示するのはまたしても複雑である。同様のことがGalaxyウェブサーバ(galaxyproject.org)や一般的な統計ソフト(R, SAS, Statisticaなど)にも当てはまる。PCAの実行やヒートマップのプロットは可能だが、アノテーションの表示や出力のカスタマイズは一般的なユーザにとってはかなり複雑になる。imDEV (ref.4)と呼ばれるExcel組み込みアプリケーションもPCAプロットやヒートマップを作成することができるが、特定のプラットフォームにインストールする必要がある。他のツールでは公開されている遺伝子発現データを直接読み込むことができないため、ツールの外で前処理を行う必要がある。

 著者らはこの種の解析をより簡単にすることを目的とした ClustVis と呼ばれるウェブツールを紹介する。ユーザーは自分のデータをアップロードするか、ArrayExpress(ref.5)の組み込みの公開遺伝子発現マイクロアレイデータセットを使用することができる。ヒートマップとPCAプロットは、直感的なユーザーインターフェースを使用して様々な方法で生成、修正することができる。

 ユーザーがアップロードしたデータセットの場合、ClustVis はデフォルトでデータの区切り記号と注釈行数の両方を自動的に検出する。区切り文字を見つけるために、可能な区切り文字(カンマ、タブレータ、セミコロン)ごとに、各行に何回現れるかをカウントする。全ての行で最小値を取り、最もスコアの高いデリミタを正しいものとして選択するヒューリスティックな方法を使用している。

 アノテーションの数を求める際には、まず、非数値データを含むすべての行をアノテーションとみなす。非整数の数値データの前の最後の行に整数のみが含まれている場合(例えば、男性は0、女性は1という性別)、この行とそれ以前のすべての行がアノテーション行とみなされる。

 主成分は、pcaMethods (ref.9) Rパッケージのメソッドのいずれかを使用して計算される。デフォルトの方法はSVD(SVD with imputation)で、欠損値の推定値が収束するまで入力と特異値分解(SVD)を反復的に行う。Nipals PCAは、内積を計算する際に欠落値を除外して反復的に成分を見つける。確率的PCAも主成分の計算に密度モデルを用いる反復法である。

データの前処理

 行のスケーリングは、pcaMethods (ref.9) Rパッケージのメソッドの1つを使用する。単位分散スケーリング法は、各行の分散が1に等しくなるように、標準偏差で値を分割する。パレート・スケーリング法は、標準偏差平方根で値を分割する。ベクトルスケーリングは、値のユークリッドノルム(二乗和の平方根)で分割する。

ヒートマップ

 ヒートマップは pheatmap R パッケージ (バージョン 0.7.7) を使って作成している。pheatmapパッケージのソースコードは、レイアウトを改善したり、いくつかの機能を追加するために少し修正されている。このパッケージは、Rのdistとhclust関数で実装されている一般的なクラスタリング距離と手法を使用している。距離のリストには、相関(から相関を引いたものとして追加で定義)、ユークリッド距離、最大距離、マンハッタン距離、キャンベラ距離、バイナリ距離が含まれる。連鎖法には、単一、完全、平均、McQuitty、中央値、セントロイド、Ward 連鎖がある。k-meansクラスタリングが選択されている場合、R関数kmeansが使用される。

 

 

webサービス

https://biit.cs.ut.ee/clustvis/ にアクセスする。

f:id:kazumaxneo:20200421234845p:plain

左から右へそれぞれのタブに進めていく。まずはデータを読み込む。

 

1、データのインポートタブ - .csvまたは.tsvのデータの読み込み

f:id:kazumaxneo:20200429201558p:plain

 

ClustVisでデータ分析を行うには、下のようなフォーマットのファイルを準備する。

f:id:kazumaxneo:20200429002755p:plain

入力データ例。helpより転載。

このテーブルでは、数値データの行列は右下に配置され、行ラベルと注釈は行列の左に、列ラベルと注釈は行列の上に配置されている。また注釈ラベルはそれぞれ最初の行と列に配置されている。注釈は任意になる。

 

ここではexampleデータを指定する。データが読み込まれると、ClustVisは区切り記号と注釈行数を自動で認識し(詳細はhelp参照)、下図のように自動でColumn annotationsとRow annotations、そして数値データテーブルに分離する。

f:id:kazumaxneo:20200429003842p:plain

セパレータとして認識可能な文字はカンマ、タブレータ、セミコロンになる。データが正常にアップロードされない場合、行名や列名に重複がないことを確認する。また、欠損値は全てNAまたは空セルで表現されている必要がある。

 

2、前処理タブ - 類似のアノテーションを持つ列を集約したり、値が欠落している行/列を削除する。また、主成分の計算方法の選択や欠落している値の入力も行う。

f:id:kazumaxneo:20200429003921p:plain

 

transformation 

値が数桁異なるようなレンジの広いデータセットの場合、対数変換が推奨される。最小値が0ならIn(x + 1)を選ぶ。

f:id:kazumaxneo:20200429202806p:plain

 

使用するアノテーション情報を限定するならチェックを外す。

f:id:kazumaxneo:20200429205520p:plain

 

アノテーションのレベルに応じて、似たアノテーションをまとめることもできる。

f:id:kazumaxneo:20200429210635p:plain

 

欠損が多い列や行の削除、定数の列の削除なども可能。

f:id:kazumaxneo:20200429211003p:plain

 

スケーリングのメソッドの選択。unit varianceは最も一般的なスケーリング法である。これは,成分を見つけるときに,すべての変数が等しく重要(分散 = 1)になるようにスケーリングされることを意味する.その結果、差が1であるということは、値が互いに1標準偏差離れていることを意味し、行がセンター揃えの場合は、行の平均から離れていることを意味する。

f:id:kazumaxneo:20200429211917p:plain

変数がすでに共通の尺度を持っていて、それらの元のばらつきを維持したい場合(すなわち、ばらつきがより大きい変数がより多くの成分に寄与する結果になる)、'スケーリングなし'を適用する。しかしスケーリングはほとんどのケースで行う必要があることに注意(参考ページ)。

 

最後に他のPCAの手法を選択する。一般的に、SVD(特異値分解)(wiki)は、最もよく使われる標準的なPCA法である。データセットに欠損値がある場合、SVD計算中にデータセット内の他の値を使用して反復的に予測して埋めていく(インピュテーション)。他のPCA法は,欠損値の問題に対処する別の戦略である(マニュアルより)。

f:id:kazumaxneo:20200429213949p:plain

どのPCA手法とどのスケーリング手法ををいつ使用するかは、それぞれの特定のデータセットに依存した問題である。PCAやヒートマッププロットの結果の解釈は非常に主観的であり、他の手法を使ってさらに検証する必要がある(マニュアルより)。

 

 

3、PCA - PCAプロット

行にはunit varianceスケーリングが適用され、主成分の計算にはSVDが使用される。X軸とY軸には主成分1と主成分2が示されている。主成分1は31.1%を占め、主成分2は11.6%を占める。予測の楕円は、確率0.95で、同じグループからの観測値が楕円内に収まることを示している。

f:id:kazumaxneo:20200429235726p:plain

作図のパラメータは左のメニューからインタラクティブに変更可能になっている。

 

別のアノテーションに基づいて色付けすることもできる。アノテーションER statusからtreatmentにカラースキームを変更すると、楕円の重なりが大きくなってしまった。(=> 主成分1と2だけで判断するならER statusの方がより観測値に変化を引き起こした要因である可能性が高い。)

f:id:kazumaxneo:20200430001054p:plain

 

4、ヒートマップ 

マトリックス内の値は色分けされ、オプションで、行および/または列がクラスタ化される。ヒートマップの上にあるアノテーションを見ると、アノテーションされたグループが他のグループよりもよく分離されているかどうかを判断できる。

f:id:kazumaxneo:20200430000141p:plain

 ヒートマップ上のクラスタリングを読む際には、行や列の正確な順序ではなく、どのオブジェクトが最初にクラスタリングツリーにマージされるかに注意を払う必要がある(マニュアルより)。

 

5、エクスポート - 現在の設定で結果をダウンロードする。 

f:id:kazumaxneo:20200430000437p:plain

 

ClustVisに似た機能を持つツールが最近になっていくつか発表されてきています。今後も紹介していきます。

引用
ClustVis: a web tool for visualizing clustering of multivariate data using Principal Component Analysis and heatmap

Metsalu T, Vilo J

Nucleic Acids Res. 2015 Jul 1;43(W1):W566-70

 

参考動画


参考HP