python pandas csvファイルを読み込む

(1) install

$ pip install pandas

Collecting pandas

....中略....

Successfully installed pandas-0.17.1

 

(2) 例

import pandas as pd

data1 = pd.read_csv('datafile.csv',sep=',')

for i in range(len(data1.OBJECT)):
     if ('U_' in data1.OBJECT[i]):
          print data1.vz[i]

 

データがdata1.OBJECT[i] みたいに格納できるのが便利。

yosemite [open filesを増やす]

yosemiteを再起動したら、どういうわけかfopenできる最大のファイル数が減った?ようでいままで動いていたプログラムが作動しなくなった。

(1)調べる
$ ulimit -a

core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited


==> 「open files = 256 だったので1000個のファイルが開けなかった。」


(2)解決策

(a)一時的な変更でいい場合は
$ [sudo] ulimit -n 10240

(b)永続的な変更

$ cd
$ echo kern.maxfiles=10240 | sudo tee -a /etc/sysctl.conf
$ echo kern.maxfilesperproc=10240 | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -w kern.maxfiles=10240
$ sudo sysctl -w kern.maxfilesperproc=10240
$ ulimit -n 10240 10240

$ cd
$ vi .bash_profile

".bash_profile"に以下の内容を加筆:
#----
# Added by me to increase the max number of open file (13 Jan 2016)
ulimit -n 10240 10240
#----

ヒント:「"i"でinsertモード、保存して終了するには "Esc" ":wq"」

 

(3)参考
http://blog.mact.me/2014/10/22/yosemite-upgrade-changes-open-file-limit

 

 

leapfrog 法による軌道計算

(1) leapfrog法

- 「Kick-Drift-Kick法」をimplementするために、簡単なKepler問題を解く。

- 重力場:質量1e11 Msunの質点

- 初期条件:(x,y)=(10, 0) kpc, (v_x, v_y)=(0, 100) km/s [eccentricity=0.77]

- 積分時間: 1 Gyr

- 積分timestep:(a) 1 Myr [1e3 steps] ; (b) 0.1 Myr [1e4 steps]

- (a) precession顕著。(b) precession無視可能。

- エネルギー誤差:(a) 15 %; (b) 0.5 % (during 1 Gyr)

- 計算時間:KDK (a) 7 ms; (b) 50 ms

参考までに、GSLの微分方程式のルーチンを使うと、20 ms (1 Myr / step)、 153 ms(0.1 Myr / step)。GSLでは、precessionはどちらのtimestepの場合も見られない。

>>> Kepler 問題を解く上では、GSLで何ら問題ない。ただし、多粒子になると、GSLのルーチンだけでは、計算時間が顕著に増えると予想される。「h=0.1 Myr, leapfrog」は計算精度、計算速度のバランス面で優れている。

>>> KDKの積分を行う関数を、「0.1 Myrの積分を10回行う」と記述すると、エネルギー誤差をおさえたまま9 ms 程度で計算できることが判明。つまり、KDKの計算時間は「関数の呼び出し回数」で決まる。 [追記2016/01/01]

 

(2) KDK法

timestep = h とすると、

v_(n+1/2) = v_n + a(x_n) h/2

x_(n+1) = x_n + v_(n+1/2) h

v_(n+1) = v_(n+1/2) + a(x_(n+1)) h/2

Springelの講義ノートでは、この2番目の式が間違っている(h が h/2 となっている)。

 

 

mac mini (yosemite) 不具合:Google Japanese Inputが原因か?

mac miniの調子がすこぶる悪い。

(1)セーフモードで起動=起動時に「Shift」を押しておく
>>> 起動に2時間近くかかったりする。
しばらくは普通に動くのだが、

(2)普通に起動
>>> 起動にx時間かかる(x>1)

(3)Apple Diagnostics=起動時に「D」を押しておく
>>> 「異常なし」

===
しばらくセーフモードで騙し騙し使っていたのだが、あるとき、
- Cannot start conversion engine. Please restart your computer.
- Failed to get current config values
などのエラーメッセージがでてきたので、これをもとに調べると、どうもGoogle Japanese Input(Google日本語入力)が悪さをしている模様。
>>> Google Japanese Input をアンインストール。

どうなることか。

 

>>> 治った。[追記。]

軌道計算アニメーション


ネット上の例にあったもの
0.1sec x 10 = 1secごとにパラパラアニメ
$ convert -delay 10 ./Pic/*.png test.gif

-----

[基本]

自分の場合
$ convert -delay 1 1with_bar/*.png 1snapshot_with_bar.gif

例えば

1with_bar

というフォルダに複数pngファイルがあったとき、それらをファイルの名前順につなげてくれるようである。

 

- google chromeなどのブラウザで見ると動いてくれる。

- Macのpreviewで見ると、combineされた(100枚の画像なら100ページの)画像として見れる。

gifはストップ・再生ができないので(ブラウザの更新ボタンで最初からなら再生できる)、snapshotを見る上ではpreviewがいい。

 

-----

[少し応用]

$ convert -delay 20 -resize 50% omega_m*Gyr/0*/fig*Lz/*png reduced50_delay20.gif

などとすると、もとのpngファイルのサイズを50%にしたもののgifファイルを作れる。gifが重すぎるときに便利。

-delay 20 ::: 20/100 secごと

-resize 50% ::: 画像サイズが50%