Skip to main content

NEXOCLOM: Neutral EXosphere and CLOud Model

Dr. Mathew Burger, Space Telescope Science Institute

STScI

Documentation

https://nexoclom.readthedocs.io/en/latest/ (Reasonably complete and up to date). This part about writing inputfiles is particularly useful.

Installation

The easiest way to install is to create a fresh venv or conda environment and use:

pip install nexoclom

There is configuration work that will need to be completed before nexoclom can be used. This process is given in detail below, although it is likely to change soon.

I am working on a script to clean up the installation process

  1. Install Anaconda Python (version >= 3.8):
    1. Download the installer from: https://www.anaconda.com/distribution/
    2. double-click the installer to install. This installs anaconda python in $HOME/anaconda3 and does not need sysadmin privileges.
    3. Verify it works: Open a new terminal window and start ipython. You should see something like this:
(base) [sunra m🍔 /~/]$ ipython
Python 3.8.8 (default, Apr 13 2021, 12:59:45) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.32.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 
  • NOTE: I think Anaconda python likes the bash shell, but there are probably ways around that.
  1. Create a new python environment with the model.

    1. Download the file nexoclom_environment.yml

    2. In a text editor, update the last four lines

      prefix: /user/mburger/anaconda3/envs/nexoclom/bin/python
      variables:
        PGDATA: /user/mburger/.postgres/main
        NEXOCLOMCONFIG : /user/mburger/.nexoclom
      

      For prefix, you want $HOME/anaconda3/..., but $HOME needs to be the specific path.

    3. Create the envirnoment:

      (base) [sunra m🍔 /~/]$ conda env create -f nexoclom_environment.yml
      
    4. To use this environment run:

      (base) [sunra m🍔 /~/]$ conda activate nexoclom
      WARNING: overwriting environment variables set in the machine
      overwriting variable PGDATA
      

      Activating nexoclom sets the environment variables PGDATA and NEXOCLOMCONFIG

      None of this will work if the correct environment is not active. You will know it's active because your prompt will change and python will point to a different executable:

      (nexoclom) [sunra m🍔 /~/]$ which python
      /Users/mburger/anaconda/envs/nexoclom/bin/python
      
    5. To turn it off run:

      (nexoclom) [sunra m🍔 /~/]$ conda deactivate
      
  2. Create the .nexoclom file

    1. In your home directory create a file called .nexoclom with the following lines:
      savepath = <fullpath>/modeloutputs
      datapath = <fullpath>/ModelData
      database = thesolarsystemmb
      mesdatapath = <fullpath>/UVVSData
      mesdatabase = messengeruvvsdb
      

<fullpath> does not need to be the same in all lines, but the directories all need to be valid.

  1. Initialize the postgres server if necessary:

    1. In your .bashrc or .bash_profile file (the file that runs when you start a terminal window) add the line:
      export PGDATA=/Users/mburger/.postgres/main
      
      (This step technically isn't needed because the environment variable gets set when you activate the environment).
    2. Execute the following commands
      (nexoclom) [sunra m🍔 /~/]$ initdb -D $PGDATA
      (nexoclom) [sunra m🍔 /~/]$ pg_ctl -l $PGDATA/logfile start
      (nexoclom) [sunra m🍔 /~/]$ createdb <username>
      (nexoclom) [sunra m🍔 /~/]$ createdb thesolarsystemmb
      (nexoclom) [sunra m🍔 /~/]$ createdb messengeruvvsdb
      
      • Find <username> with

        (nexoclom) [sunra m🍔 /~/]$ echo $USER

      • This needs to match database in the .nexoclom file

      • This needs to match mesdatabase in the .nexoclom file

  2. Configure the MESSENGER UVVS database if you will be making comparisons to MASCS/UVVS data. Unfortunately, the data products being used here are not publicly available (I don't own this data reduction). UVVS data is available from the Planetary Data System, but it would take some work to get it integrated into the database. We could probably work something out if you want to compare with the data.

    1. Download the MESSENGERdata package if you're authorized (email Matthew Burger)
    2. Put the file in the mesdatapath directory and untar it.
      (nexoclom) [sunra m🍔 /~/]$ tar -xvzf Level1.tar.gz
      
    3. Then run:
      (nexoclom) [sunra m🍔 /~/]$ ipython
      Python 3.8.13 | packaged by conda-forge | (default, Mar 25 2022, 06:06:49)
      Type 'copyright', 'credits' or 'license' for more information
      IPython 8.2.0 -- An enhanced Interactive Python. Type '?' for help.
      
      In [1]: from MESSENGERuvvs import initialize_MESSENGERdata
      
      In [2]: initialize_MESSENGERdata()
      

    This will take a while to run (hours probably).

  3. To install updates, run:

    (nexoclom) [sunra m🍔 /~/]$ pip install --upgrade nexoclom
    (nexoclom) [sunra m🍔 /~/]$ pip install --upgrade MESSENGERuvvs
    

    or to update everything:

    (nexoclom) [sunra m🍔 /~/]$ conda env update -f nexoclom_environment.yml
    
  4. There are some test files at https://github.com/mburger-stsci/nexoclom/tree/master/test_files/. Download them to any working directory. Edit the model_testing.py so that inputfile points to directory with the Ca.isotropic.flat.input. Then do:

    (nexoclom) [sunra m🍔 /~/]$ python model_testing.py
    

    This should produce something that looks like https://www.stsci.edu/~mburger/nexoclom/Ca_Oribt3576_nexoclom.html

Contributing

We love contributions! nexoclom is open source, built on open source, and we'd love to have you hang out in our community.

Imposter syndrome disclaimer: We want your help. No, really.

There may be a little voice inside your head that is telling you that you're not ready to be an open source contributor; that your skills aren't nearly good enough to contribute. What could you possibly offer a project like this one?

We assure you - the little voice in your head is wrong. If you can write code at all, you can contribute code to open source. Contributing to open source projects is a fantastic way to advance one's coding skills. Writing perfect code isn't the measure of a good developer (that would disqualify all of us!); it's trying to create something, making mistakes, and learning from those mistakes. That's how we all improve, and we are happy to help others learn.

Being an open source contributor doesn't just mean writing code, either. You can help out by writing documentation, tests, or even giving feedback about the project (and yes - that includes giving feedback about the contribution process). Some of these contributions may be the most valuable to the project as a whole, because you're coming to the project with fresh eyes, so you can see the errors and assumptions that seasoned contributors have glossed over.

Note: This disclaimer was originally written by Adrienne Lowe for a PyCon talk, and was adapted by nexoclom based on its use in the README file for the MetPy project.

Metadata

Release files for nexoclom 3.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nexoclom 3.7.4
File Size Uploaded Provenance Actions
nexoclom-3.7.4.tar.gz 155.1 kB Without provenance Details for nexoclom-3.7.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nexoclom 3.7.4
File Interpreter ABI Platform Actions
nexoclom-3.7.4-py3-none-any.whl Python 3 none any Details for nexoclom-3.7.4-py3-none-any.whl

Total release size: 334.4 kB

Release files / nexoclom-3.7.4.tar.gz

Download URL nexoclom-3.7.4.tar.gz
Size 155.1 kB
Tags Source
SHA-256 checksum
How to use checksums
b13d0d044e0b691fca560626b1c7fdd474ac8cf4d577497e247fcebc1af4c8e8
BLAKE2b-256 checksum
How to use checksums
4502910711db1306f92b3a474af066f520066cf8e85d72b0872d7260e43a4341
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.10.12 Darwin/21.6.0

Release files / nexoclom-3.7.4-py3-none-any.whl

Download URL nexoclom-3.7.4-py3-none-any.whl
Size 179.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1c2b397e02bba4ef371a75762fa1ae1064e03f188dddc68cbed603fa457516b9
BLAKE2b-256 checksum
How to use checksums
97682ae3cd807017ed5e165b4437682554efbd6ea6d90509644c922c7cf62e47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.5.1 CPython/3.10.12 Darwin/21.6.0

Security for nexoclom 3.7.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.7.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page