2023年12月22日金曜日

astropy

Pythonで太陽系の天体位置を描画してみる」というのを見つけた。python上の天文学統合データ処理環境であるastropyというライブラリを使うものだ。

jupyter lab を起動して,さっそく試してみると,いきなりmatplotlibが見つからないというところでつまづいた。以前に試したpythonのコードでは,matplotlibを読み込んでちゃんと作図がでてている。その古いコードでもエラーがでてきた。

macbook air の環境は,基本的にはhomebrew で更新しているので安心できるのだが,問題は,python環境である。python は3.9〜3.12までの複数のバージョンが同居することになっている。これは基幹ソフトなので,下手に古いものを消してしまうとややこしいのだ。そこで,一般には,python環境を指定するpyenvとかvenvで仮想環境を設定した上で,様々なライブラリを加えていくことになる。

が,ですね,それはそれで面倒なので,アドホックにバージョンアップを繰り返しながら,pip install ホゲホゲをつづけているために,わけわかめ状態になっている今日この頃なのだ。jupyterlabもバージョンが上がるたびに,見えなくなってしまうので,毎回 brew link jupyterlabを繰り返す始末だ。70歳になると,自分の体の中のDNA情報システムだけでなく,外の電子情報システムまで老化が進んでくるということだ。

まあ,macOSの場合は,機種更新の際に新規インストールすればそれなりに,なんとかなるかもしれないけれど,複雑な記録や認証情報を引き継ぐのは厄介だ。特に,iOSでは,指紋認証を含め,現金が動く認証アプリがウヨウヨいるので,次期機種更新のことを考えただけで気が遠くなりそうだ。


話を戻して,astropyについて。jupyter環境でpython kernelを立ち上げているところから,!エスケープで!pip listをやってみると,matplotlibは存在している。!pip install matplotlib でも致命的エラーはでない。ChatGPTに相談してみると,カーネルがどうなっているか確認せよとのこと。
 jupyter kernelspec list
  python3              /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/lib/python3.12/site-packages/ipykernel/resources
  julia-1.9            /Users/koshi/Library/Jupyter/kernels/julia-1.9
  maxima               /Users/koshi/Library/Jupyter/kernels/maxima
  wolframlanguage12    /Users/koshi/Library/Jupyter/kernels/wolframlanguage12
はいはい,表に見えていたのは python3.11.6だったけれど,実は,python.12.1が使われており,ここにはmatplotlibが入っていませんでした。さっそく,このポイントで,matplotlibとかscipyとかastropyとかpytest-astropyとかをpipでインストールした。別の参考資料に指示があった,astropyが正しく導入できているかどうかのテストも,試行錯誤の後にOKとなった。

   cd /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/bin

   ./pip install astropy

   ./pip install ephem

import astropy as ap
>>> ap.test()
platform darwin -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0

Running tests with Astropy version 6.0.0.
Running tests in lib/python3.12/site-packages/astropy.

Date: 2023-12-19T22:26:53
Platform: macOS-14.2-arm64-arm-64bit
Executable: /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec/bin/python
Full Python Version: 
3.12.1 (main, Dec  7 2023, 20:45:44) [Clang 15.0.0 (clang-1500.0.40.1)]
encodings: sys: utf-8, locale: UTF-8, filesystem: utf-8
byteorder: little
float info: dig: 15, mant_dig: 15

Package versions: 
Numpy: 1.26.2
Scipy: 1.11.4
Matplotlib: 3.8.2
h5py: not available
Pandas: not available
PyERFA: 2.0.1.1
Cython: not available
Scikit-image: not available
asdf-astropy: not available

Using Astropy options: remote_data: none.

rootdir: /opt/homebrew/Cellar/jupyterlab/4.0.9_2/libexec
plugins: astropy-0.11.0, remotedata-0.4.1, hypothesis-6.92.1, cov-4.1.0, filter-subpackage-0.1.2, astropy-header-0.2.2, anyio-4.1.0, mock-3.12.0, doctestplus-1.1.0, arraydiff-0.6.1
collected 28085 items / 5 skipped  

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========== 27425 passed, 425 skipped, 240 xfailed, 80 warnings in 184.56s (0:03:04) ===========
<ExitCode.OK: 0>
ところが,やっぱりもとの太陽系の天体位置描画が動かない。最後に,Animation関数中のblit=False をblit=Trueにしてようやく何か表示されてほっとしたが,そこまでで内部にエラーがあるとのメッセージが出て異常終了してしまった。チーン。


図:ここまでは出たけれどアニメーションにはなっていなかった残念な図

astropyはイメージ処理やデータ処理を本業とした,プロ用の本格的なシステムだった。

0 件のコメント: