【初心者向け】基礎&実践プログラミング

初心者がつまづきやすいところ、最短で実力が身につく方法をお伝えします。

【Python】カッパ(k)係数の計算

目的 コーエンの重み付きカッパ(k)係数(Cohen's kappa)をPythonで計算 scikit-learnのインストール カッパ係数の計算には、scikit-learnを使うと簡単にできます。scikit-learnをインストールしていない場合は、以下のコマンドを実行してインストールして…

【FSL】ROI(VOI)を用いた画像計測

目的 関心領域ROI(VOI)内の画像の定量値を計測 計測コマンド FSLのfslstatsを使う。 各オプションは、以下の通り。 -K: 関心領域ROI -M: ROI内の平均値の算出 fslstats -K <ROI> <input> -M 複数人被験者がいる場合 複数人の被験者がいる場合、以下のようなフォルダ構</roi>…

【FSL】Affine変換(平行移動+線形変換)

目的 異なる画像(NIFITI形式)の位置合わせをAffine変換(平行移動+線形変換)を用いて実行する。 FSLを用いて実装します。 必要なファイル T1WI: t1.nii.gz QSMの元画像: qsm_raw.nii.gz QSMの定量マップ: qsm_map.nii.gz 大脳基底核のROI: basalganglia_…

【Linux】ファイルやフォルダを小分けにする方法

目的 並列でプログラムを実行したい場合、データセットを小分けにしたい場合がある。小分けにする数が多いほど手間がかかる。 そこで、以下を目的とする。 シェルスクリプトを使ってデータセット(ファイルやフォルダ)を小分けにする フォルダ構造 フォルダ…

【Linux】DICOMのソート処理

目的 様々なSeriesDescriptionで撮像されたDICOMデータから特定のSeriesDescriptionのDICOMデータのみを取り出す。 シェルスクリプトで実行 dcmdump dcmdumpを使うことでDICOMのヘッダー情報を取得することができる。 dcmdumpのインストール $ apt-get insta…

【FSL】大脳基底核(Basal Ganglia)のセグメントと体積(Volume)計測

目的 FSLを用いて大脳基底核(Basal Ganglia)のセグメントと体積(Volume)計測 フォルダ構造 dataフォルダを作成し、その中に各被験者のフォルダ用意。大脳基底核のセグメントに必要な3D-T1WIは各被験者フォルダに<フォルダ名>_vol.nii(.gzも可)というファイル…

【Python】画像の類似度の計算(Dice係数)

目的 NIFTI形式の画像からPythonを使ってDice係数を計算する。 準備 必要となるパッケージは以下の通りです。必要に応じてインストールしてください。 pip3 install nibabel pip3 install numpy pip3 install glob pip3 install pandas フォルダ構造 フォル…

【SPM】画像の解像度の変更(Coregistration)

目的 画像の位置は同じで解像度が異なる2枚の画像の解像度を合わせる SPMのCoregisterを用いる。 方法 1. MATLABからSPMを開く。 spm 2. 上段(spatial pre-processing)からconergister(EST/RES)を選択。 3. Reference Imageに最終的に合わせたい解像度…

線形近似を用いた交絡因子の排除

はじめに データを扱う上で、年齢や測定器、環境などの交絡因子が結果にどのような影響を及ぼすのか。 それらの交絡因子を取り除くにはどうすべきかを、線形近似を用いて解決する。 間違えていたら、ご指摘いただければ幸いです。 従来のz-score 本来のz-sco…

【MATLAB】ComBatを用いた交絡因子の排除 (実践編)

問題 グループ間の差を解析する際、計測した値は、年齢、性別、計測器等の交絡因子の影響を含む。 目的 年齢、性別、計測器等の交絡因子の影響を排除するように計測値を補正する。 詳細は、こちらのManualをみること。 準備 ComBatのDownload データの補正に…

【Python】相関行列 (Correlation Matrix)とヒートマップ (Heat Map)の作り方

目的 Pythonで相関行列 (Correlation Matrix)を作成。 ヒートマップ (Heat Map)で図示。 Better Heatmaps and Correlation Matrix Plots in Pythonを参考にしました。 シンプルなヒートマップ まずは、基本的な相関行列のヒートマップを作成します。 ライブ…

【Python】縦断データの可視化(プロット・箱ひげ図・バイオリン図・信頼区間・ヒストグラム)

目的 Pythonを用いて、縦断データ(beforeとafter)の可視化 主にやることは、 プロット (dot plot) 箱ひげ図 (box plot) バイオリン図 (violin plot) 信頼区間 (CI bar) ヒストグラム (histogram) 最終的には、このような図を作成する。 準備 open-visualizat…

【PyTorch】サンプル⑨ 〜 動的グラフ 〜

目的 PyTorchの特徴の一つである動的グラフに挑戦する。 前準備 PyTorchのインストールはこちらから。 初めて、Google Colaboratoryを使いたい方は、こちらをご覧ください。 コマンドラインの「>>>」の行がPythonで実行するコマンドです。 それ以外の行は、…

Pythonを使った株価の自動収集

はじめに 最近、株価を予想するAIを作って欲しいということで、全くいい精度がでる期待もなかったが作ることにした。 過去にkerasやtensorflowを使ってAIを作ったことがあったが、株価を集めることはしたことがなかったのでやり方をまとめておく。 ビックデ…

【PyTorch】サンプル⑧ 〜 複雑なモデルの構築方法 〜

目的 このチュートリアルに至るまでは、ニューラルネットワークモデルの定義を積み木を積み重ねるように単純なシーケンスtorch.nn.Sequentialで構築していました。 このtorch.nn.Sequentialを用いた方法は、モデルの定義が簡単である反面、ネットワーク構造…

【PyTorch】サンプル⑦ 〜 optim パッケージ 〜

目的 PyTorch: optimを参考にPyTorchのoptimパッケージを使って最適化関数(optimizer)を定義する。 前準備 PyTorchのインストールはこちらから。 初めて、Google Colaboratoryを使いたい方は、こちらをご覧ください。 コマンドラインの「>>>」の行がPythonで…

【PyTorch】サンプル⑥ 〜 nn パッケージ 〜

目的 PyTorch: nnを参考にPyTorchのnnパッケージを扱う。 nnパッケージの便利さを感じる。 前準備 PyTorchのインストールはこちらから。 初めて、Google Colaboratoryを使いたい方は、こちらをご覧ください。 コマンドラインの「>>>」の行がPythonで実行する…

【Python】DICOMからPNGやCSVに変換

はじめに AIを作成するために、MRI画像をDICOM形式からPNG形式あるいはCSV形式に変換する必要があった。 件数は1700件ほど。 有名なものとしてはDICOM Cenverterがあるが、大量のDICOMをInputすると固まってしまう。 (199.99$で買わなきゃいけないのか??) …

【FSL】Atlas(アトラス)を1枚1枚はがして別々にする方法

目的 FSLを用いて、atlas(アトラス)のlabel(ラベル)を1枚1枚はがして別々にする。 例として、AAL atlasを用いる。 atlasの用意 今回のターゲットとなるatlasはAAL atlas。 1から116の画素値を持つ。 label listの作成 labelの番号(画素値)ごとの領域名を一列…

【Linux】DICOMから被験者の情報を一括自動収集

はじめに 200件ちかいMRIのDICOMから被験者の - 名前 - ID - 生年月日 - 性別 - 年齢 - 検査日 を表にまとめる。 手作業では、いつまで経っても終わらないのとコピペのミス等のHuman Errorが出る可能性があるのでPCにまかせるプログラムを作成した。 dcmdump…

【Python】MAEとRMSEの計算方法

目的 Pythonを使って平均絶対誤差(Mean Absolute Error:MAE)と二乗平均平方根誤差(Root Mean Squared Error:RMSE)を計算する。 準備 CSVファイルに2変数のデータを書き込む。 1列目はLabel、2列目はAIの予測値(Predicted)。 今回はdata.csvとして保存する。 …

【機械学習】ランダムフォレスト (Random Forest)で疾患分類

(Credit: Decision tree icon Royalty Free Vector Image - VectorStock ) 目的 自分のメモ用。 ランダムフォレスト (Random Forest)を使って疾患Aと疾患Bを分ける。 プログラミング言語はPythonで、ライブラリはscikit-learnを用いる。 入力したバイオマー…

【PyTorch】サンプル⑤ 〜Static Graphs(静的グラフ)〜

目的 Deep Learning(ディープラーニング)で、よく使われるTensorFlowを使って計算グラフの設計からニューラルネットワークの学習をする。 PyTorchが採用している動的グラフを理解するために、静的グラフの代表であるTensorFlowに触れる。 前準備 PyTorchのイ…

【PyTorch】サンプル④ 〜Defining New autograd Functions(自動微分関数の定義)〜

目的 PyTorchのチュートリアルPyTorch: Defining New autograd Functionsを参考にPyTorchテンソル(tensor)と自動微分(autograd)を使って、損失(loss)や重み(weight)の計算をする。 前回の、【PyTorch】サンプル③ 〜TENSORS AND AUTOGRAD(テンソルと自動微分…

【PyTorch】サンプル③ 〜TENSORS AND AUTOGRAD(テンソルと自動微分)〜

目的 PyTorchのチュートリアルPyTorch: Tensors and autogradを参考にPyTorchテンソル(tensor)と自動微分(autograd)を使って、損失(loss)や重み(weight)の計算をする。 これまでは、PyTorchに実装されている自動微分機能を使わずにニューラルネットワークの…

【PyTorch】サンプル② 〜TENSOR (テンソル) 〜

目的 PyTorchのチュートリアルPyTorch: Tensorsを参考にPyTorch Tensor(テンソル)を使って、損失(loss)や重み(weight)の計算をする。 PyTorchの特徴の一つである、テンソルとNumPyの違いを手を動かしながら感じる。 NumPyを用いた例は、こちらから。 前準備 …

【PyTorch】サンプル① 〜NUMPY〜

目的 PyTorchのチュートリアルWarm-up: numpyを参考にNumpyを使って、損失(loss)や重み(weight)の計算をする。 PyTorchの特徴の一つである、テンソルとNumpyの違いを理解するための前準備。 前準備 PyTorchのインストールはこちらから。 初めて、Google Cola…

【Python】NIFITIからPNGへ変換 (COVID-19[新型コロナウイルス] CT例)

目的 NIFTIからPNGへ変換 NIfTI-Image-Converterを使用する。 COVID-19(新型コロナウイルス)患者のCTデータを例に、NIFTIからPNGへと変換していく。 準備 パッケージのインストール shutilは、404のアクセスエラーが生じるが、ほっておいてもOK(2020/04/20)…

Registration-free Distortion Correction of Diffusion Weighted MRI ~Synb0-DisCoの実装~

目的 2種類のPhase Encodingを撮像していないDiffusion dataであってもFSLのTOPUPのように歪み補正(distortion correction) 1.を実現するためにSynb0-DisCoを実装 参考文献はこちら。 前準備 環境構築 実装には、DockerあるいはSingularityのいずれかをイン…

【LINE bot】おいら、だじゃレンジャー!その2

はじめに 以前の作成した、だじゃレンジャーLINE botの更新。 問題点 小学生には難解な漢字が多く読めない。 与えられたお題(キーワード)でだじゃれを返せない場合、botからのレスポンスがなく、利用者が不安に。 目的 漢字にフリガナをふる。 だじゃれを返…