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