開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

MacでNEURONをPython3で動かす

 神経回路や神経活動を模倣できるオープンなシミュレーション「NEURON」のpython環境を導入をしてみたのでメモを残しておきます。試した環境はMac OS XYosemite(10.10.5)、homebrewでインストールしたpython3.4.3です。

 参考サイト(公式インストール手順)
 Compiling the standard distribution under OS X | NEURON

必要なライブラリをインストール

 WindowsLinuxpip3 install neuronでいけるらしいですが、残念ながらMacはサポートされていないので自分で色々揃える必要があります。

 ライブラリを揃えるために、便利なhomebrewを使用します。
 MacOSX - パッケージ管理システム Homebrew - Qiita

brew install autoconf
brew install automake
brew install libtool
brew install openmpi

インストールの準備

 最初にwhich gccMacデフォルトのgcc(/usr/bin/gcc)が使われることを確認しておきます。このgccを利用しないと並列環境関連のコードのコンパイルでエラーが出ます。

which gcc
# /usr/bin/gcc

 続いてインストール先のディレクトリを適当に作っておきます。NEURON-7.4のバージョンは最新のものにしておくと無難です。

export IDIR=/Applications/NEURON-7.4
mkdir $IDIR
mkdir $IDIR/iv
mkdir $IDIR/nrn

ivをインストール

 下記サイトのiv-mm.tar.gzからivのソースファイル等をダウンロードします。
 Get the standard distribution's source code | NEURON

 試したタイミングではバージョン19でしたが、最新のものを使うのが無難だと思います。その際は下記コマンドも適宜変更する必要があります。

cd iv-19
sh ./build.sh
./configure --prefix=$IDIR/iv
make
make install

nrnをインストール

 pipを利用していると、このインストールでエラーが出るので対処しておきます。pipのprefixのデフォルト値が悪さするようです。
 参考 : python - DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both - Stack Overflow

 ホームディレクトリ直下に.pydistutils.cfgを作成(~/.pydistutils.cfg)し、次のように編集します。

[install]
prefix=

 では、コンパイル&インストールです。--with-nrnpythonの後に自分の利用したいpythonを書きます。--with-paranrnがないと、後々エラーが出ます。

cd ../nrn-7.4
sh ./build.sh
./configure --prefix=$IDIR/nrn --with-iv=$IDIR/iv --with-nrnpython=python3 --with-paranrn
make
make install
make after_install

pythonで使えるようにする

 まず、出来上がった実行ファイルにパスを通します。
 ホームディレクトリ直下に.bash_profile~/.bash_profile)を作成し、以下を追加します。

export $IDIR=/Applications/NEURON-7.4
export IV=$IDIR/iv
export N=$IDIR/nrn
export CPU=x86_64
export PATH=$IV/$CPU/bin:$N/$CPU/bin:$PATH

 最後に、できたneuronモジュールをPATHの通っている適当な場所に配置します。

cd /usr/local/lib/python3.4/site-packages
ln -s /Applications/NEURON-7.4/nrn/lib/python/neuron

 これでnrngui -pythonで起動したり、python3ipython3で起動後にimport neuronできるようになるかと思います。

GoogleAdMobAdsSdkからgradleのAdMobに変更する

最初にbuild.gradle内のcompile files('libs/GoogleAdMobAdsSdk-6.4.1.jar')を消去。

プロジェクトのbuild.gradledependenciesに以下を追加

dependencies {
  // something
  compile 'com.google.android.gms:play-services:8.1.0'
}

ついで同ファイルの最初に以下を追加

apply plugin: 'com.google.gms.google-services'

更に全体のプロジェクトファイルを統括する(?)build.gradleに以下を追加

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
    classpath 'com.google.gms:google-services:1.3.+'
}

最後にAndroidManifest.xml内の内に以下を追加

    <meta-data android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

        <activity android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

とりあえずこれでコンパイルエラーが変わると思います。

gitで「Permission denied (publickey).」と言われた時にやるべきこと一覧

 何度も何度も怒られては対処法を調べて数分を犠牲にしてしまうので、やるべきことをリスト化しました。
 OS環境はMac OS X 10.10です。

ssh-agentに登録する

 とりあえずこれで大抵の場合は解決できます。

ssh-add ~/.ssh/[rsaファイル名]

push先のリンクを確かめる

 GitHub for Macアプリを使っていると、gitリポジトリのリンクが違っていてこのエラーが出る時があります。
 対象のローカルリポジトリ.git->configを開いて、[remote "origin"]下のurl =git@で始まるリンクが書かれているか確かめます。
 もしhttps:などで始まっていればgit@で始まるものに変更します。

キーのパーミッションを変えておく

 たまにキーのパーミッションのせいでこのエラーが出ることがあります。chmodでパーミッションを変更しましょう。

chmod ~/.ssh 700
chmod ~/.ssh/* 600

公開鍵(〜.pub)を登録しているか確かめる

 複数PCで管理していたり、GitHub for Macアプリを使ってたりすると、公開鍵を登録し忘れている時がたまにあります。
 このページで登録を確認できます。 Sign in · GitHub

 もしなければ、この辺りを参考に登録しましょう。
 http://qiita.com/Mitsunori_Tsukada/items/6886f1f28d9485484822:ttile