docs: def filter_single_grain(self):
          '''
          This subroutine is to filter out single grains. It is kind of
          useless if you have tons of data still in the list. To work on
          there, you have other filters (filter_desc and filter_data)
          available!  This filter gives an index to every grain, plots
          the most important information, and then asks you to pick a
          filter.  No input necessary, input is given during the routine
  
          '''
  
          my_index = 0
          my_grains = [['Index','Label','Type','Group','Meteorite','Mineralogy','C12/C13','d(Si29/Si30)','d(Si30/Si29)']]
  
          # add the data to this grain list
          for it in range(len(self.data)):
              my_grains.append([my_index,self.desc[it][self.descdict['Grain Label']], self.desc[it][self.descdict['Type']], self.desc[it][self.descdict['Group']], self.desc[it][self.descdict['Meteorite']], self.desc[it][self.descdict['Mineralogy']], self.data[it][self.datadict['12c/13c']], self.data[it][self.datadict['d(29si/28si)']], self.data[it][self.datadict['d(30si/28si)']]])
              my_index += 1
  
          for prt_line in my_grains:
              print(prt_line)
  
          # now write the selector for the index of the grains to select which one should be
          # available and which ones should be dumped
          usr_input = ''
          usr_input = input('Select the grains by index that you want to use. Please separate the indeces by a comma, e.g., 1 or 0,2,3,4\n')
  
          # process user index
          if usr_input == '':
              print('No data selected to filter.')
              return None
          elif len(usr_input) == 1:
              usr_index = [usr_input]
          else:
              usr_index = usr_input.split(',')
          for it in range(len(usr_index)):
              usr_index[it] = int(usr_index[it])
  
          # filter
          desc_tmp = np.zeros((len(usr_index),len(self.header_desc)),dtype='|S1024')
          data_tmp = np.zeros((len(usr_index),len(self.header_data)))
          style_tmp= np.zeros((len(usr_index),len(self.header_style)),dtype='|S1024')
          for i in range(len(usr_index)):
              for j in range(len(self.header_desc)):
                  desc_tmp[i][j] = self.desc[usr_index[i]][j]
              for k in range(len(self.header_data)):
                  data_tmp[i][k] = self.data[usr_index[i]][k]
              for l in range(len(self.header_style)):
                  style_tmp[i][l]= self.style[usr_index[i]][l]
          self.desc = desc_tmp
          self.data = data_tmp
          self.style= style_tmp