def complete_irradiance(self, times=None, weather=None):
if weather is not None:<EOL><INDENT>self.weather = weather<EOL><DEDENT>if times is not None:<EOL><INDENT>self.times = times<EOL><DEDENT>self.solar_position = self.location.get_solarposition(<EOL>self.times, method=self.solar_position_method)<EOL>icolumns = set(self.weather.columns)<EOL>wrn_txt = ("<STR_LIT>" +<EOL>"<STR_LIT>" +<EOL>"<STR_LIT>" +<EOL>"<STR_LIT>")<EOL>if {'<STR_LIT>', '<STR_LIT>'} <= icolumns and '<STR_LIT>' not in icolumns:<EOL><INDENT>clearsky = self.location.get_clearsky(<EOL>times, solar_position=self.solar_position)<EOL>self.weather.loc[:, '<STR_LIT>'] = pvlib.irradiance.dni(<EOL>self.weather.loc[:, '<STR_LIT>'], self.weather.loc[:, '<STR_LIT>'],<EOL>self.solar_position.zenith,<EOL>clearsky_dni=clearsky['<STR_LIT>'],<EOL>clearsky_tolerance=<NUM_LIT>)<EOL><DEDENT>elif {'<STR_LIT>', '<STR_LIT>'} <= icolumns and '<STR_LIT>' not in icolumns:<EOL><INDENT>warnings.warn(wrn_txt, UserWarning)<EOL>self.weather.loc[:, '<STR_LIT>'] = (<EOL>self.weather.dni * tools.cosd(self.solar_position.zenith) +<EOL>self.weather.dhi)<EOL><DEDENT>elif {'<STR_LIT>', '<STR_LIT>'} <= icolumns and '<STR_LIT>' not in icolumns:<EOL><INDENT>warnings.warn(wrn_txt, UserWarning)<EOL>self.weather.loc[:, '<STR_LIT>'] = (<EOL>self.weather.ghi - self.weather.dni *<EOL>tools.cosd(self.solar_position.zenith))<EOL><DEDENT>return self<EOL>
Determine the missing irradiation columns. Only two of the
following data columns (dni, ghi, dhi) are needed to calculate
the missing data.

This function is not safe at the moment. Results can be too high
or negative. Please contribute and help to improve this function
on https://github.com/pvlib/pvlib-python

Parameters
----------
times : None or DatetimeIndex, default None
    Times at which to evaluate the model. Can be None if
    attribute `times` is already set.
weather : None or pandas.DataFrame, default None
    Table with at least two columns containing one of the
    following data sets: dni, dhi, ghi. Can be None if attribute
    `weather` is already set.

Returns
-------
self

Assigns attributes: times, weather

Examples
--------
This example does not work until the parameters `my_system`,
`my_location`, `my_datetime` and `my_weather` are not defined
properly but shows the basic idea how this method can be used.

>>> from pvlib.modelchain import ModelChain

>>> # my_weather containing 'dhi' and 'ghi'.
>>> mc = ModelChain(my_system, my_location)  # doctest: +SKIP
>>> mc.complete_irradiance(my_datetime, my_weather)  # doctest: +SKIP
>>> mc.run_model()  # doctest: +SKIP

>>> # my_weather containing 'dhi', 'ghi' and 'dni'.
>>> mc = ModelChain(my_system, my_location)  # doctest: +SKIP
>>> mc.run_model(my_datetime, my_weather)  # doctest: +SKIP