医療系Pythonサポーター小倉です。
医療系のPythonプログラミングについて相談を受けたり、開発をしたりしています。
多くの医療職・医学系研究職の方々はバックグラウンドが医学であって情報処理を専門的には学んできてはいないと思います。
ですが、いざデータ分析となると使い慣れない統計ソフトを使ったり、Excelで複雑な数式を書いたりとする方も多いでしょう。
この記事ではそういった人たちにとってPythonというプログラミング言語がどのように役に立つのか簡単な紹介をしていきます。
なお、Pythonプログラミングに関する相談・開発等については以下のサービスを出品中ですので参考にしてください。
1.学会・研究会・論文などの学術発表において必要なものとは?
臨床しかやっていない人であっても職場の方針などによっては、学会・研究会へ参加・発表したりすることもあるでしょう。
さらには論文を書く人も中にはいます。
さて、では学会・研究会・論文でデータを提示するわけですが、どのように提示したら良いでしょうか?
パッと思い付くだけでも以下のスキルが必要になることは理解できるかと思います。
・データの整理
・データ処理・分析(統計解析など)
・データの可視化(グラフ化)
一言で言うなれば「データを扱う技術」ですね。
単純なものであればExcelで十分でしょう。
使い慣れたExcelなどのソフトであれば、それほど苦も無く作業できそうですね。
しかし、Excelでできることは限られています。
複雑なことができないわけではありませんが、ある一定レベル以上の作業になると多くの場合、Excelなどのソフトは使われなくなります。
では何が使われるか?
主に2パターンに分かれると思われます。
1.専門的な解析ソフト
2.プログラミング
医学系の場合は専用の解析ソフトがある場合があります。
機器付属のものであれば良いですが、たいていは購入することの方が多いでしょう。
ただし、結構な価格になることが多いですよね。
例えば統計解析で良く利用されるSPSSなんかは何十万という価格になります。
私の分野で言えばPmodというPET画像解析ができるソフトは最低価格で数百万くらいします。
いくら必要だからとごねたところで金額が高いと買ってもらえる可能性は極めて低いです。
そうなると選択肢はプログラミングとなります。
特に近年ではPythonの注目度が一気に高まりました。
幸いなことに医学の分野においても、Pythonはよく使われています。
Pythonでは解析用の様々なライブラリが豊富に揃っています。
それらを使うことでより高度な処理を行う(医学的にも患者的にも有益な情報を得る)ことができるようになります。
2.プログラミングスキルは必ず必要なのか?
私は臨床検査技師の資格を持っており、元々プログラミングの教育はこれまで受けたことがありません。
しかし、研究職として10年以上働いたことで、他の方よりプログラミングの知識は持っています。
また、個人事業主として医療系国家資格を持った人たちからプログラム開発の依頼を受けたりもしています。
そんな中で感じるのは
「プログラム開発を依頼してくる人たちの意識レベルは高い」
ということです。
正直、プログラミングができなくても日常の業務はこなせるでしょう。
しかし、一定レベル以上の人たちになるとプログラミングに手を出し始めます。
それは何故かというと、
「既存の世に出回っている解析ソフトでは、やりたいことを実現できない」
からです。
ですが、医療分野の人間はプログラマーでもシステムエンジニア(SE)でもありません。
私の考えでは、医療系職種の人間はプログラミングに関して、あくまでエンドユーザー的な立ち位置でかかわるのが良いと思っています。
プログラミングは手段であって目的ではありません。
難しいと感じる人も多いとは思いますが、Pythonの場合はネット上に情報が溢れています。
書籍を買わなくても勉強できるくらいです。
他の言語よりも手軽に始められる環境も整っていますので、これからプログラミングを始めるならPythonがおすすめです。
3.心拍データを例に考えてみる
最近は非接触で心拍数データを取得できる機器も増え、その利活用を目指す研究が多く行われているようです。
(少なくとも私が過去に受けた依頼者も心拍数データを扱っていました)
ケースレポート(症例検討など)であればプログラミングに頼らずとも何とかなると思います。
グループ解析する場合はどうでしょうか?
そもそも人の目で見て判断する場合は、主観的であり、ヒューマンエラーを含む可能性が出てきます。
研究においては客観性が重視され、エラーがあってはなりません。
また、臨床をやっている方は研究に多くの時間を割くことがそもそも難しいのではないでしょうか。
客観的かつ効率的、そしてヒューマンエラーを含まずにデータを処理するにはどうしたら良いか?
答えはもう決まっていますね?
プログラミングです。
正直、プログラムを完成させる最初のステップまでは大変です。
ですが、完成してしまえば、あとはデータをプログラムに渡して動かすだけなので楽です。
心拍関連のPythonライブラリであれば、Neurokit2を使うことができます。
(ココナラは外部リンクが貼れないのでご自身で検索してみてください)
心拍の解析ではよくHeart Rate Varability (HRV)が行われます。
もちろんNeurokit2も対応しています。
下図はデモ用のソースコードを若干修正して実行したものです。
図の上(画像の真ん中あたり)にHRV_MeanNNやHRV_SDNNなどの指標の解析結果が表示されています。
人数分のデータをまとめて読み込み、各指標を全員分取得・整理し、そのまま統計解析に持ち込むことができます(データの保存もできますよ)。
自分で作るのは大変だ、という方はできる人に依頼するのも一つの手です。
4.既存ソフトではできない解析・分析手法が使える
すでに前述していますが、プログラミングを使うことで既存ソフトではできないことができるようになります。
例に出した心拍の場合は優秀な既存ソフトがあるので、そこまでメリットを感じないかもしれませんが、筋電・脳波・呼吸といった他のデータと組み合わせて解析をしたりすることができるソフトは見かけません。
そもそも医学データを分析する際、1種類のデータだけで検討することはあまりないでしょう。
性別や年齢、身体的なデータ、生理学的データ、生化学的データ、栄養学的データ・・・などなど。
臨床データは動物と違って被験者のプロファイルをキレイに揃えることが困難ですので、上記のようなデータと合わせて総合的に検討しなければなりません。
高額なソフトを購入すればそういったこともできますが、個人では手が出ない価格な上になかなか購入してもらえないことを考えると、無料で全て完結できるプログラミングは非常に魅力的です。
ただし、自分で全部やろうとするとそれなりの努力と労力が発生する点は気を付けなければなりません。
5.アイディアを形にできる
アイディアを形にできる点についてもすでに書きましたが、既存ソフトにできない最大のメリットと考えています。
・オリジナルの解析手法を試してみたい
・特許を取得したい
・手法を一般公開してみんなに使えるようにしたい
などアイディアを形にできることで色々なことが検討できるようになります。
特にプログラミングは一般公開することができるプラットフォームが世界的にも充実しています。
現在公開されているプログラムは主にGitHubに公開されていることがほとんどです。
昔からそうですが、有益な解析手法が無料公開されることが非常に多いです。
私がこれまでに関わったものでこれは使えるなと思ったものだと脳波や筋電図のような時系列の波形データを統計解析することができる「spm1d」というPythonライブラリです。
spm1dはPythonとMatlabの両方でソースコードが公開されています。
しかし、インストーラーのようなものは用意されていません。
あくまでソースコードを自由に使ってくださいというスタンスです。
こういったものが非常に多いのです。
使える人とそうでない人では成果物(学会・研究会・論文発表)の印象が全く異なります。
6.まとめ
データ分析にプログラミングが使えるよという話をしてきました。
プログラミングが使える人とそうでない人ではデータ分析・統計解析のレベルが天と地ほど変わってきます。
合わせて、医療データサイエンティストの養成課程を新設する大学が増えてきました。
今後、医療データをプログラミングを駆使して解析できる人材が増えてくることでしょう。
心拍・呼吸・筋電など、さまざまな医学データの処理をPythonを使って独自に解析したい、相談できる人を探しているという方はどうぞお声かけ下さい。