code: def parse(gctx_file_path, convert_neg_666=True, rid=None, cid=None,
            ridx=None, cidx=None, row_meta_only=False, col_meta_only=False, make_multiindex=False):
      full_path = os.path.expanduser(gctx_file_path)
      if not os.path.exists(full_path):
          err_msg = "The given path to the gctx file cannot be found. full_path: {}"
          logger.error(err_msg.format(full_path))
          raise Exception(err_msg.format(full_path))
      logger.info("Reading GCTX: {}".format(full_path))
      gctx_file = h5py.File(full_path, "r")
      if row_meta_only:
          row_dset = gctx_file[row_meta_group_node]
          row_meta = parse_metadata_df("row", row_dset, convert_neg_666)
          (sorted_ridx, sorted_cidx) = check_and_order_id_inputs(rid, ridx, cid, cidx, row_meta, None)
          gctx_file.close()
          row_meta = row_meta.iloc[sorted_ridx]
          return row_meta
      elif col_meta_only:
          col_dset = gctx_file[col_meta_group_node]
          col_meta = parse_metadata_df("col", col_dset, convert_neg_666)
          (sorted_ridx, sorted_cidx) = check_and_order_id_inputs(rid, ridx, cid, cidx, None, col_meta)
          gctx_file.close()
          col_meta = col_meta.iloc[sorted_cidx]
          return col_meta
      else:
          row_dset = gctx_file[row_meta_group_node]
          row_meta = parse_metadata_df("row", row_dset, convert_neg_666)
          col_dset = gctx_file[col_meta_group_node]
          col_meta = parse_metadata_df("col", col_dset, convert_neg_666)
          (sorted_ridx, sorted_cidx) = check_and_order_id_inputs(rid, ridx, cid, cidx, row_meta, col_meta)
          data_dset = gctx_file[data_node]
          data_df = parse_data_df(data_dset, sorted_ridx, sorted_cidx, row_meta, col_meta)
          row_meta = row_meta.iloc[sorted_ridx]
          col_meta = col_meta.iloc[sorted_cidx]
          my_version = gctx_file.attrs[version_node]
          if type(my_version) == np.ndarray:
              my_version = my_version[0]
          gctx_file.close()
          my_gctoo = GCToo.GCToo(data_df=data_df, row_metadata_df=row_meta, col_metadata_df=col_meta,
                                 src=full_path, version=my_version, make_multiindex=make_multiindex)
          return my_gctoo