memoryfolder

メモです

pythonで数値計算 - 積分がしたい

物理系のシミュレーションをしています。積分をする時に単純にsumをとってしまい計算がおかしくなったことがありました。ちゃんとsimps等で近似計算をしましょう。
scipy.integrate.simps — SciPy v0.14.0 Reference Guide

x軸が
x=np.linspace(-10,10,10000)*10e-6 #micro meters
などと定義されてれば単位も完璧です。

integral = simps(x,y)とすればOK

無数の点光源画像からPSFを求めるpythonコード

MMDMを使ったmicroscopyの収差補正のテストをしています。
直径100nmのtetraspekをつかって画像が見えたのは良いんですが、zernike係数を動かしたりした時のPSFの変化が解析出来ないと困るのでpythonでコードを書いてみます。

解析したいのは下のような画像。
(画像)

まずは
画像からピークを検出して表示 - memoryfolder
でやったようにピークを検出してその中心位置をarrayとして得る。その過程でピークの数も得られる。

次に、その中心位置が画像の端でないか確認して40*40 pixelのPSFを40*40*(peak number)のarrayに入れていく。

最後にpeaksをaxis=2に対して平均すれば、平均のPSFが分かる。この際すべてのPSFをフィッティングして合わないものを排除すればさらに正確を期せるはず

コードはこちら、汚いですが。

>||
import matplotlib.pyplot as plt
import skimage.morphology as morph
from skimage.filters import threshold_adaptive
import numpy as np
import math
from scipy.ndimage.filters import gaussian_filter
from scipy.ndimage.measurements import label, center_of_mass
from PIL import Image as pil


image = "ImageSingle.png"
im =np.array(pil.open(image))[:,:,1]/255. #retrieve monochro image

#get peak positions
disk = morph.disk(2)
filt = gaussian_filter(im,3)#1
thres = threshold_adaptive(filt, 35, offset=-0.28)#13,-150
#er = morph.erosion(thres,disk)
#xlist, ylist = np.unravel_index(np.where(thres.ravel()==True),thres.shape)#atom place
lbl,num = label(thres)
peaklist = center_of_mass(thres,lbl,np.arange(num)) #position list

#get peak shapes... 40*40pixels?
peaks = np.zeros([num,40,40])
for i in xrange(num):
if peaklist[i][0]>0: #avoid using "nan" data
if (peaklist[i][0]>20)&(peaklist[i][0]<932)&(peaklist[i][1]>20)&(peaklist[i][1]<932): #avoid peaks around edge
print i
peaks[i] = im[int(peaklist[i][0])-20:int(peaklist[i][0])+20,int(peaklist[i][1])-20:int(peaklist[i][1])+20]

#average and display result
peak = np.average(peaks,axis=0)

plt.figure()
plt.imshow(im)
plt.figure()
plt.imshow(peak)
plt.show()
|

JASSO奨学金検索サイトには載っていない奨学金(大学院留学)

JASSOで奨学金を探して、すべて見つけた気でいましたが他にもあることに気が付きました。ショックです。今後増やしていきます。

孫正義奨学金
孫正義奨学金 募集要項

別のディスクにcdする

cd /D Z:
のようにすればできました。

おなじLANにあるPCのフォルダをマウントしておけば、他のPCのプログラムを実行したいときなど便利なはず

numpy、scipy、のインストールがpipでできないときの対処法

NumPyのインストール - Python入門から応用までの学習サイト
に書いてある方法。

http://www.lfd.uci.edu/~gohlke/pythonlibs/
にアクセスして自分のPCに合ったwhlファイルをダウンロードして(Ctrl+Fが便利。cpのあとの数字はpythonのバージョン。最後の数字はPCのビット数)、
python -m pip install [file name]
でOK!

失敗してももう一度実行するとうまく行ったこともありました。

格安!5万円でヨーロッパ往復

最近skyscannerで安い航空券を買ってヨーロッパに遊びに行っています。
時期を選べば50000円を切ることも多い。しかも空いてる時期が多いので、隣の席が空席なことも多々。
今までこれくらいの価格で旅行した中で半分くらいの便は隣があいていました(12便乗ったうち7便。うち3便は1列全部使えた)。


やり方は
skyscannerの出発地に最寄りの空港を入れ、日付部分をクリックして"月全体"から"最安値の月”か都合の良い付きを選ぶ。それで検索するだけ。
f:id:sunakku:20170515202714p:plain

そうすると安く行ける行き先が出てきて、
f:id:sunakku:20170515202756p:plain

下にスクロールすると、5万円台で行けるところがあった。
f:id:sunakku:20170515202923p:plain

アムステルダムに5万で行けるらしい(skyscannerにある値段はほぼ確実に記載価格で買える。サーチャージなどが後から足されることは少ない)
f:id:sunakku:20170515203020p:plain


値段のところをクリックすると最安値の月の価格リストが出てくる。6月が安いらしい。さらに日付を選択していく
f:id:sunakku:20170515203119p:plain

6月8日~6月12日なら有給とれそうだ。往復50,935円。
f:id:sunakku:20170515203215p:plain


予定がフレキシブルな方は試してみてください。イタリアやスウェーデンが安かったりします。
航空券価格はかなり細かく変動するので注意してください。まだ予定が決められない、等あればプライスアラートを設定しておくと便利だと思います。

skimageをpip installしようとした時、could not find a version that satisfies the requirementがでた

単純に、scikit-imageと書くべきでした

pip install scikit-image

でOK…