code: def parse_study_tree_list(fp):
      
      # noinspection PyBroadException
      try:
          sl = read_as_json(fp)
      except:
          sl = []
          with codecs.open(fp, 'rU', encoding='utf-8') as fo:
              for line in fo:
                  frag = line.split('#')[0].strip()
                  if frag:
                      sl.append(frag)
      ret = []
      for element in sl:
          if isinstance(element, dict):
              assert 'study_id' in element
              assert 'tree_id' in element
              ret.append(element)
          else:
              # noinspection PyUnresolvedReferences,PyUnresolvedReferences
              assert element.startswith('pg_') or element.startswith('ot_')
              # noinspection PyUnresolvedReferences
              s = element.split('_')
              assert len(s) > 1
              tree_id = s[-1]
              study_id = '_'.join(s[:-1])
              ret.append({'study_id': study_id, 'tree_id': tree_id})
      return ret
docs: study trees should be in {'study_id', 'tree_id'} objects, but
      as legacy support we also need to support files that have the format:
      pg_315_4246243 # comment