CASA (Common Astronomy Software Application) und sein zentrales CASA Toolkit sind sehr nützlich für Datenanalysen wie ALMA, aber für die Verwendung von "casapy" (eigentlich eine von "casapy.py" generierte IPython-Shell). ) Muss ausgeführt werden. Aus diesem Grund kann es nicht in einer eigenen Python-Umgebung ausgeführt werden, und es ist schwierig, eine interaktive und hoch reproduzierbare Analyse durchzuführen, beispielsweise mit Jupyter-Notebook (IPython-Notebook). Kopieren wir also das CASA Toolkit unter Mac OSX und stellen es als Modul in Ihrer eigenen Python-Umgebung zur Verfügung [^ linux].
[^ linux]: Diese Methode wurde vom Autor als Mac OS X-Version unter Bezugnahme auf [hier] erstellt (https://newton.cx/~peter/2014/02/casa-in-python-without-casapy/). Ding. Es ist keine offiziell unterstützte Methode.
Das CASA Toolkit wurde als Modul namens "casac" in "casapy" importiert. Kopieren Sie daher die entsprechenden Skripte ("* .py") und gemeinsam genutzten Bibliotheken ("* .so", "* .dylib"). Dies reicht jedoch nicht aus, und Sie müssen den Pfad der gemeinsam genutzten Python-Bibliothek, die von jeder gemeinsam genutzten Bibliothek verwendet wird, in den Pfad Ihrer eigenen Python-Umgebung ändern. Fügen Sie PYTHONPATH
und CASAPATH
hinzu, damit Python die zuletzt kopierte casac.py
lesen kann.
Die Reihe von Arbeiten ... sollte durch Ausführen des folgenden Shell-Skripts [^ cltools] [^ pyver] [^ casaver] [^ dependencies] abgeschlossen werden. Passen Sie vor der Ausführung den CASA-Pfad ("casaapp"), den Zielpfad ("output") und das Exportziel "* PATH" ("profile") an Ihre eigene Umgebung an. Stellen Sie sicher, dass Sie vor dem Ausführen ein Backup erstellen!
$ ./extract_casatk_osx.sh
[^ cltools]: Zum Ausführen des Skripts sind Xcode-Befehlszeilentools erforderlich.
[^ pyver]: Wenn Sie mehrere Python-Umgebungen wie "pyenv" haben, wählen Sie vor dem Ausführen Python 2.7.x aus. Dies entspricht der Python-Version in CASA.
[^ casaver]: Das Skript wurde gemäß der CASA-Verzeichnisstruktur der Mac OS X-Version geschrieben, sodass es unter der Linux-Version nicht ordnungsgemäß funktioniert. Darüber hinaus haben wir den Vorgang nur mit CASA 4.5.0 bestätigt.
[^ Abhängigkeiten]: Einige Tools hängen von den Daten in CASA ab (casa-data
) und funktionieren nicht, wenn Sie die Quell-CASA deinstallieren oder verschieben (z. B. ia
). Für diese ist CASAPATH
eingestellt.
Jetzt müssen Sie nur noch Python ausführen und den casac
importieren. Zum Beispiel kann das bildbezogene CASA-Tool (ia
) verwendet werden, indem Folgendes angegeben wird!
$ python # or ipython, jupyter notebook
>>> import casac
>>> ia = casac.casac.image()
>>> ia.open('casaimage.image')
True
Wenn Sie nur eine Bibliothek eines Drittanbieters in CASA einfügen möchten, können Sie auch casa-pip casa-pip verwenden.
extract_casatk_osx.sh
casaapp=/Applications/CASA.app # customize this!
outputdir=${HOME}/Documents # customize this!
profile=~/.bash_profile # customize this!
echo "CASA directory: " ${casaapp}
echo "Output directory:" ${outputdir}
echo -n "Press any key to continue >"
read INPUT
echo "Step 1: creating casatk directory"
casart=${casaapp}/Contents
casatk=${outputdir}/casatk
mkdir -p ${casatk}/Frameworks
mkdir -p ${casatk}/Resources/python/__casac__
echo "Step 2: copying libraries and Python scripts from CASA app"
echo " this may take a while ..."
cp -a ${casart}/Frameworks/lib ${casatk}/Frameworks
cp -a ${casart}/Frameworks/*.jar ${casatk}/Frameworks
cp -a ${casart}/Frameworks/*.dylib ${casatk}/Frameworks
cp -a ${casart}/Frameworks/Qt*.framework ${casatk}/Frameworks
cp -a ${casart}/Resources/python/casac.py ${casatk}/Resources/python
cp -a ${casart}/Resources/python/__casac__/*.so ${casatk}/Resources/python/__casac__
cp -a ${casart}/Resources/python/__casac__/*.py ${casatk}/Resources/python/__casac__
echo "Step 3: changing Python-framework's path of libraries"
libpy_so=@loader_path/../../../Frameworks/Python.framework/Versions/2.7/Python
libpy_dylib=@loader_path/lib/Python.framework/Versions/2.7/Python
libpy_user=`python -c "import glob; from distutils import sysconfig;
print(glob.glob(sysconfig.get_config_var('LIBDIR')+'/libpython*')[0])"`
for f in ${casatk}/Resources/python/__casac__/*.so ; do
install_name_tool -change ${libpy_so} ${libpy_user} ${f}
done
for f in ${casatk}/Frameworks/*.dylib ; do
install_name_tool -change ${libpy_dylib} ${libpy_user} ${f}
done
echo "Step 4: exporting PYTHONPATH and CASAPATH to profile"
casapath="${casart} darwin socorro-\$(uname -p) \$(hostname -s)"
pythonpath="${casatk}/Resources/python"
echo "export CASAPATH=\"${casapath}\"" >> ${profile}
echo "export PYTHONPATH=\$PYTHONPATH:${pythonpath}" >> ${profile}
echo "Done!"
Recommended Posts