Skip to main content

An extension to ceres.

Project description

Ceres-plusplus

This package was written as an extension to the CERES reduction pipeline (https://github.com/rabrahm/ceres) in the sense that it takes spectra reduced by it and extracts some activity indicators (CCF FWHM, BIS, CONTRAST) and calculates others (S index, Ha, HeI, NaID1D2)

It's been tested to work on FEROS and FIDEOS spectra. Feel free to use it with other instruments and let me know if it works :)

New in Version 1.3.0

Version 1.3.0 introduces significant improvements for integration with microservice architectures while maintaining 100% backward compatibility.

Single-File Processing API

Process individual FITS files with granular logging and structured results:

import cerespp

result = cerespp.process_single_file(
    'spectrum.fits',
    output_dir='results/',
    mask='G2',
    save=True  # Save 1D merged spectrum
)

print(f"S-index: {result.s_index:.3f} ± {result.s_index_error:.3f}")
print(f"1D spectrum saved to: {result.spectrum_1d_path}")

Progress Callbacks

Monitor processing steps in real-time:

def my_callback(step, **kwargs):
    print(f"Current step: {step}")

result = cerespp.process_single_file(
    'spectrum.fits',
    output_dir='results/',
    progress_callback=my_callback
)

Structured Results

Results are returned as structured dataclasses with convenient methods:

# Access individual fields
print(f"BJD: {result.bjd}")
print(f"RV: {result.rv} km/s")

# Convert to JSON-serializable dictionary
data = result.to_dict()

Enhanced CLI

New command-line interface supports both single-file and bulk processing:

# New: Process single file with verbose logging
cerespp --file spectrum.fits --output results/ --save-1d --verbose

# Legacy: Bulk processing (still fully supported)
cerespp --files *.fits --output results.dat --mask G2

Backward Compatibility

All existing code continues to work exactly as before:

# This still works identically to previous versions
activities, header = cerespp.get_activities(
    files=['s1.fits', 's2.fits'],
    out='results.dat',
    mask='G2'
)

See the API documentation for complete details and the CHANGELOG for all changes.

Installation

You can try running pip install cerespp

If that fails you can clone the repository with

$ git clone https://github.com/jvines/Ceres-plusplus
$ cd Ceres-plusplus
$ python setup.py install

Dependencies

Ceres-plusplus depends on the following packages:

Usage

Usage is simple, start by importing cerespp, optionally you can use glob to fetch the files. After importing (and having ready your files) the get_activities function, grab a coffee, and wait for your indicators!.

Below there's an example script

import cerespp
import glob

files = glob.glob('path/to/fits/files/*.fits')
act, header = cerespp.get_activities(files, 'output/path/filename.dat')

Here files is a list with the fits files to process, the output act and header are the activities and the header of the file (i.e. the names of the columns). cerespp automatically saves the output in a file in the desired location, but if you need the output on the session you're working in (in a jupyter notebook, for example), that's what act and header are for ;)

Plotting

cerespp offers some plotting tools to visually check things! The most important ones are plots showing the activity lines and their surroundings. Creating these is easy:

import cerespp
import glob

# These are the available lines. You can choose which ones to plot here 
lines = ['CaHK', 'Ha', 'HeI', 'NaID1D2'] 

files = glob.glob('path/to/fits/files/*.fits')

# This function creates the plots from a fits file directly
cerespp.line_plot_from_file(files[0], lines, 'output/path/', 'starname')

There's a notebook exemplifying the usage in the examples folder!

How it works

cerespp first calculates a radial velocity to correct the spectrum to rest-frame, after this has been done it extracts the available data from the fits headers (CCF FWHM, BIS, CONTRAST) and finally it merges the echelle orders and computes the activity indicators!

The radial velocity is computed using the standard cross-correlation function method, and thus you can specify which mask to use with the mask keyword in get_activities. Available masks are G2, K0, K5, and M2.

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

cerespp-1.3.4.tar.gz (329.4 kB view details)

Uploaded Source

Built Distribution

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

cerespp-1.3.4-py3-none-any.whl (330.1 kB view details)

Uploaded Python 3

File details

Details for the file cerespp-1.3.4.tar.gz.

File metadata

  • Download URL: cerespp-1.3.4.tar.gz
  • Upload date:
  • Size: 329.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for cerespp-1.3.4.tar.gz
Algorithm Hash digest
SHA256 3c884c66f8c4b73b74bfa69769e65cee9eaa2f9e67480d76a9124d842bd7f4a6
MD5 cd33aa4514879598a18c191aed712a41
BLAKE2b-256 759dc66aee35bc7b45401ce7a29ccbba6d5d7dea93f5f2de6bdad38008f1394a

See more details on using hashes here.

File details

Details for the file cerespp-1.3.4-py3-none-any.whl.

File metadata

  • Download URL: cerespp-1.3.4-py3-none-any.whl
  • Upload date:
  • Size: 330.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for cerespp-1.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1cfa2ad90569ef5ff36fb5dfde8fa559641b71a63f448df25fb3bfa657cffafd
MD5 0c50753cb7168f2b7abe66e5c21b822a
BLAKE2b-256 8ca47dfdb66d00c4714fbce6825634ab569b3ac2486261add5d552a42e7864b0

See more details on using hashes here.

Supported by

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