RSEM-GE...GVECTOR(1)

πŸ“¦
version 1.3.3 Β· 5 versions
, in ubuntu noble, ubuntu resolute

πŸ’– NAME πŸ’–

rsem-generate-ngvector β€” bestie, this is the little icon that builds an Ng vector for EBSeq using nothing but your transcript sequences. That's it, that's the whole job. ✨

Just so u know, this page lives in the User Contributed Perl Documentation section of the manual, and yeah, the page title is RSEM-GE...GVECTOR(1) πŸ’…

🌸 SYNOPSIS 🌸

rsem-generate-ngvector [options] input_fasta_file output_name

πŸŽ€ ARGUMENTS πŸŽ€

  • input_fasta_file β€” the fasta file holding all your reference transcripts. πŸ¦‹ Heads up: these transcripts have to be in the exact same order as the ones in your expression value files. Which means you should be using the reference_name.transcripts.fa file that rsem-prepare-reference gave you. Don't freestyle this one, okay?
  • output_name β€” the name shared by all the output files. Your Ng vector gets saved as output_name.ngvec. πŸ’–

✨ OPTIONS ✨

  • -k <int> β€” the k mer length. If ur confused, the DESCRIPTION section has the tea. (Default: 25) πŸ”₯
  • -h, --help β€” show help information. That's it, that's the whole vibe. 🫢

πŸ”₯ DESCRIPTION πŸ”₯

Okay so picture this: this program generates the Ng vector that EBSeq needs for isoform level differential expression analysis, and it does it based on your reference sequences only. No reads required, we're working with what we got. πŸ‘‘

Here's why that's a big deal. EBSeq can account for the variance that comes from read mapping ambiguity by grouping isoforms according to their parent gene's number of isoforms. Slay. But if your transcriptome is de novo assembled? Yeah, getting an accurate gene-isoform relationship is... hard. Not happening. πŸ™ˆ

So instead, this program groups isoforms by measuring read mapping ambiguity directly. Here's the process, step by step:

  1. It calculates the 'unmappability' of every single transcript. And what even is that? The 'unmappability' of a transcript is the ratio between:
    • the number of k mers that have at least one perfect match to other transcripts, and
    • the total number of k mers in this transcript,

where k is, you guessed it, a parameter (hi, -k πŸ‘‹).

  1. Then the Ng vector gets generated by running the Kmeans algorithm on all those 'unmappability' values, with the number of clusters set to exactly 3.
  2. rsem-generate-ngvector makes absolutely sure the mean 'unmappability' scores for the clusters come out in ascending order. It's giving organized. πŸ’…
  3. And any transcript whose length is less than k? Those all get assigned to cluster 3. Sorry babes, that's just the rule.
So if your reference is a de novo assembled transcript set, you should run rsem-generate-ngvector first. Then load the resulting output_name.ngvec into R. For example, you can use:
NgVec <- scan(file="output_name.ngvec", what=0, sep="\n")

After that, replace IsoNgTrun with NgVec in the second line of section 3.2.5 (Page 10) of EBSeq's vignette, like so:

IsoEBres=EBTest(Data=IsoMat, NgVector=NgVec, ...)

And here's the best part bestie β€” this program only needs to run once per RSEM reference. One and done. Periodt. πŸ’œ


🌈 OUTPUT 🌈

  • output_name.ump β€” the 'unmappability' scores for each transcript. This file has two columns: column one is the transcript name, column two is the 'unmappability' score. Simple, clean, iconic. πŸŽ€
  • output_name.ngvec β€” the Ng vector that this program generated. The main character of the whole operation. ⭐

🧚 EXAMPLES 🧚

Say your reference sequences file is /ref/mouse_125/mouse_125.transcripts.fa and you're setting the output_name as mouse_125:

rsem-generate-ngvector /ref/mouse_125/mouse_125.transcripts.fa mouse_125

Look at that. Flawless. No notes. πŸ“


And that's the whole page, bestie!! πŸ’– Written up with perl v5.38.2, dated 2024-04-14 β€” go generate some Ng vectors and have the best day, ily 🫢✨

πŸ“¦ where this page comes from