Note 10/19

  1. Take a culture dish from incubator ,observe it on the microscope and see cell’s condition.
  2. Get rid of culture solution in the dish by using 2 ml pippete. you may use the lid of your dish as a stand.
  3. Add 3 ml of Phosphate Buffered Saline(PBS) in order to wash out previous solution and remove it.
  4. Repeat procedure #3 3 times in total.
  5. Add 1mL of PBS and dispatch all of the cells by using cell scraper,then add another 500 μL of PBS on top of it.
  6. Move the cell suspension into 1.5mL tube
  7. Centrifuge.
Advertisements

Fijiによる画像分析 #2

Screenshot 2016-10-14 23.09.00.png

左上

Windowからlisteriacells.tifを開いたもの。

右上・上

Z ProjectからProjection Type->Max intensity

右上・下

Z ProjectからProjection Type->Min intensity

Temporal-Color CodeでLUTをFireに変更

Screenshot 2016-10-14 23.19.25.png

左上2枚

Fly BrainをSplit Channelsによって分割し、うちblueを消したもの

左下

Make Montageをデフォルトで実行したもの

右下

channel毎にsplitしたものを3D Viewer実行したもの

Screenshot 2016-10-15 14.23.13.png

キーボードショートカットによるLキーでCommand Finderを起動可能。

Helpの代用可能。

screenshot-2016-10-15-16-45-28

マクロ言語を使った測定の自動化。

ルーティン的な処理はマクロ言語で自動化するのが基本のようです。

Screenshot 2016-10-15 21.58.52.png

HeLa cellsをSplit Channelsで分割し、核がDAPI染色されたチャネルをアクティブな状態にしておいて、[Trainable Weka Segmentation]を実行すると、上のようなウィンドウが表示される。

核をROI指定して[Add to class 1],その他の領域を指定して[Add to class 2]を押し、[Train classifier]で教師あり学習によりfit,predictさせる。

[Create result]ボタンで分節化した二値画像が表示できる。

分節化の結果が思わしくない場合、その領域をただしくマーキングし、上の操作を繰り返すと良い。

Screenshot 2016-10-16 15.52.20.png

保存したaviフォーマットの動画ファイルを[File->import->Movie]によって読み込み、[RGB to Luminance]で8bitに変換する。

上の細胞性粘菌の動画ファイルはhttp://dictybase.org/Multimedia/motility/motility.htm

より入手可能。

[Duplicate]では、Duplicate stackにチェックを入れ、Rangeを100-150に設定することでスタック画像から指定領域を新たに複製することができる。

Screenshot 2016-10-16 16.05.30.png

上の画像は、切り出したスタック画像を、Threshold..で細胞領域が選択されるように閾値を決定後、Black backgroundにチェックを入れ、Applyボタンを押し二値化を実行する。

その後[Find Edges]でスタック画像全ての細胞領域の輪郭を抽出したものである。

[Divide..]では、画像データの全Pixelに対して除算を行うことができる。

[Brightness/Contrast]で、コントラストを調整できる。

[Stack to Images]では、スタックから個別の画像へ分割することが可能である。

[Image Calculator]では、複数の画像に対して演算を行うことができる。

なお、同じスタック画像に対して[Z Project]->Max intensityで白黒画像を、

[Temporal-Color Code]で色符号化した画像を作成できるらしい。

  • マスクについて

[Fluorescent Cells]を開き、[Split Channels]で分割、DAPIで染めた核の画像であるC3に対して[Threshold..]を適用し、255でDivideすることにより、二値化を行う。この操作により得られた画像のことをマスクと呼び、このマスクと、他波長の画像とを[Image Calculator]で掛け合わせることにより、核領域の別マーカーの輝度値を抽出することができる。

まあでも上2つの画像はshoulderであって肩ではないので、チューブリンとF-アクチンの量を表しているのかどうかは、Thresholdの設定次第なんだと思いますが..

Screenshot 2016-10-16 19.12.39.png

上の画像はDot Blotのサンプル画像をGaussian Blurによってぼかしたもの。

Screenshot 2016-10-16 19.11.20.png

Screenshot 2016-10-16 20.07.46.png

Dot Blot画像をGaussian Blurでぼかし、荷重係数w=0.75で重み付けしたものをImage Calculatorで引いてやったものが上。

Screenshot 2016-10-16 20.37.03.png

Dot BlotをEnhance Contrast..後、[Histogram]を実行したもの。

Screenshot 2016-10-17 12.48.11.png

上の画像はNeuronにより表示されるHippocampal neuronのうち核が染色されたチャネルである。

screenshot-2016-10-17-12-51-20

これに対して、Convolve..によって畳み込み演算を行う。

今回の場合、カーネルの数値が全て1であり、Normalize kernelにチェックが入っているため、平均値フィルタとなる。

得られる画像が以下。Convolutionによりビット深度を平均し、さらにPixel値を減少させているため、処理としてはぼかしを入れた状態となっている。

screenshot-2016-10-17-12-51-31

Screenshot 2016-10-17 19.09.30.png

上は、[noisy-fingerprint.tif]に対して[Erode]実行後に[Dilate]を行ったもの。

白いnoiseがErodeによる侵食処理によって消されているのがわかる。

なお、侵食させてから膨張という処理は[Process > Binary > Open]により、

また膨張させてから侵食させる処理は[Process > Binary > Close-]で行える。

Screenshot 2016-10-17 20.27.19.png

Screenshot 2016-10-17 20.30.58.png

長方形ROIに対して[Crop]を実行することで、上のような画像の切り取りが可能である。

Screenshot 2016-10-17 21.00.51.png

例えば、核膜染色の場合、核の領域内における総輝度値(integrated density)を計算することで、核膜タンパクの定量を行える(あくまで蛍光強度の定量であることに注意する。)

核のチャネルにGaussian Blurでガウスボケを加え、Autothreshold.Liによって二値化を行う。

こうして得られた二値化画像を、Duplicateにより複製し、片方にDilate,もう一方にErodeで処理を行う。

そしてImage Calculator…によってsubtractionを行うことによって、核の領域を得て、Create SelectionによってROIを作成、のちに核膜タンパクの画像をアクティベートし、Restore Selectionにより、この画像上でROIを当てはめる。

最後にMeasureを実行すれば良い。

ROI MAnagerを用いれば選択領域を登録、測定することもできる。

Screenshot 2016-10-18 21.14.01.png

combineで画像の結合ができる。

flybrain.gif

Gif..で、.gifフォーマットの画像も作成できる(かっこいい)

FullSizeRender 130.jpg

上のようなプロットを距離分布三次元プロットというらしい。

circles.tifに対して[3D Surface Plot]を実行することで作成できるとのこと。

Set Scale…で単位の変換。

screenshot-2016-10-19-11-23-48

Embryosを開きconvert into grayscaled 8bit data.

Afterwards by using [Auto Threshold].IsoData method,binarize values.

Notice,right here,that ‘white object and black background’ is unchecked before you apply it.

Lastly,Analyze particles by [Analyze Particles…] setting Size 100-infinity and Show outlines.

If it went successfully, you will acquire above image.

There are some kinds of values called ‘shape descriptors’ such as Circularity,Aspect Ratio,Solidity etc..

These can be quantitative measures to analyze massive amount of image datas.

e.g. when comparison of cell’s shape in different culture.screenshot-2016-10-19-12-17-35

Opened [MRI Stack] and in [Image > Properties], set Voxel depth at 5.

3D Viewer provides you with right above image.

Oct/12

  • ライソソーム病は厚生労働省により指定難病とされている。

http://www.mhlw.go.jp/stf/seisakunitsuite/bunya/0000062437.html

難病の定義は、

  1. 治療法が確立していない
  2. 機序が複雑
  3. 治療期間が長い

ざっくりとしているが上の通り。より正確には以下を参照。

http://www.mhlw.go.jp/stf/shingi/2r9852000002473g-att/2r985200000247br.pdf

 

  • ライソソーム病の遺伝子療法について

摂取制限で治療ができるフェニルケトン尿症のような必須アミノ酸代謝異常と異なり、それらの物質は生体内で合成されるので治療は困難であり、根治には遺伝子治療が必要である。現在の所、酵素補充療法臓器移植骨髄移植が行われる。しかし脳や神経の症状には酵素補充療法と骨髄移植はほとんど効果がないようである。

以下の治療法の項を参照した。

https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%82%BD%E3%82%BE%E3%83%BC%E3%83%A0%E7%97%85

酵素量を補うことにより過剰蓄積した基質の分解を促進する酵素補充療法が主な治療法である。

変異が起きている遺伝子座に対して遺伝子修復を行うことで根治が可能か。

  • 基質枯渇療法について

基質合成を抑制(基質枯渇療法)する方法でガングリオシドの蓄積を軽減すると神経症状の一部が改善することが明らかになっており,ガングリオシドの蓄積が症状を引き起こす直接の原因である。

http://medicalfinder.jp/doi/pdf/10.11477/mf.2425100846

  • シグナル遮断による治療

http://www.nanbyou.or.jp/entry/4061

  • 樹状細胞とは

樹状細胞(じゅじょうさいぼう、: Dendritic cell)は、抗原提示細胞として機能する免疫細胞の一種であり、哺乳類の免疫系の一部を担っている。

皮膚組織をはじめとして、外界に触れる鼻腔や、腸管に存在し、その名のとおり周囲に突起を伸ばしている。表皮の樹状細胞はランゲルハンス細胞と呼ばれる。

https://ja.wikipedia.org/wiki/%E6%A8%B9%E7%8A%B6%E7%B4%B0%E8%83%9E

  • その他

http://www.lysolife.jp/top_for_doctor/download_for_doc/pdf/lysosome.pdf

urllibによるurlエンコーディング

import urllib

import dialogs

import datetime

today = datetime.date.today()

Title = dialogs.text_dialog(title=’Example’)

TITLE = urllib.quote(str(Title))

Y = str(today.year)

M = str(today.month)

D = str(today.day)

if len(M) < 2:

M = ‘0’+M

if len(D) < 2:

D = ‘0’+D

http://d.hatena.ne.jp/noriboz/20110105/1294195677

適当に作った上のSnippetを用いてShareボタンの代用可能。

web上の検索時にも有用っぽいので一応メモ。

 

Fijiによる画像分析 #1

analyze_plotprofile

FijiのSamplefileに”Cell Colony”というものがあるので、このサンプル画像を[File > Open Samples]より選択する。

まず画像処理の手始めに、輝度プロファイルを取得する。

[Analyze > Plot Profile]をツールバーより選択すると画像のような輝度プロファイルを得ることができる。

また、今後頻回に利用しそうな機能として、[File > New]よりScriptエディタを起動できる。

起動されたスクリプトダイアログは、[Language > ]より言語設定を行った後でなければRunできない。

FijiによりOpenした画像に処理を施すには、IJ1 Macro言語を用いるのが簡便で良い。

なぜなら、getPixel()やsetPixel()などの画像に処理を加えるためのビルトイン関数が用意されているからである。

また、M51Galaxyのサンプル画像を開き、以下のコードをIJ1 Macro言語で実行すれば、直線ROIに沿った輝度プロファイルを得、さらにGaussフィッティングを行うことができる。

pf = getProfile();
xs = newArray(pf.length);
for (i = 0; i < xs.length; i += 1)
xs[i] = i;
Fit.doFit(“Gaussian”, xs, pf);
Fit.plot;

1行目のgetProfile()関数について、これはアクティブな画像

の直線ROIに沿った輝度プロファイルを1次元Arrayオブジェクトとして返す。

ROIとはRegion Of Interstの略語である。以下はWikipediaからの引用

Region of Interest – 関心領域(対象領)

画像圧縮において、特定の領域に多くの符号量を割り当てること。JPEG 2000などを参照されたい。イメージング技法で、観察/測定する領域を絞ることがあり、その特定の領域をいう。

フィッティングにはx軸の値も必要となるため、newArray()メソッドを用いる。

2~4行目のコードは、やや煩雑であるがPythonで言ったところのnumpy.linspace(0,xs.length,1)である。

Fit.doFit関数によってガウス分布のフィッティングを行うことができる。(すごい)

最終行のFit.plotは、plt.plot()とplt.show()を同時に実行できるようにしたようなメソッド。

得られた結果を以下に示す。

gauss

Fit.doFit()メソッド便利すぎるだろ..

部活のイベント・キャンプを終えたついでにNaiveBayes実装

10月1,2日に、部活のイベントとしてキャンプをしてきた。(場所は大神子の徳島ユースホステル)

記事を書きながら気づいたけど、写真を撮ってない…

こんな場所でした

photo02

www.jyh.or.jp より

ffhqtD.jpeg

a-yh.net より

注)イメージ画像です。飽くまでイメージです。

 

なるほど、テニス部だから大神子のテニスセンター利用したのね

とか思ったそこのあなた。

考えが甘いです

戦いです

クイズ大会です

BBQです

戦闘(銭湯@えびすの湯)です

飲み会です

..まずはクイズ大会でライフラインである食材を奪い合い。

内容はオリンピックのメダル獲得数に関する問題からヒスタミン注射によるルイスの三重反応とかビタミンB1欠如による乳酸アシドーシスとかデパスとかなんかの書類の保存期間とかエンテイとか19歳から39歳までの引きこもりの人数とかパラリンピックとかテニスボールの重さとかSTPRの椅子の数とか…

(最後の方は記憶が曖昧

そうして獲得した食材を焼き。

喰らい尽くす。

そうして肥やされた自分たちに待っているのは銭湯

まずはじめに入り口付近で金を徴収され。

腕には数字が刻まれた鍵付きのバンドを巻かれ。

大衆が高温(人肌よりちょっと熱い程度)の湯により茹でられる。

こうして体内から水分を奪われた自分たちに無慈悲にも次はアルコールが襲いかかる…

このようにして洗脳を受けた者は皆、最後にはこう言ってその場を去る

「楽しかった」と..

 

さて今回はPythonを使ってざっくりとNaiveBayesを実装したい。

“””

import numpy as np

class NaiveBayes(object):
   """
   Naive Bayes class (1)
   """
   def __init__(self):
       """
        Constructor
       """
       self.pY_ =None
       self.pXgY_ = None

   def fit(self,X,y):
        """
        Fitting model
        """

	n_samples = X.shape[0]
	n_features = X.shape[1]

	n_classes = 2
	n_fvalues = 2

	if n_samples != len(y):
	    raise ValueError('Mismatched number of samples.')

	nY = np.zeros(n_classes,dtype=np.int)
	for i in xrange(n_samples):
      	    nY[y[i]] += 1

	self.pY_ = np.empty(n_classes, dtype=np.float)
	for i in xrange(n_classes):
	    self.pY_[i] = nY[i] / np.float(n_samples)


	nXY = np.zeros((n_features, n_fvalues, n_classes), dtype=np.int)
	for i in xrange(n_samples):
	    for j in xrange(n_features):
	        nXY[j, X[i, j],y[i]] += 1

	self.pXgY_ = np.empty((n_features, n_fvalues,n_classes),dtype=np.float)
	for j in xrange(n_features):
	    for xi in xrange(n_fvalues):
	        for yi in xrange(n_classes):
	            self.pXgY_[j, xi, yi] = nXY[j, xi, yi] / np.float(nY[yi])

   def predict(self,X):
        """
        Predict class
        """


	n_samples = X.shape[0]
        n_features = X.shape[1]
	
	for i in xrange(n_samples):
	    xi = X[i, :]
	
	y = np.empty(n_samples, dtype=np.int)
	
	for i,xi in enumerate(X):

#	    logpXY = np.log(self.pY_)
#	for j in xrange(n_features):
#	    logpXY = logpXY + np.log(self.pXgY_[j, xi[j], :])

	    logpXY = np.log(self.pY_) + \
        	     np.sum(np.log(self.pXgY_[np.arange(n_features), xi, :]),axis=0)

	    y[i] = np.argmax(logpXY)
	return y

“””
上記のスクリプトをpythonfileとして保存後、以下のコードをipythonで実行。

“””

In [1]: from bayes import NaiveBayes

In [2]: import numpy as np

In [3]: clf = NaiveBayes()

In [4]: data = np.genfromtxt(‘vote_filled.tsv’, dtype=np.int)

#tsv stands for “tab separated values”

In [5]: X = data[:, :-1]

#X implies it’s a matrix for feature values

In [6]: y = data[:, -1]

#y implies it’s a vector and for class labels

In [7]: clf.fit(X,y)

In [9]: pred_y = clf.predict(X[:10, :])

In [10]: for i in xrange(10):

    print i, y[i], pred_y[i]

   ….:    

0 1 1

1 1 1

2 0 0

3 0 0

4 0 0

5 0 0

6 0 1

7 1 1

8 1 1

9 0 0

“””

7番目(インデックスは6)のクラス分類がうまくいっていないがとりあえず今回はNaiveBayesの実装はおまけなのでこれで。

np.argmax()メソッドやらユニバーサル関数、raiseステイトメントについて学べたこと、

そしてarrayオブジェクトの扱い方に慣れるという点で有意義だった。

事前確率pY_の意味は慣習とprobabilityの意味でわかるけど、

事後確率pXgY_のgの意味がワカラナカッタ…