code: def _extractFastaHeader(fastaHeader, parser=None, forceId=False):
      
      if parser is None:
          try:
              headerInfo = pyteomics.fasta.parse(fastaHeader)
          except pyteomics.auxiliary.PyteomicsError as pyteomicsError:
              #If forceId is set True, it uses the whole header as an id
              if forceId:
                  headerInfo = {'id': fastaHeader}
              else:
                  raise pyteomicsError
      else:
          headerInfo = parser(fastaHeader)
      return headerInfo
docs: Parses a fasta header and returns extracted information in a dictionary.
  
      Unless a custom parser is specified, a ``Pyteomics`` function is used, which
      provides parsers for the formats of UniProtKB, UniRef, UniParc and  UniMES
      (UniProt Metagenomic and Environmental Sequences), described at
      `www.uniprot.org <http://www.uniprot.org/help/fasta-headers>_`.
  
      :param fastaHeader: str, protein entry header from a fasta file
      :param parser: is a function that takes a fastaHeader string and returns a
          dictionary, containing at least the key "id". If None the parser
          function from pyteomics ``pyteomics.fasta.parse()`` is used.
      :param forceId: bool, if True and no id can be extracted from the fasta
          header the whole header sequence is used as a protein id instead of
          raising an exception.
  
      :returns: dict, describing a fasta header