Skip to main content

Phantom config

Phantom config files: parse, convert, modify, and generate.

phantomconfig can read Phantom .in and .setup files. (They have the same format.) You can, for example:

  • modify config values,
  • add new variables,
  • write the config as a JSON file,
  • generate a config file from a dictionary.

Usage

Basic usage

Import phantomconfig as pc.

>>> import phantomconfig as pc

To read in a Phantom config file

>>> input_file = pc.read_config('prefix.in')

Print a summary

>>> input_file.summary()

The variables, with their values, comment string, and the block they are a member of, are stored in a dictionary accessed by the .config method.

>>> dtmax = input_file.config['dtmax']

The keys of this dictionary correspond to the variable name, and values are a ConfigVariable named tuple with the variable name, value, comment, and block.

>>> dtmax.name
>>> dtmax.value
>>> dtmax.comment
>>> dtmax.block

If you like, you can write the Phantom config as a JSON file, and you can read the JSON file.

>>> input_file.write_json('prefix-in.json')
>>> json_file = pc.read_json('prefix-in.json')

Check that the configs are equal

>>> input_file.config == json_file.config

You can add a new variable, remove a variable, and change the value of a variable.

# Add new variable
>>> input_file.add_variable(
... 'new_var',
... 12345678,
... comment='Sets thing',
... block='options controlling things',
... )

# Remove a variable
>>> input_file.remove_variable('dtmax')

# Change the value of a variable
>>> input_file.change_value('dumpfile', 'new_dumpfile_name')

Examples

Generate a config from a dictionary

You can create a Phantom .setup file from a Python dictionary. First create the dictionary

>>> setup = {
... 'cs': [cs, 'sound speed', 'gas properties'],
... 'npart': [npart, 'number of particles in x direction', 'gas properties'],
... 'rhozero': [rhozero, 'initial density', 'gas properties'],
... 'ilattice': [ilattice, 'lattice type', 'gas properties'],
... }

Then you can read the dictionary with phantomconfig, and write to a Phantom .setup file

>>> setup_config = pc.read_dict(setup)
>>> setup_config.header = ['input file for some particular setup routine']
>>> setup_config.write_phantom('filename.setup')

This writes a file like

# input file for some particular setup routine

# gas properties
                  cs =        1.000   ! sound speed
               npart =         9999   ! number of particles in x direction
             rhozero =        0.100   ! initial density
            ilattice =            2   ! lattice type

Writing multiple configs

Say you want to write multiple configs, each with a different parameter value. For example, you have a template .in file and you want to vary the alpha parameter. The following

  1. reads the template file
  2. loops over a list of alpha values, writing a new .in file for each value in the list
alphas = [0.1, 0.2, 0.3]
infile = pc.read_config('template.in')

for alpha in alphas:
    infile.change_value('alpha', alpha)
    infile.write_phantom(f'alpha={alpha}.in')

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

phantomconfig-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

phantomconfig-0.1.0-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file phantomconfig-0.1.0.tar.gz.

File metadata

  • Download URL: phantomconfig-0.1.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for phantomconfig-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8b9cd2976845fea7bccfccf9549b3284a54b0454f3beb3ebabc8fc4afc59abbf
MD5 ad991a4980923c93e447aa5d40b2eeba
BLAKE2b-256 ca127ba461786634908bf7a3a352c4c8e9804568bf96df784119d097e0a6eb1f

See more details on using hashes here.

File details

Details for the file phantomconfig-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: phantomconfig-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for phantomconfig-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fea906388fcdd438d72ddce4fd0b10d17b8650993600b1dba42aaf874f5f2341
MD5 726bc29a4a116d012706c46113f7cc5d
BLAKE2b-256 0bea2f2743be15c01eb8a6699d921ca1050149c62fd78e21ccdc4bfbbc502043

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.4

2 files

0.3.3

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page