docs: def parse_cctop_full(infile):
      """Parse a CCTOP XML results file and return a list of the consensus TM domains in the format::
  
              [(1, inside_outside_or_tm),
               (2, inside_outside_or_tm),
               ...]
  
      Where the first value of a tuple is the sequence residue number, and the second is the predicted location with the
      values 'I' (inside), 'O' (outside), or 'M' (membrane).
  
      Args:
          infile (str): Path to CCTOP XML file
  
      Returns:
          list: List of tuples in the format described above
  
      """
      parser = etree.XMLParser(ns_clean=True)
      with open(infile, 'r') as f:
          tree = etree.fromstring(f.read(), parser)
  
      all_info = []
  
      if tree.find('Topology') is not None:
          for r in tree.find('Topology').findall('Region'):
              region_start = int(r.attrib['from'])
              region_end = int(r.attrib['to'])
              region = r.attrib['loc']
              for i in range(region_start, region_end + 1):
                  all_info.append((i, region))
  
      return all_info