docs: def load_transcript_fpkm_dict_from_gtf(
          gtf_path,
          transcript_id_column_name="reference_id",
          fpkm_column_name="FPKM",
          feature_column_name="feature"):
      """
      Load a GTF file generated by StringTie which contains transcript-level
      quantification of abundance. Returns a dictionary mapping Ensembl
      IDs of transcripts to FPKM values.
      """
      df = gtfparse.read_gtf(
          gtf_path,
          column_converters={fpkm_column_name: float})
      transcript_ids = _get_gtf_column(transcript_id_column_name, gtf_path, df)
      fpkm_values = _get_gtf_column(fpkm_column_name, gtf_path, df)
      features = _get_gtf_column(feature_column_name, gtf_path, df)
      logging.info("Loaded %d rows from %s" % (len(transcript_ids), gtf_path))
      logging.info("Found %s transcript entries" % sum(
          feature == "transcript" for feature in features))
      result = {
          transcript_id: float(fpkm)
          for (transcript_id, fpkm, feature)
          in zip(transcript_ids, fpkm_values, features)
          if (
              (transcript_id is not None) and
              (len(transcript_id) > 0) and
              (feature == "transcript")
          )
      }
      logging.info("Keeping %d transcript rows with reference IDs" % (
          len(result),))
      return result