def __init__(self,
                 path='',
                 prefix='Histogram_Hetero',
                 config_file='..\\config.json',
                 use_cal=False,
                 **kwargs):

        Experiment.__init__(self,
                            path=path,
                            prefix=prefix,
                            config_file=config_file,
                            **kwargs)

        self.extra_args = {}

        for key, value in kwargs.items():
            self.extra_args[key] = value
            #print str(key) + ": " + str(value)

        if 'liveplot_enabled' in self.extra_args:
            self.liveplot_enabled = self.extra_args['liveplot_enabled']
        else:
            self.liveplot_enabled = False

        if 'data_prefix' in self.extra_args:
            data_prefix = self.extra_args['data_prefix']
        else:
            data_prefix = prefix

        if 'prep_tek2' in self.extra_args:
            self.prep_tek2 = self.extra_args['prep_tek2']
        else:
            self.prep_tek2 = False

        if 'adc' in self.extra_args:
            self.adc = self.extra_args['adc']
        else:
            self.adc = None

        if 'data_file' in self.extra_args:
            self.data_file = self.extra_args['data_file']
        else:
            self.data_file = None

        if 'flux_freq' in self.extra_args:
            self.flux_freq = self.extra_args['flux_freq']
        else:
            self.flux_freq = None

        self.prefix = prefix
        self.expt_cfg_name = prefix.lower()

        #self.pre_run = pre_run
        #self.post_run = post_run

        self.pulse_type = self.cfg[self.expt_cfg_name]['pulse_type']

        self.pulse_sequence = HistogramSequence(
            self.cfg['awgs'], self.cfg[self.expt_cfg_name],
            self.cfg['readout'], self.cfg['pulse_info'][self.pulse_type],
            self.cfg['buffer'], self.cfg)
        self.pulse_sequence.build_sequence()
        self.pulse_sequence.write_sequence(os.path.join(
            self.path, '../sequences/'),
                                           prefix,
                                           upload=True)

        self.expt_pts = self.pulse_sequence.histo_pts

        self.cfg['alazar']['samplesPerRecord'] = 2**(
            self.cfg['readout']['width'] - 1).bit_length()
        self.cfg['alazar'][
            'recordsPerBuffer'] = self.pulse_sequence.sequence_length * self.cfg[
                self.expt_cfg_name]['hw_repeats']
        # self.cfg['alazar']['recordsPerAcquisition'] = int(
        #     self.pulse_sequence.sequence_length * self.cfg[self.expt_cfg_name]['repeats']* max(self.cfg[self.expt_cfg_name]['averages'], 10))

        self.cfg['alazar']['recordsPerAcquisition'] = int(
            self.pulse_sequence.sequence_length *
            self.cfg[self.expt_cfg_name]['hw_repeats'] *
            max(self.cfg[self.expt_cfg_name]['averages'], 10))

        self.ready_to_go = True
        return