問題タブ [neuron-simulator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - ホームディレクトリを特異点コンテナにマウントすると、python インポートが壊れるのはなぜですか?
Pythonコードを実行するために特異点コンテナを構築してきましたが、特異点のドキュメントを読んでも、エラー/動作を理解できません。
まず、コンテナーは Docker からブートストラップされた Ubuntu18.04 です。
事前にコンパイルする必要があるpythonモジュール(ニューロン)を利用する必要があります。%post
定義ファイルのセクションでコードをコンパイルし、環境変数を追加しました。
あまり問題なくコンテナを構築できます(を使用sudo singularity build --sandbox
)。しかし、すべてが期待どおりに機能することを確認するために、テスト スクリプト (test.py) を実行しようとしています。スクリプトでは、問題のモジュール (ニューロン) をインポートしてから、リストを csv に保存して、データを適切に保存できることを確認します。したがって、次のようになります。
使用時に提供するフラグに応じて、singularity exec
異なる結果が得られますが、それは理解できません (または、どこから理解を開始すればよいかを知っています - これはニューロン、特異点、またはubuntu
問題ですか?)。
完全を期すために、コンテナー (および test.py) は、これらのコマンドを実行しているのと同じディレクトリ内にあります (この例では dir です)。したがって、--no-home
フラグを使用せずに $HOME をマウントし、次のように test.py を実行しようとすると、次のようになります。
singularity exec --writable --bind /home/bidby/path/to/some/dir:/mnt my_container.simg python3 /mnt/test.py
次のようなエラーが表示されますdlopen failed - x86_64/.libs/libnrnmech.so: undefined symbol: celsius
。かなりグーグルで調べてみましたが、c++ リンク エラーである可能性があります (ただし、Python しかよく知らないので、これをデバッグするのは簡単ではありませんでした)。
ただし、--no-home
フラグを使用する場合、つまり:
singularity exec --no-home --writable --bind /home/bidby/path/to/some/dir:/mnt my_container.simg python3 /mnt/test.py
その後、モジュールは正常にインポートされ、新しいエラーが発生します:
これを数日間継続的にグーグルで検索していますが、何が問題なのかわかりません。私が学んだこととテストしたことから、環境変数がコンテナに渡される方法と関係があるかもしれないと思いますが、ここに保存する権限がない理由は私にはわかりません. --no-home
しかし、フラグの使用がモジュールのインポートに影響する理由を理解できれば、これは解決されるかもしれないと思います。
これは問題の解決には役立たないかもしれませんが、私が気づいた/試した他のこと:
このフラグを使用する--containall
と、問題なく test.py を実行できますが、保存しようとした csv ファイルが見つかりません。私は言うドキュメントをチェックしました:
--containall (略して -C) フラグを使用すると、$HOME はマウントされず、ダミーのバインド マウントが $HOME ポイントに作成されます。-B` (または --bind) を使用して $HOME ディレクトリをバインドすることはできません。空のマウントが作成されるためです。そのため、イメージ内の /home/user にファイルがある場合、 --containall フラグはそれらをすべて非表示にします。
そして、この「ダミーバインドマウント」はファイルが書き込まれている場所であると推測しているため、実際に見つけることができないのはなぜですか。
フラグを使用してコンテナにシェルを作成するsudo
と、--writable
問題なくニューロンをインポートできます。これらのフラグのいずれも使用しない場合、上記と同じ「未定義シンボル」エラーが発生します。
LD_LIBRARY_PATH をエクスポートしないと、別の .so ファイルを参照する別の dlopen エラーが発生し、ファイルが存在しないというメッセージが表示されます。これは、パスの問題であるという私の考えを再確認します。
このエラーを再現するのに十分なコードが含まれていないことはわかっていますが、このコンテナーを作成する時間/エネルギーを持っている人はいないと思います (かなり大きいため) が、最も関連性の高い部分を含めたと思います。ただし、必要に応じてさらに追加します。
これをデバッグすることは私にとって悪夢でした.誰かが私がグーグルで調べるべき正しい方向に私を向けることができれば、私はそれを大いに感謝します.
neuron-simulator - ニューロンシミュレーターで.hocファイルを開く+「メカニズムではない」問題
Python 経由で NEURON シミュレーションを実行しようとしています。すべてのライブラリを整頓し、いくつかの簡単なシミュレーションを実行できましたが、より複雑なコードでいくつかの問題が発生しています。何かお役に立てる方法がありましたら、よろしくお願いいたします
問題番号1:
.hoc
ファイルがコンパイルされていても、Neuron はファイルの一部を開きません。エラーが発生します:
問題番号 2:
シミュレーターは、使用しようとしているメカニズムを認識しません。ここで私は少し迷っており、これ以上説明することはできませんが、これはエラーメッセージです:
問題番号 3 :
テンプレートとして認識されない:
python - NEURON でシナプスを作成するには?
Python インターフェイスを使用して NEURON シミュレーターでシナプスを作成するにはどうすればよいですか? Section
2 つのセクションを作成し、それらをシナプスに接続したいのですが、 API またはセクションのドキュメントにはその関数がありません。