def _derive_charge(self, config):
if self._roast.get('<STR_LIT>'):<EOL><INDENT>return None<EOL><DEDENT>self._window.append(config)<EOL>time, temp = list(), list()<EOL>for x in list(self._window):<EOL><INDENT>time.append(x['<STR_LIT:time>'])<EOL>temp.append(x['<STR_LIT>'])<EOL><DEDENT>slope, intercept, r_value, p_value, std_err = linregress(time, temp)<EOL>if slope < <NUM_LIT:0>:<EOL><INDENT>self._roast['<STR_LIT>'] = self._roast['<STR_LIT>']<EOL>self.add_roast_event({'<STR_LIT>': '<STR_LIT>'})<EOL>return config<EOL><DEDENT>return None<EOL>
Use a temperature window to identify the roast charge.

        The charge will manifest as a sudden downward trend on the temperature.
        Once found, we save it and avoid overwriting. The charge is needed in
        order to derive the turning point.

        :param config: Current snapshot of the configuration
        :type config: dict
        :returns: None