0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[FlowKit]-2 コンペンセーションの適用(pythonでFACS解析)

Posted at

pythonでFACS解析のデータ(FCSファイル)を操作する方法を記しています。
本記事はコンペンセーションの適用方法です。

公式ドキュメント
https://flowkit.readthedocs.io/en/latest/
https://pypi.org/project/FlowKit/

おさらい

import flowkit as fk
import bokeh
from bokeh.plotting import show
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
bokeh.io.output_notebook()


fcs_path = './[ファイル名].fcs'
sample = fk.Sample(fcs_path)

#sampleメタデータの出力(辞書型)
print(sample.get_metadata())

#コンペンセーションの値の出力
print(sample.get_metadata()['spillover'])

コンペンセーションの値の加工

コンペンセーションを適用する際には、適切な形のndarrayしか受け付けない。したがって、sample.get_metadata()['spillover']によって出力されたコンペンセーション値を加工するひつようがある。

まずは出力例。緑色の網掛け部分がコンペンセーション値の本体である。
image.png

これを以下のような配列に加工する必要がある。
image.png
配列の形状は チャンネル数×チャンネル数 にする。
加工方法は以下に2パターン記す。

テキストエディタ等で手作業で加工する

テキストエディタ等にコピペした後に、手作業で改行 [ ] ,を加える方法。
一番簡単でなんだかんだエラーが少なそう。

コードで加工する

詳細は割愛するが、sample.get_metadata()['spillover']の出力値を指定した文字列で分割した後に、ndarrayに変換している。
上手くいかなかったら修正が必要になるので、その場合手作業の方が短時間で済むかも。

#コンペンセーションの値を抽出してndarrayに変換
channels = len(sample.channels)-7
compe = sample.get_metadata()['spillover'].split(str(channels)+',')[1].split('-W,')[int(channels/3)].split(',')
comp_array = np.array(compe, dtype=float)
comp_array = np.reshape(comp_array, [int(channels), int(channels)])

#ndarrayが正しく生成されていることを確認
print(comp_array)
print(comp_array.shape)

コンペンセーション値の適用

以下のコードを実行する。実行時の出力は特にない。

sample.apply_compensation(comp_array)

これ以後、パラメーターsource='comp'でコンペ済みのeventを呼び出せる。

##実行例

#eventを取り出してDataFrameに
df_events = sample.as_dataframe(source='comp')
#eventを取り出してndarrayに
array_events = sample.get_events(source='comp')
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?