nodes: 0, module; 1, function_definition; 2, function_name:get_uniprot_evidence_level; 3, parameters; 4, block; 5, identifier:header; 6, expression_statement; 7, expression_statement; 8, for_statement; 9, return_statement; 10, comment:"""Returns uniprot protein existence evidence level for a fasta header.
      Evidence levels are 1-5, but we return 5 - x since sorting still demands
      that higher is better."""; 11, assignment; 12, identifier:item; 13, identifier:header; 14, block; 15, unary_operator; 16, identifier:header; 17, call; 18, expression_statement; 19, try_statement; 20, integer:1; 21, attribute; 22, argument_list; 23, assignment; 24, block; 25, except_clause; 26, identifier:header; 27, identifier:split; 28, identifier:item; 29, call; 30, if_statement; 31, identifier:IndexError; 32, block; 33, attribute; 34, argument_list; 35, comparison_operator:item[0] == 'PE'; 36, block; 37, continue_statement; 38, identifier:item; 39, identifier:split; 40, string; 41, subscript; 42, string; 43, return_statement; 44, string_content:=; 45, identifier:item; 46, integer:0; 47, string_content:PE; 48, binary_operator:5 - int(item[1]); 49, integer:5; 50, call; 51, identifier:int; 52, argument_list; 53, subscript; 54, identifier:item; 55, integer:1
code: def get_uniprot_evidence_level(header):
      """Returns uniprot protein existence evidence level for a fasta header.
      Evidence levels are 1-5, but we return 5 - x since sorting still demands
      that higher is better."""
      header = header.split()
      for item in header:
          item = item.split('=')
          try:
              if item[0] == 'PE':
                  return 5 - int(item[1])
          except IndexError:
              continue
      return -1