Phantom config files: parse, convert, modify, and generate.
Project description
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
- reads the template file
- 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')
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
8b9cd2976845fea7bccfccf9549b3284a54b0454f3beb3ebabc8fc4afc59abbf
|
|
MD5 |
ad991a4980923c93e447aa5d40b2eeba
|
|
BLAKE2b-256 |
ca127ba461786634908bf7a3a352c4c8e9804568bf96df784119d097e0a6eb1f
|
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
Algorithm | Hash digest | |
---|---|---|
SHA256 |
fea906388fcdd438d72ddce4fd0b10d17b8650993600b1dba42aaf874f5f2341
|
|
MD5 |
726bc29a4a116d012706c46113f7cc5d
|
|
BLAKE2b-256 |
0bea2f2743be15c01eb8a6699d921ca1050149c62fd78e21ccdc4bfbbc502043
|