ryamadaのコンピュータ・数学メモ RSSフィード

統計学・遺伝学関連の姉妹ブログ『ryamadaの遺伝学・遺伝統計学メモ』
医学生物学と数学とプログラミングの三重学習を狙う学習ツール
数学用語集(TOMAC)

2017-03-26 xelatex for ubuntu, then pandoc

[][][]xelatex for ubuntu, then pandoc 07:44

  • pandocはいろいろなファイルの変換をしてくれるアプリ。texのpdf化もしてくれる
sudo apt-get install pandoc
  • texはxetexというのがあるらしい
sudo apt-get install texlive-xetex
トラックバック - http://d.hatena.ne.jp/ryamada/20170326

2017-03-20 Python機械学習の勉強(い)

[][]テキスト関連資料の入手 Python機械学習の勉強(い) 13:16

  • pythonはpython3.xを使うらしい。準備ができていてるのはpython2.x。どこまで2系でできるかやってみる
  • Jupyter notebookではpython 2系、3系を使い分けられるようなので、いずれそれができるようにする
  • 2系、3系だけでなく、pythonはいろいろな「セット(Anaconda系とか)」があり、それぞれに環境を確保することもできる(が自分ではあまりうまくやれていない)
  • 教科書著者はコード、そのnotebook版をgithub公開している
git clone https://github.com/rasbt/python-machine-learning-book.git
jupyter notebook
  • クローンしたxxxx.ipynbをこのjupyter notebookが開けたブラウザ上の操作で開く
  • これを「リターン」するだけだとできるようにならないので、写経・改変しながら練習することにする
トラックバック - http://d.hatena.ne.jp/ryamada/20170320

2017-03-16 Meshlab,Rvcg,openCVwithPython

[][][][][]Meshlab,Rvcg,openCVwithPython 07:58

  • Meshlab
    • 3Dオブジェクトを操作させてくれるGUI。Windows,Mac,Linux OK(ダウンロード)
    • 複数の3Dオブジェクトファイルを置換もできる(PLY,Obj等)
    • ファイルフォーマット変換は
      • あるファイルフォーマットで読み込んで、File -> Export Mesh As -> 保存ファイルの拡張子を選択
  • Rvcg
    • RvcgはPLY形式での書き出し、読み込みが可。
    • Objファイルだったら、Meshlabで変換して以下のようにする
    • テクスチャ(3dオブジェクトの表面に模様を描くには、模様を乗せたpngファイルとかが必要で、PLYファイルにはそのファイル名(パス込み)が書かれているので、それがないとワーニングが出る
install.packages("Rvcg")
library(Morpho) # 使うことが多い
library(rgl)
testobj <- vcgPlyRead("texturedknot.ply")
edges <-vcgNonBorderEdge(testobj)
lines3d(t(testobj$vb[1:3,])[c(edges$vert1[1],edges$vert2[2]),],col=2,lwd=3)
## plot barycenters of adjacent faces
bary <- barycenter(testobj)
points3d(bary[c(edges$face1[1],edges$face2[1]),])
shade3d(testobj, col=3)
    • PLYファイル書き出し
data(humface)
vcgPlyWrite(humface,filename = "humface")
  • OpenCV with python
    • pythonでOpenCVを使えば "dae"フォーマットファイルでの書き出しができる
    • Meshlabではdaeファイルが読み込めるので
    • plyファイルで吐き出せば、Rに読み込ませられる
import numpy as np
import mcubes

# Create a data volume (30 x 30 x 30)
X, Y, Z = np.mgrid[:10, :10, :10]
# たくさんの3次元座標に「値」をつける
u = (X-5)**2 + (Y-5)**2 + (Z-5)**2 - 2**2
np.shape(u)
print X
print Y
print u
# Extract the 0-isosurface
# 指定した値0の等高面をマーチングキューブする
vertices, triangles = mcubes.marching_cubes(u, 0)
vertices_xyz = np.transpose(vertices)
print vertices
print triangles
# Export the result to sphere.dae
mcubes.export_mesh(vertices, triangles, "sphere.dae", "MySphere")
  • Meshlabのコマンドライン
    • meshlabserverというのがコマンド。パスを通したり、と言ったことはやらないといけないけれど、基本的には以下のコマンド
> meshlabserver -i hoge.obj -o hoge.ply
  • Rで読み込む
testobj <- vcgPlyRead("hoge.ply")

2017-03-14 覚えていられなさそうなpythonの技法

[]覚えていられなさそうなpythonの技法 17:34

  • あれやこれや調べ物をしないと見つからなかった技法は、忘れてしまって再度調べようと思ったときにも時間がかかるので、今日の成果を、雑多にメモしておく
  • 真偽一括
np.any(v==0) or np.any(u==0)
np.any(np.isnan(v))
import copy
newV = copy.copy(V)
  • 多次元グリッドの「順番制御」
np.meshgrid(u,v,w,indexing='ij')
  • 多次元グリッドを構成する元ベクトルの数が不定のとき
U = []
U.append(a)
U.append(b)
U.append(c)
U.append(d)
np.meshgrid(*U,indexing='ij') # *をつけて…
トラックバック - http://d.hatena.ne.jp/ryamada/20170314

2017-03-13 numpy array 行和・列和など

[][][]numpy array 行和・列和など 14:42

abc = np.array(np.arange(2*3*4)).reshape((2,3,4))
abc
print(abc.sum(0))
print(abc.sum(1))
print(abc.sum(2))
print(abc.sum(0).sum(0))
print(abc.sum(0).sum(1))
print(abc.sum(1).sum(0))
print(abc.sum(1).sum(1))
print(abc.sum(2).sum(0))
print(abc.sum(2).sum(1))

def myarray_sum(x,v):
    ret = x
    for i in range(v.size):
        ret = ret.sum(v[i]-i)
    return ret

print(myarray_sum(abc,np.array([0])))
print(myarray_sum(abc,np.array([0,1])))
print(myarray_sum(abc,np.array([0,2])))
print(myarray_sum(abc,np.array([1])))
[[12 14 16 18]
 [20 22 24 26]
 [28 30 32 34]]
[[12 15 18 21]
 [48 51 54 57]]
[[ 6 22 38]
 [54 70 86]]
[60 66 72 78]
[ 60  92 124]
[60 66 72 78]
[ 66 210]
[ 60  92 124]
[ 66 210]
トラックバック - http://d.hatena.ne.jp/ryamada/20170313