Back
Featured image of post Python 3.7になったGoogle ColabでCASAを動かしてみる

Python 3.7になったGoogle ColabでCASAを動かしてみる

2021年4月時点ではプレリリース版CASAのインストールが必要です

TL;DR

Google Colaboratory(Colab)のPythonのバージョンは長らく3.6でしたが、2021年2月24日に3.7にアップグレードされました1。 これによって、Python 3.6系にしか対応していない2電波天文学のデータ解析ソフトウェアCASAがColab上で動かなくなってしまいました。 この記事では、3.7系対応のプレリリース版CASA6.2をColabにインストールし、公式のノートブックが動くことを確認してみました3

How to install

まず、リリース版のインストール方法はCASA docsに記載されている以下の方法です。

apt-get install libgfortran3
pip install --index-url https://casa-pip.nrao.edu/repository/pypi-casa-release/simple casatools
pip install --index-url https://casa-pip.nrao.edu/repository/pypi-casa-release/simple casatasks

これをColabで実行すると、Python 3.7対応のcasatoolsが存在しないのでエラーが出てインストールできません。

Looking in indexes: https://casa-pip.nrao.edu/repository/pypi-casa-release/simple
ERROR: Could not find a version that satisfies the requirement casatools (from versions: none)
ERROR: No matching distribution found for casatools

そこで、https://casa-pip.nrao.eduを検索してPython 3.7対応のプレリリース版を探します。 記事作成時点では、6.2.0.100などが良さそうです4。 というわけで、プレリリース版のインストール方法ではこれらを手動でダウンロードします。

apt-get install libgfortran3
wget https://casa-pip.nrao.edu/repository/casa-test-wheel/packages/casatools/6.2.0.100/casatools-6.2.0.100-cp37-cp37m-manylinux2010_x86_64.whl
wget https://casa-pip.nrao.edu/repository/casa-test-wheel/packages/casatasks/6.2.0.100/casatasks-6.2.0.100-py3-none-any.whl
wget https://casa-pip.nrao.edu/repository/casa-aux-wheel/packages/casadata/2021.4.5/casadata-2021.4.5-py3-none-any.whl
pip install casatools-6.2.0.100-cp37-cp37m-manylinux2010_x86_64.whl
pip install casatasks-6.2.0.100-py3-none-any.whl
pip install casadata-2021.4.5-py3-none-any.whl

Operation check

以上のインストール方法を書いた公式のノートブックのコピーを作成しました。 実行したところ、少なくともノートブックの内容(listobs, tclean, exportfits)は動作することが確認できました。

References


  1. https://github.com/googlecolab/colabtools/issues/1422#issuecomment-784545501 ↩︎

  2. 2021年4月時点の最新版CASA6.1の話です ↩︎

  3. ノートブックの内容が動くだけで、全ての動作を保証するものではありません ↩︎

  4. マイナー以下のバージョンの違いは筆者は良く分かりませんでした… ↩︎

Built with Hugo
Theme Stack designed by Jimmy