74 lines
3.0 KiB
Python
74 lines
3.0 KiB
Python
"""
|
|
Class to handle Orso header information that changes gradually during the reduction process.
|
|
"""
|
|
|
|
import platform
|
|
import sys
|
|
from datetime import datetime
|
|
|
|
from orsopy import fileio
|
|
|
|
from . import __version__
|
|
|
|
|
|
class Header:
|
|
"""orso compatible output file header content"""
|
|
|
|
def __init__(self):
|
|
self.owner = None
|
|
self.experiment = None
|
|
self.sample = None
|
|
self.measurement_instrument_settings = None
|
|
self.measurement_scheme = None
|
|
self.measurement_data_files = []
|
|
self.measurement_additional_files = []
|
|
|
|
self.reduction = fileio.Reduction(
|
|
software = fileio.Software('eos', version=__version__),
|
|
call = 'placeholder',
|
|
computer = platform.node(),
|
|
timestamp = datetime.now(),
|
|
creator = None,
|
|
corrections = ['histogramming in lambda and alpha_f',
|
|
'gravity'],
|
|
)
|
|
#-------------------------------------------------------------------------------------------------
|
|
def data_source(self):
|
|
return fileio.DataSource(
|
|
self.owner,
|
|
self.experiment,
|
|
self.sample,
|
|
fileio.Measurement(
|
|
instrument_settings = self.measurement_instrument_settings,
|
|
scheme = self.measurement_scheme,
|
|
data_files = self.measurement_data_files,
|
|
additional_files = self.measurement_additional_files,
|
|
),
|
|
)
|
|
#-------------------------------------------------------------------------------------------------
|
|
def columns(self):
|
|
cols = [
|
|
fileio.Column('Qz', '1/angstrom', 'normal momentum transfer'),
|
|
fileio.Column('R', '', 'specular reflectivity'),
|
|
fileio.ErrorColumn(error_of='R', error_type='uncertainty', distribution='gaussian', value_is='sigma'),
|
|
fileio.ErrorColumn(error_of='Qz', error_type='resolution', distribution='gaussian', value_is='sigma'),
|
|
]
|
|
return cols
|
|
#-------------------------------------------------------------------------------------------------
|
|
def orso_header(self, columns=None, extra_columns=[]):
|
|
"""
|
|
Generate ORSO header from a copy of this class' data.
|
|
"""
|
|
ds = fileio.DataSource.from_dict(self.data_source().to_dict())
|
|
red = fileio.Reduction.from_dict(self.reduction.to_dict())
|
|
if columns is None:
|
|
columns = self.columns()
|
|
return fileio.Orso(ds, red, columns+extra_columns)
|
|
#-------------------------------------------------------------------------------------------------
|
|
def create_call_string(self):
|
|
callString = ' '.join(sys.argv)
|
|
if '-Y' not in callString:
|
|
callString += f' -Y {datetime.now().year}'
|
|
return callString
|
|
#-------------------------------------------------------------------------------------------------
|