Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung

Überblick

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.

Wie kopiere ich?

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.

Modulimport

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

Schließlich

Wenn Sie nur eine Bibliothek eines Drittanbieters in CASA einfügen möchten, können Sie auch casa-pip casa-pip verwenden.

Shell-Skript

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

Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Verwenden Sie Python in Ihrer Umgebung von Win Automation
[Python] Anmelden Ihres eigenen Moduls
Erstellen Sie Ihre eigenen Linux-Befehle in Python
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
Holen Sie sich Ihre eigene IP-Adresse in Python
Verwendung der C-Bibliothek in Python
Verwenden Sie den neuesten Pip in einer virtuellen Umgebung
Verwenden Sie in Ihrem Python keine readlines () für Anweisungen!
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Verwenden Sie jupyter-lab, das in einer virtuellen Python-Umgebung (venv) installiert ist.
Verwenden Sie Python in einer Anaconda-Umgebung mit VS-Code
Verwenden Sie die LibreOffice-App in Python (3) Bibliothek hinzufügen
Python: Verwenden Sie Ihre eigene Klasse für Numpy Ndarray
Verwenden Sie pydantic beim Lesen von Umgebungsvariablen in Python
Verwenden Sie os.getenv, um Umgebungsvariablen in Python abzurufen
Verwenden Sie eine kostenlose GPU in Ihrer Lieblingsumgebung
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
virtuelle Umgebung in Python
Verwenden Sie den Profiler in Python
Entwicklungsumgebung in Python
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
Verwenden wir die offenen Daten von "Mamebus" in Python
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Rufen Sie Ihr eigenes Python-Modul aus dem ROS-Paket auf
Verwendung des in Lobe in Python erlernten Modells
Ich möchte R-Datensatz mit Python verwenden
Mal sehen, wie def in Python verwendet wird
Verwenden Sie den let-Ausdruck in Python
Verwenden Sie Anaconda in einer Pyenv-Umgebung
Verwenden Sie das Messprotokoll mit Python
Verwenden Sie die Rückruffunktion in Python
Finde Fehler in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie den HTTP-Cache in Python
Behandeln Sie Umgebungsvariablen in Python
Verwenden Sie in Python ein Diktat mit Listenschlüssel
Verwenden Sie Random Forest mit Python
Organisieren Sie die Python-Entwicklungsumgebung
Verwenden Sie Spyder von Python IDE
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Verwendung der Methode __call__ in der Python-Klasse
Befehle, die häufig in der Entwicklungsumgebung während der Python-Implementierung verwendet werden
Führen Sie die Intelligenz Ihrer eigenen Python-Bibliothek mit VScode aus.
Wie Sie pyenv und pyenv-virtualenv auf Ihre eigene Weise verwenden
Führen Sie die Python-Datei aus, nachdem Sie die virtuelle Python-Umgebung mit der Batch-Datei aktiviert haben
[Python] Erstelle deinen eigenen LINE-Bot
Abrufen der arXiv-API in Python
Wrap (Teil der) AtCoder Library in Cython zur Verwendung in Python
Verwenden Sie Stoff wie in Python (Stoff3)
Python im Browser: Brythons Empfehlung
Speichern Sie die Binärdatei in Python