#!/usr/bin/env python
"""
Defines the Model class
Copyright (C) CSIRO 2017
"""
import numpy as np
[docs]class Model(object):
[docs] angularScales = {'radian': 1.0, 'degree': np.degrees(1.0)}
def __init__(self, params):
self.params = params
self.angUnit = 'radian'
self.angScale = Model.angularScales[self.angUnit]
self.base = 0.0
self.amplitude = 0.0
self.centre = np.array([0.0, 0.0])
self.axes = np.array([0.0, 0.0])
self.angle = 0.0
self.major_angle = 0.0
self.semimajor = 0.0
self.semiminor = 0.0
[docs] def set_ang_unit(self, unit):
if unit in Model.angularScales:
self.angUnit = unit
self.angScale = Model.angularScales[unit]
[docs] def get_params(self):
return self.params
[docs] def get_centre(self):
return self.centre * self.angScale
[docs] def get_axes(self):
return np.array([self.semimajor, self.semiminor]) * self.angScale
[docs] def get_major_angle(self):
return self.major_angle * self.angScale
[docs] def get_position_angle(self):
""" Return the angle of the ellipse in the astronomical
convention measured from North in ccw direction.
"""
return ((self.major_angle+pi/2.) % pi) * self.angScale
[docs] def get_eccentricity(self):
return self.eccentricity
[docs] def get_amplitude(self):
return self.amplitude
[docs] def get_base(self):
return self.base
[docs] def get_residual_rms(self):
return 0.0
[docs] def is_good_fit(self):
return True
[docs] def evaluate(self, arg):
return 0.0, 0.0
[docs] def get_locus50(self, arg):
return 0.0