Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

A header generator and FITS file creator for DKIST data

codecov

This package is designed to generate sets of FITS files which represent DKIST level 0 and level 1 data. These generated data should not be considered as a promise of what will be delivered when real data is obtained, these products are still a work in progress.

Using

Generating Pesudo Random Data

The simplest way to generate data is to use the dkist_data_simulator.spec122.Spec122Dataset or dkist_data_simulator.spec214.Spec214Dataset classes.

To generate a header:

>>> from dkist_data_simulator.spec122 import Spec122Dataset
>>> ds = Spec122Dataset(dataset_shape=(1, 512, 512), array_shape=(1, 512, 512), time_delta=10)
>>> ds.header()

A complete list of headers for all frames in the dataset can be generated with the generate_headers method.

It is also possible to iterate over a dataset, this changes the .index property.

This can be used to generate a sequence of headers one at a time:

>>> header_generator = (d.header() for d in ds)

It can also be used to generate files in memory:

>>> import io
>>> file_generator = (d.file(io.BytesIO()) for d in ds)

Customising the Generated Data

To customise the data being generated, subclass a dataset. To add new headers, either the add_constant_key method, or the add_generator_function methods can be used in the constructor. Also a shorthand way of having a function generate key values is to use the dkist_data_simulator.dataset.key_function decorator.

>>> from dkist_data_simulator.dataset import key_function
>>> from dkist_data_simulator.spec122 import Spec122Dataset
>>> class ExampleDataset(Spec122Dataset):
...     def __init__(self, *args, **kwargs):
...         super().__init__(*args, **kwargs)
...         # Add a header key with a given, fixed value over all headers
...         self.add_constant_key("INSTRUME", "Example")
...         # Add a header key with a given, single random value over all headers
...         self.add_constant_key("EXPER_ID")
...
...     @key_function("FRAMEVOL")
...     def framevol(self, key):
...         return 10

To remove a key from a generated header (for instance to generate invalid data), overload the header() method and remove keys before returning:

>>> class InvalidDataset(Spec122Dataset):
...     def header(self, *args, **kwargs):
...         header = super().header(*args, **kwargs)
...         header.pop("NAXIS")
...         return header

License

This project is Copyright (c) AURA / NSO and licensed under the terms of the BSD 3-Clause license. This package is based upon the Openastronomy packaging guide which is licensed under the BSD 3-clause licence. See the licenses folder for more information.

Contributing

We love contributions! dkist-data-simulator 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 dkist-data-simulator based on its use in the README file for the MetPy project.

Metadata

Release files for dkist-data-simulator 5.9.0rc3

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

Source distribution (sdist)

Source distribution for dkist-data-simulator 5.9.0rc3
File Size Uploaded
dkist_data_simulator-5.9.0rc3.tar.gz 58.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dkist-data-simulator 5.9.0rc3
File Interpreter ABI Platform
dkist_data_simulator-5.9.0rc3-py3-none-any.whl Python 3 none any Details

Total release size: 123.5 kB

Release files / dkist_data_simulator-5.9.0rc3.tar.gz

Download URL dkist_data_simulator-5.9.0rc3.tar.gz
Size 58.9 kB
Tags Source
SHA-256 checksum
How to use checksums
99af9d71ce3fe8ce4f9b07122371181d5163e2aa8855276589ace12175f34605
BLAKE2b-256 checksum
How to use checksums
d59aa734266f5c323655309c9cb935a47171d61b75a81a61aa6f72472d0f6844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / dkist_data_simulator-5.9.0rc3-py3-none-any.whl

Download URL dkist_data_simulator-5.9.0rc3-py3-none-any.whl
Size 64.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e2e1b721ff9ff6c0e5d905b9e2c7900cdedbb49c29d48c6f861d8f21017fb00f
BLAKE2b-256 checksum
How to use checksums
0ca7f8a0f6a0653d81ed650d2804a7c5ed61671270915c034d06c68bab74adce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

5.9.0

2 release files

This release

5.9.0rc3 This release

2 release files

5.8.0

2 release files

5.7.0

2 release files

5.6.0

2 release files

5.5.0

2 release files

5.4.0

2 release files

5.2.11

2 release files

5.2.10

2 release files

5.2.9

2 release files

5.2.8

2 release files

5.2.7

2 release files

5.2.6

2 release files

5.2.5

2 release files

5.2.4

2 release files

5.2.3

2 release files

5.2.2

2 release files

5.2.1

2 release files

5.2.0

2 release files

5.1.1

2 release files

5.1.0

2 release files

5.0.0

2 release files

4.1.0

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.2.0

2 release files

3.1.6

2 release files

3.1.5

2 release files

3.1.4

2 release files

3.1.3

2 release files

3.1.2

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.6.3

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

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