from tardis.plasma.properties.base import (Input, ArrayInput, DataFrameInput)

__all__ = ['TRadiative', 'DilutionFactor', 'AtomicData', 'Abundance', 'Density',
           'TimeExplosion', 'JBlues', 'LinkTRadTElectron', 'HeliumTreatment']

class TRadiative(ArrayInput):
    """
    Attributes
    ----------
    t_rad : Numpy Array, dtype float
    """
    outputs = ('t_rad',)
    latex_name = ('T_{\\textrm{rad}}',)

class DilutionFactor(ArrayInput):
    """
    Attributes
    ----------
    w : Numpy Array, dtype float between 0 and 1
        Factor used in nebular ionisation / dilute excitation calculations
        to account for the dilution of the radiation field.
    """
    outputs = ('w',)
    latex_name = ('W',)

class AtomicData(Input):
    """
    Attributes
    ----------
    atomic_data : Object
    """
    outputs = ('atomic_data',)

    def to_hdf(self, path_or_buf, path):
        """
        Will not store anything to hdf as derivatives (lines, levels) are stored

        Returns
        -------
            : None

        """
        pass

class Abundance(Input):
    """
    Attributes
    ----------
    abundance : Numpy array, dtype float
                Fractional abundance of elements
    """
    outputs = ('abundance',)

class Density(ArrayInput):
    """
    Attributes
    ----------
    density : Numpy array, dtype float
              Total density values
    """
    outputs = ('density',)
    latex_name = ('\\rho',)

class TimeExplosion(Input):
    """
    Attributes
    ----------s
    time_explosion : Float
                     Time since explosion in seconds
    """
    outputs = ('time_explosion',)
    latex_name = ('t_{\\textrm{exp}}',)

class JBlues(DataFrameInput):
    """
    Attributes
    ----------
    j_blues : Pandas DataFrame
              Mean intensity in the blue wing of each line.
    """
    outputs = ('j_blues',)
    latex_name = ('J_{lu}^{b}',)

class LinkTRadTElectron(Input):
    """
    Attributes
    ----------
    link_t_rad_t_electron : Float
                            Value used for estimate of electron temperature.
                            Default is 0.9.
    """
    outputs = ('link_t_rad_t_electron',)
    latex_name = ('T_{\\textrm{electron}}/T_{\\textrm{rad}}',)

class HeliumTreatment(Input):
    outputs = ('helium_treatment',)

@@ -190,16 +190,34 @@
 JBlues',
+ 'JBlueEstimator',
  'LinkTR
@@ -229,16 +229,27 @@
 ectron',
+%0A          
  'Helium
@@ -1938,24 +1938,230 @@
 lu%7D%5E%7Bb%7D',)%0A%0A
+%0Aclass JBlueEstimator(ArrayInput):%0A    %22%22%22%0A    Attributes%0A    ----------%0A    j_blue_estimators : Numpy array%0A    %22%22%22%0A    outputs = ('j_blue_estimators',)%0A    latex_name = ('J_%7B%5C%5Ctextrm%7Bblue-estimator%7D%7D',)%0A%0A
 class LinkTR

Add a JBlueEstimator input plasma property.