def decay_indexpointer(self):
        '''
        This private method provides decay indexpointers which allow to
        instantaneously decay an abundance vector. These are attributes
        are.

		Parameters
		=================

        decay_idp : list
            points in the iso_to_plot (i.e. the undecayed abundance
            vector index space) to the decay target.
        idp_to_stables_in_isostoplot : list
            points to the stable isotopes in the undecayed abundance
            vector index space.

        Notes
        -----
        For an application example see ppn.py-abu_vector-_getcycle.

        '''
        a_iso_to_plot   =self.a_iso_to_plot
        isotope_to_plot =self.isotope_to_plot
        z_iso_to_plot   =self.z_iso_to_plot
        el_iso_to_plot  =self.el_iso_to_plot
        abunds          =self.abunds
        isom            =self.isom

        z_db, a_db, el_db, stable_a_db,logic_db,charge_from_element_name=\
            self._read_isotopedatabase()
        # find out which species  beta+ and which beta- decay:
        beta=np.sign(stable_a_db-a_db) # if a species is unstable and if beta < 0 => beta- decay
                                    # else beta > 0 => beta+ decay

        # now we need an index array on the scale of the abundance
        # distribution to be plotted that points to itself for stable species,
        # and to the stable element to which it decays in case of an unstable
        # species
        decay_index_pointer=np.zeros(len(isotope_to_plot), dtype='int')-1
        idp_to_stables_in_isostoplot=[]
        for i in range(len(isotope_to_plot)):
            element_name=isotope_to_plot[i].split('-')[0]
            try:
                stable_a=stable_a_db[np.where(el_db==element_name)][0] # 4th column for that element in isotopedatabase.txt
            except IndexError:
                print("Can't find element "+element_name+" in isotopedatabase.txt")
            if a_iso_to_plot[i] <= 209 and stable_a <=209:  # Bi209 is last stable element
                stable_mass_numbers=self.stable_el[self.stable_names.index(element_name)][1:]
                iso_db_index_range_el=np.where(el_db==element_name)
                beta_for_this_species=\
                    int(beta[iso_db_index_range_el][np.where(a_db[iso_db_index_range_el]==a_iso_to_plot[i])])
                if beta_for_this_species == 0:  # if there are no stable species for an element (Tc,Pm) the cutoff specifies
                    beta_for_this_species = -1  # the lowest mass beta- isotope
                if a_iso_to_plot[i] in stable_mass_numbers:
                    # print isotope_to_plot[i]+" is stable"
                    decay_index_pointer[i]=i
                    idp_to_stables_in_isostoplot.append(i)
                elif  a_iso_to_plot[i]==8: # Be8 -> He4
                    decay_index_pointer[i]=isotope_to_plot.index('He-4')
                else: # beta decay
                    found_decay_target=False
                    i_search=-1*beta_for_this_species
                    while not found_decay_target:
                        try:
                            try_target_el=self.stable_names[charge_from_element_name[element_name]+i_search]
                        except TypeError:
                            print("Maybe information about species "+isotope_to_plot[i]+" is not available in isotopedatabase.txt")
                            decay_index_pointer[i]=-1
                            break
                        # print try_target_el
                        try:
                            stable_mass_numbers=self.stable_el[self.stable_names.index(try_target_el)][1:]
                        except ValueError:
                            print("Can not find decay target for "+isotope_to_plot[i])
                        if a_iso_to_plot[i] in stable_mass_numbers:
                            ind_range=np.where(np.array(el_iso_to_plot)==try_target_el)[0]
                            if a_iso_to_plot[i] in np.array(a_iso_to_plot)[ind_range]:
                                this_ind=\
                                    ind_range[np.where(np.array(a_iso_to_plot)[ind_range]==a_iso_to_plot[i])[0]]
                                # print isotope_to_plot[i]+" is unstable and decays to "+isotope_to_plot[this_ind]
                                decay_index_pointer[i]=this_ind
                            else:
                                print("It seems unstable species "+isotope_to_plot[i]+" wants to decay to " \
                                    +try_target_el+"-"+str(a_iso_to_plot[i])+", however this species is not in this run." \
                                    +" This points to an inconsistency in the network build. Here we will ignore the abundance of " \
                                    +isotope_to_plot[i]+'.')
                                decay_index_pointer[i]=-1
                            found_decay_target=True
                        else:
                            i_search += -1*beta_for_this_species
        if self.debug:
            print("Decay rules:")
            for i in range(len(isotope_to_plot)):
                if decay_index_pointer[i]>= 0:
                    print(isotope_to_plot[i]+" -> "+isotope_to_plot[decay_index_pointer[i]])
        ind_tmp=idp_to_stables_in_isostoplot
        #ind_tmp=utils.strictly_monotonic(decay_index_pointer)  # this would do the same, but the method above is more straight forward

        self.decay_idp=decay_index_pointer
        self.idp_to_stables_in_isostoplot=ind_tmp