さわってみた系の記事です。
先日、偶然フローサイトメトリーのファイル(fcs)をさわる機会がありました。
これをJulia言語のFCSFilesというライブラリで開いてみようと思ったので一応記録。
FCSFiles
Add FileIO.jl integration for FCS files
https://github.com/tlnagy/FCSFiles.jl
フローサイトメトリーとは
https://en.wikipedia.org/wiki/Flow_cytometry#/media/File:Cytometer.svg
細胞のはいった液体を細く流して、個々の粒子を光学的に分析する測定手法だそうです。
レーザー光を当てて、
- FSC(Forward Scatter) 前方散乱
- SCC(Side Scatter) 側方散乱
やレーザー光によって生じた蛍光を検出する蛍光検出器がついているそうです。
Juliaとは
コードをプリコンパイルすることによって、スクリプト言語でありながらC言語のような速度を実現するとされる新しい言語です。(ただし、作業中にプリコンパイルが入ってしまうことが多く、体感的にはそれほどの速さを感じません。)
Flow Cytometry Standard (FCS) files
英語版Wikipediaの説明をご覧ください。テキストではなくバイナリっぽいので、非エンジニア勢は自分でいじろうとせず、ライブラリを使った方が無難そうです。
使ってみる
Readmeのとおりです。
https://flowrepository.org/id/FR-FCM-ZZZ4
に、フローサイトメトリーのテスト用ファイルが置いてあるので適当にダウンロードします。
wget https://flowrepository.org/experiments/4/fcs_files/315/download
読み込み
using FileIO
flowrun = load("378103.fcs")
FCSFiles.FlowSample{Float32}
Begin Time: 17:46:30
End Time: 17:47:10
Date: 26-JUN-2019
File: 378103.fcs
Axes:
Time
FSC-A
FSC-H
FSC-W
SSC-A
SSC-H
SSC-W
FITC-A (FITC-A)
PE-A
APC-A
PerCP-Cy5-5-A
グラフの作成はGadfly.jlを使用します
using Gadfly
plot(x=flowrun["FSC-A"], y=flowrun["SSC-A"], Geom.histogram2d,
Guide.xlabel("FSC-A"), Guide.ylabel("SSC-A"), Coord.cartesian(xmin=0, ymin=0))
こう書けば
plot(x=flowrun["FSC-A"], y=flowrun["SSC-A"], Geom.density2d,
Guide.xlabel("FSC-A"), Guide.ylabel("SSC-A"), Coord.cartesian(xmin=0, ymin=0))
こうなります。
こう書けば
plot(x=flowrun["FSC-A"], y=flowrun["SSC-A"], Geom.histogram2d, Scale.x_asinh, Scale.y_asinh,
Guide.xlabel("FSC-A"), Guide.ylabel("SSC-A"), Coord.cartesian(xmin=0, ymin=0))
こうなります。
Julia言語は、Makieなど、面白い可視化ライブラリが多いですね。
なんというか、言葉で表現しづらいですが、Julia言語は地球上でもっとも才能のある若者が集まっていて、人々の活発な才気の燦めきを感じることができるような、そんな雰囲気があります。もちろんそれは傲慢であり幻想かもしれないのですが。そういう意味で面白い言語だな〜と思いました。