Help us understand the problem. What is going on with this article?

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

さわってみた系の記事です。
先日、偶然フローサイトメトリーのファイル(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言語は地球上でもっとも才能のある若者が集まっていて、人々の活発な才気の燦めきを感じることができるような、そんな雰囲気があります。もちろんそれは傲慢であり幻想かもしれないのですが。そういう意味で面白い言語だな〜と思いました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away