docs: def search(self, file_name, imported_data=None):
          """ Run models on different data configurations.
  
          Note
          ----
          The input json file should include ALL parameters.
  
          Parameters
          ----------
          file_name       : str
              Optional json file to read parameters.
          imported_data   : pd.DataFrame()
              Pandas Dataframe containing data.
  
          """
  
          resample_freq=['15T', 'h', 'd']
          time_freq = {
              'year'  :   [True,  False,  False,  False,  False],
              'month' :   [False, True,   False,  False,  False],
              'week'  :   [False, False,  True,   False,  False],
              'tod'   :   [False, False,  False,  True,   False],
              'dow'   :   [False, False,  False,  False,  True],
          }
          
          optimal_score = float('-inf')
          optimal_model = None
  
          # CSV Files
          if not imported_data:
              with open(file_name) as f:
                  input_json = json.load(f)
                  import_json = input_json['Import']
                  imported_data = self.import_data(file_name=import_json['File Name'], folder_name=import_json['Folder Name'],
                                                  head_row=import_json['Head Row'], index_col=import_json['Index Col'],
                                                  convert_col=import_json['Convert Col'], concat_files=import_json['Concat Files'],
                                                  save_file=import_json['Save File'])
  
          with open(file_name) as f:
              input_json = json.load(f)
  
              for x in resample_freq: # Resample data interval
                  input_json['Clean']['Frequency'] = x
  
                  for i in range(len(time_freq.items())): # Add time features
                      input_json['Preprocess']['Year']        = time_freq['year'][i]
                      input_json['Preprocess']['Month']       = time_freq['month'][i]
                      input_json['Preprocess']['Week']        = time_freq['week'][i]
                      input_json['Preprocess']['Time of Day'] = time_freq['tod'][i]
                      input_json['Preprocess']['Day of Week'] = time_freq['dow'][i]
  
                      # Putting comment in json file to indicate which parameters have been changed
                      time_feature = None
                      for key in time_freq:
                          if time_freq[key][i]:
                              time_feature = key
                      self.result['Comment'] = 'Freq: ' + x + ', ' + 'Time Feature: ' + time_feature
  
                      # Read parameters in input_json
                      self.read_json(file_name=None, input_json=input_json, imported_data=imported_data)
                      
                      # Keep track of highest adj_r2 score
                      if self.result['Model']['Optimal Model\'s Metrics']['adj_r2'] > optimal_score:
                          optimal_score = self.result['Model']['Optimal Model\'s Metrics']['adj_r2']
                          optimal_model_file_name = self.results_folder_name + '/results-' + str(self.get_global_count()) + '.json'
  
                      # Wrapper.global_count += 1
  
          print('Most optimal model: ', optimal_model_file_name)
          freq = self.result['Comment'].split(' ')[1][:-1]
          time_feat = self.result['Comment'].split(' ')[-1]
          print('Freq: ', freq, 'Time Feature: ', time_feat)