LoginSignup
2
1

More than 3 years have passed since last update.

Juliaでフローサイトメトリーのファイル(fcs)を触ってみた

Last updated at Posted at 2019-08-02

さわってみた系の記事です。
先日、偶然フローサイトメトリーのファイル(fcs)をさわる機会がありました。

これをJulia言語のFCSFilesというライブラリで開いてみようと思ったので一応記録。

FCSFiles

Add FileIO.jl integration for FCS files
https://github.com/tlnagy/FCSFiles.jl

フローサイトメトリーとは

image.png
https://en.wikipedia.org/wiki/Flow_cytometry#/media/File:Cytometer.svg

細胞のはいった液体を細く流して、個々の粒子を光学的に分析する測定手法だそうです。
レーザー光を当てて、

  • FSC(Forward Scatter) 前方散乱
  • SCC(Side Scatter) 側方散乱

やレーザー光によって生じた蛍光を検出する蛍光検出器がついているそうです。

Wikipedia: フローサイトメトリー

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))

image.png

こう書けば

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))

こうなります。

image.png

こう書けば

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))

こうなります。

image.png

Julia言語は、Makieなど、面白い可視化ライブラリが多いですね。

なんというか、言葉で表現しづらいですが、Julia言語は地球上でもっとも才能のある若者が集まっていて、人々の活発な才気の燦めきを感じることができるような、そんな雰囲気があります。もちろんそれは傲慢であり幻想かもしれないのですが。そういう意味で面白い言語だな〜と思いました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1