蛙の井戸見聞記 Pretty frog in a well who knows nothing of the great web ocean!

~~ 好奇心は猫をも殺す Curiosity Kills the Cat ~~ ♪欲しいモノ・食べたいモノ・ネットで集めた情報と日々の記録の倉庫♪ Logging my life... Since 2003.12  

optimize_curve_fitで以下エラー

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 

検索してみたら

  1. デバッグする。logging moduleを使う。
  2. 初期値を入れる。

が改善案と。

画像処理など

画像をピクセル単位で足したり引いたりフィッティングしたり、をしたくて結局pythonに流れ着いた。

いろいろてきとーだが、覚え書きするためのメモ。これだと動かないかもだけど、必要事項は書いた。target_funcの中の関数はnumpyを使うのはTIPS。

from PIL import image
import numpy as np
import math as mt
from scipy import optimize

def target_funt(x,a,b,c):
	f = c+ a * np.sin(x-b)
	return f

def main():
		im1 = Image.open("test.jpg")
		rgm_im1 = im1.convert('RGV')
		size = rgb_im1.size
		imres = Image.new('RGBA',size)
		print(size[0])
		print(size[1])
		for x in range(size[0])
			for y in range(size[1])
			r1,g1,b1 = rgb_im1.getpixel( (x,y) )
			bw1 = (r1+g1+b1)/3/256
			xdata = np.array([0,mt.pi/4, mt.pi/2, mt.pi*3/4i])
			ydata = np.array([r1, g1, b1, r1)]
			params, params_cov = optimize.curve_fit(target_func, xdata, ydata)
			r = params[0]
			g = params[1]
			b = params[2]
			imres.putpixel( (x,y) , (r,g,b,0) )
	imres.save('testres.jpg",'jpg')
if __name__ = "__main__":
	main()

Abinit on os X
エラーでいろいろ苦戦していたのだが、
ライブラリのリンクとかいろいろ気にしてたのだが、どうにもうまくいかず。

特にsegmentation fault についての問題が長引き・・。。ようやく、

で解決した。

つまり、BLAS/LAPACKのライブラリが正しくない、これらのせいでsegmentation faultがおきる、
なので、速度を犠牲にすればなんとか動く、内蔵ライブラリを使用する。という方法で解決させた。

configure --with-linalg-flavor="none" 

とりあえず8.0.8ではコンパイルとテスト完了。runtest.pyは1時間半ほどかかった。。遅い。

最新版の8.2では、runtest.pyがなぜかIOErrorで頓挫・・・もういい、別に最新でなくても。

openmpi

brew install open-mpi

で入るんだが、そうすると、clangバージョンになってしまう。

を参考にいろいろ苦闘。

そして、open-mpiは、http://www.open-mpi.org/  から最新版をダウンロード。
解凍して、

./configure CC=gcc CXX=g++ F77=gfortran FC=gfortran --enable-mpi-thread-multiple --prefix=(install dir)
make
make install

でインストールされるんだが、それでも、mpiccがclangのまま。

gccは入れ替えたつもりだったんだが、PATHが通っていなかった。
あと、openmpに対応させるのに、

brew reinstall gcc --without-multilib

で、openmpを使用可能にしてから、再度、openmpiをコンパイル

PATHに追加

export MANPATH=(install dir)/share/man:$MANPATH
export LD_LIBRARY_PATH=(install dir)/lib:$LD_LIBRARY_PATH
export PATH=(install dir)/bin:$PATH

ということでなんとか。。。。

しかし、MPI::というコードが使えん、というエラーが出る。

そこで!

./configure CC=gcc CXX=g++  FC=gfortran --enable-mpi-thread-multiple --prefix=(install dir)--enable-mpi-cxx --enable-mpi-cxx-seek
make
make install

とオプションを追加してコンパイルすると、大丈夫!!!

とてもたすかる。。。

MPI並列プログラミング

MPI並列プログラミング

久しぶりに brew updateしたら、エラーでまくり。

git config --global http.proxy proxy.example.com:8080  プロキシの設定を疑う・・。
git config --global http.sslVerify false  あ、httpsか?
brew prune そして不要シンボルリンクの削除

で復活。

以下参考URL

これから学ぶmacOSターミナル

これから学ぶmacOSターミナル