Repository navigation
Description
Hi,
Thanks for putting this tutorial online it is very helpful.
I am trying to annotate a genome and I'd love to have your input and suggestions.
My PI sequenced a marine mammal using PacBio, but the reads came short ~ 5 kb, know, shocking, and low input ~ 40 GB for a 2.4 GB genome. Thus 2 runs were done, total ~ 90 GB. The assembly done with HiFiasm, after haplotype purging and decontamination, not so bad:
N of seqs: 397,
length: min : 6,208, average: 6,032,705.3, max: 59,387,461.
The BUSCO Score was pretty good:
C:98.9%[S:97.6%,D:1.3%],F:0.3%,M:0.8%,n:13727,E:2.8%
AFter this, I scaffolded it using an individual sequenced and scaffolded with HiC by DNAZoo/same species.
Here is my issue: finding a "good & reliable & complete" annotation.
My PI sequenced 4 tissues, regular RNA-seq. I used EviAnn, with protein data: Uniref90- carnivore, BUSCO-db mammals, 10 closely related species, 10 non-carnivore ref species, and transcript data from closely related species, as suggested.
The BUSCO proteome is lower:
C:90.8%[S:25.9%,D:65.0%],F:2.1%,M:7.1%,n:13727
This is with full proteome, I used agat to get the longest isoform per gene, and the BUSCO was lower:
C:89.1%[S:88.4%,D:0.8%],F:2.7%,M:8.2%,n:13727
I asked Aleksey Zimin, author of EviAnn, about the lower proteome score, and he replied this:
"BUSCO score for proteome will never be as high as for the genome. For a protein to be annotated it must have an intact ORF. BUSCO counts an ortholog to be a match even if only a small part of the protein aligns to the genome translated in all six frames, allowing for in-frame stop codons, not requiring ORF completeness. The organism may not even have a valid functional protein that matches the ortholog in BUSCO, but it may have a small remnant of that protein in the DNA as pseudogene that lost function."
Do you know another way to get the longest isoform per gene different than with Agat?
I can't believe that with the longest isoform per gene the BUSCO score is lower.
Then, I used the new released AI-annotator/ Tiberius, which in terms of BUSCO got higher scores
C:95.5%[S:94.7%,D:0.8%],F:1.1%,M:3.4%,n:13727
same with longest isoform per gene:
C:95.5%[S:94.7%,D:0.8%],F:1.1%,M:3.4%,n:13727
One thing is the BUSCO Score, the other is the number of genes identified.
EviAnn found: 21283, while Tiberius found: 19564. The difference in number of genes seems not unsignificant, but the BUSCO score confused me about which one is the best~/~more complete.
Any other thing that you suggest me to try?
According to the authors of Tiberius, it is better than Braker3.
Thanks;
Activity
14zac2 commentedon Jan 8, 2026
Hi - glad you have been finding our tutorial helpful! Very cool that you tried Tiberius - that one has been on our to-do list but I was having trouble with installation. That's not a bad BUSCO score, especially for the lower number of genes.
The BUSCO score for your assembly sounds great. The score for the annotation has to be lower be definition, but 90% seems quite low. I'd like to confirm the evidence you used for EviAnn: protein databases from related species and transcript data from closely related species? Did you not say you also had RNA-seq from the species you sequenced? If you used protein and transcript data from closely related species and not the species you sequenced, that could partly explain the lower score. In my experience, protein data doesn't seem to create the most thorough annotations and RNA-seq that's not similar enough to your species might get ditched.
Have you tried Liftoff with a closely related species? We have great success getting high BUSCO scores from that and there are some good whale RefSeq genomes available. Liftoff is super easy to run, it rarely takes over an hour so highly recommend.
As for finding the longest isoform, I personally don't think it's super suprising that your score is lower. The longest isoform doesn't necessarily mean it's the "best" gene model to keep, and sometimes these annotators can squish multiple things together that don't belong therefore creating a very long gene model that won't match anything. We have been using Mikado to pick the "best" gene model, but another option that I haven't yet explored is OMAnnotator. Both of these tools essentially take multiple GFFs as input and create a consensus annotation. These will probably help improve your BUSCO score rather than relying on a single tool.
As for the total number of genes detected, it sounds like Tiberius is more precise than EviAnn. It's hard to say which annotation is "better" as it's hard to measure genome annotation quality, but the EviAnn annotation seems to be missing some key gene models, whereas Tiberius may have some false negatives in there, not sure.
If I were you, I would keep the EviAnn and Tiberius annotations, give Liftoff a go, and then try combining the annotations with Mikado or OMAnnotator and see what happens with your BUSCO scores and other quality metrics.
desmodus1984 commentedon Jan 8, 2026
Hi
Thank you very much for the quick reply. I have been trying to figure out why the annotation part is so confusing, genome assembly was pretty straightforward. I did a bat assembly before, and I think that I got the opposite of what is expected - my genome assembly had a BUSCO C of 95% but the proteome BUSCO C score was 98. I used GeMoMa at the time for annotation, and I was super happy that BUSCO was higher from the proteome.
For the annotation, we have RNA-seq from the same species seven tissues (NCBI). On top of that, I used transcript, and protein data from related and "distant" species.
For this sister species, I will try liftoff, any parameter you recommend to try? I remember reading one from humans T2T, and they used liftoff with the -copy parameter + -sc 0.95 _ extra genes should be at least 95% similar. The sister species was annotated by a company in germany (Goenomics) - you might have heard off, using an old-fashioned way - augustus plus Stringie basically.
The species I am working, Weddel seal, had its genome sequenced - short-reads, very fragmented, and assembled using RNA-seq from 4 tissues, while 7 are now available on NCBI.
https://www.ncbi.nlm.nih.gov/datasets/genome/GCF_000349705.1/
The genome annotation on NCBI states that it has 22214 protein-coding genes, which makes it a little-tiny-bit less confusing, and makes the EviAnn annotation - look better, though the lower BUSCO C score.
Which other quality metrics should I use? I was basically using the gene number and the BUSCO, and somehow using the Omamer assessment.
We plan to do ortholog detection - using Orthofinder, and it needs a single isoform per gene - for all species, otherwise multiple isoforms will inflate the output not only during the clustering step in Orthofinder but also during later (PAML) when using dm/ds to detect selection with the multiple alignments output from Orthofinder, which we plan to do next.
If you want I could share my conda environment clone for you to run there. Installation of Tiberius is very complicated and ridiculously painful - though it is supposed to be simple. you need an old version of python - but for some reason, conda keeps on updating it... to analyze seqs > 200k , otherwise you have to chop your assembly, which sounds very silly and ridiculous. What I found incredible, is that they recommed using GPU, which might seem reasonable, but I don't have access to one; my first attempt using a 100 GB node took 35 days to run, but when I used a node with 500 GB of RAM, it took less than a day. Can't explain the reduction in runtime.
DustinSokolowski commentedon Jan 9, 2026
Hey!
I did a bat assembly before, and I think that I got the opposite of what is expected - my genome assembly had a BUSCO C of 95% but the proteome BUSCO C score was 98. -
That is indeed interesting. Did you happen to investigate the TE content and/or intron lengths of the species? Do you also happen to know what the assembly QV was for the species (i.e., predicted base-pair accuracy?) If there is weird splicing, TE interruption in genes and exons, super super long introns, or inaccurate base-pairs around splice sites BUSCO-assembly could assign the gene as fragmented while the busco-protein would see all of the exons, not care about anything else, and say it's "complete". Short read assemblies have huge issues deriving LINE elements which like to live in introns, and bats have accumulated LINE elements in recent evolution (Morales et al., 2025) (and LINEs are super common in mammal generally). If your assembly didn't have long reads, I'd guess that the bat annotation BUSCO was greater than the assembly BUSCO because of the inherent challenges in correctly assembling TEs with short read data.
Then, I used the new released AI-annotator/ Tiberius, which in terms of BUSCO got higher scores
My (basic) understanding is that Tiberius will do a good job with Busco genes. Tiberius is a deep learning classifier that is trained on 37 mammalian genome annotations. These genomes were selected based on their phylogenetic diversity and if they have an annotation BUSCO of >90%. They also picked the longest isoform for training (which is why it focuses on transcripts and intron-exon chains) and will not provide alternative isoforms. In a sense, TIBERIUS learns the features needed to find the single best BUSCO gene in a mammalian genome at the cost of some sensitivity for species specific stuff and having multiple transcripts per-gene. As Zoe said, we’re a big fan of integrating each GFF and asking an algorithm (we use Mikado in GenAnT) do decide which transcript is best at a per-transcript level.
As for Tiberius env. I’m okay, thank you! We’re trying to make GenAnT more container driven with the hopes of making a comprehensive annotation environment that anyone can install so I was going to try https://hub.docker.com/r/larsgabriel23/tiberius @14zac2 ?
liftoff with the -copy parameter + -sc 0.95 _ extra genes should be at least 95% similar.
That’s what we use. We’re starting to play with liftoff parameters and the relationship between species relatedness, genome assembly quality, and when to use liftoff vs. TOGA. Any of our findings at this stage are totally anecdotal though (but basically liftoff default does a remarkably good job for the same genus and can even do a good job for the same family). Once we try this more systematically, I’ll have a better idea here. There is also LiftON https://pubmed.ncbi.nlm.nih.gov/38798552/ which integrates liftoff and miniprot and was designed to help for slightly more distant species.
Which other quality metrics should I use? I was basically using the gene number and the BUSCO, and somehow using the Omamer assessment.
Good question, the written tutorial associated with this github is currently in press at Nat Protocols and should be out any day now and we try our best to answer this there. I’ll try and summarize below:
• BUSCO is good albeit a bit limited
• Total gene number can be useful when relating to a sister species. Like if you have >20% fewer or more genes than a sister species than it could we worth looking into. More doesn’t strictly mean better though as it can be a sign of gene fragmentation.
• GFFcompare can also be useful, especially because you have the NCBI annotation. For example, you can use liftoff to carry the NCBI annotation over with liftoff (https://www.ncbi.nlm.nih.gov/datasets/genome/GCF_000349705.1/) and directly compare assembly precision and recall. Of course your annotation may be better than theirs as you have more RNA-seq but if either metric is terrible it’s a sign something went wrong. You can also use their annotation as a layer of evidence for your annotations with Mikado, which I really like to do when improving assemblies and annotations.
• I’m personally a huge fan of looking on the genome browser. Throw on some bam files and pick some genomic regions that are syntenic across mammals to make sure the gene order is good (TP53 is a good one). You can also pick some big genes like titin/timeless and see if they’re fragmented into smaller chunks compared to a high-quality sister species. Looking at assembly/annotation together it can be useful to check for some hard to annotate genes (Sox2, XIST, Sry, opposite-strand RNA’s). But spotting those (or not) can tell you a bit about if you
• Specific to if you use Mikado but I found the Mikado metrics file to be quite valuable. Every transcript has the values in this list associated with it: https://mikado.readthedocs.io/en/stable/Scoring_files/#metrics. https://github.com/BaderLab/GenAnT/blob/main/6-AfterAnnotation/PostprocessReformatFinalGFF.R in the tutorial talks about how to add it to a table of gene symbols + a GFF
We plan to do ortholog detection - using Orthofinder, and it needs a single isoform per gene - for all species, otherwise multiple isoforms will inflate the output not only during the clustering step in Orthofinder but also during later (PAML) when using dm/ds to detect selection with the multiple alignments output from Orthofinder, which we plan to do next.
I haven’t added it to GenAnT but this is the script I wrote to take the gene symbol table from GenAnT and filter it to help with Orthofinder/HyPy type analyses. Basically the idea is that it keeps genes with a unique symbol. Genes that have duplicates (ABC-copy1, ABC-copy2) are then checked if. If “copy2” is low quality or single exon, ABC-copy1 is kept and ABC-copy2 is removed. If both ABC-copy1 and ABC-copy2 are multi exonic and high quality, then they are both removed as they’re paralogs falsely given the same gene symbol or a gene copy event. Either way it wouldn’t be helpful for Orthofinder.
desmodus1984 commentedon Jan 13, 2026
Hi,
I wanted to ask you another question.
I was reading and I noticed that for non-coding RNA annotation, you mentioned only using Infernal. I have seen people using tRNAscan-SE for tRNA. Is there any reason why you did not use it?
Thanks
14zac2 commentedon Jan 13, 2026
Hello! We've tried tRNAscan before, but largely recommend Infernal because it detects more kinds of ncRNA. In the end, it reduces the number of tools you have to use to try to find all kinds of different ncRNA.
DustinSokolowski commentedon Jan 14, 2026
like Mirmachine (which we use), tRNAscan-SE uses Infernal1.1 as it's engine, the core difference is in the pre-trained tRNA models for tRNAscan-SE. When going through the paper my interpretation was that these models are super helpful for mt-tRNA in animals, but they didn't do much to discuss chromosomal tRNA. With enough interest I could test incorporating it into our workflows.
If you end up using tRNAscan-SE for tRNA specifically and Infernal for other ncRNA familes, I'd think about removing the tRNAs called by Infernal to avoid redundancy.
desmodus1984 commentedon Feb 11, 2026
Hi,
Thanks for the suggestions and comments. Highly appreciate.
I hope you don't mind me asking a new question. I tried using gene model filtering with Mikado but the last step failed several times, and I feel that I should quit. The HPC where I work doesn't have much assistance, and I wanted to move on for non-coding annotation. I would appreciate your guidance on how to proceed.
I used EarlGrey to identify repeats, and I tried retrieving RNA from the gff, and found none. I tried Liftoff with the previous annotation, but for some reason the gff failed every time.
I am now creating the blast.bed after blasting the genome to the RFam db.
Thanks!
14zac2 commentedon Feb 11, 2026
Hey, sorry you're having so much trouble with Mikado and the other tools! That sounds super frustrating. We're happy to help with these issues.
Are you able to provide more details about why these different steps might be failing?
Thanks!
Zoe
desmodus1984 commentedon Feb 11, 2026
Hi @14zac2
For Mikado, there is a problem with the bed file and Mikado serialize failed because of some model errors and some old Linux libraries.
I used this code for EarlGrey:
I didn't have any issues with it. I was just surprised that it didn't have any RNA.
Here are a few lines;
For Liftoff I basically downloaded the NCBI GFF of my species, GCA_000349705.1, Leptonychotes weddellii (Weddell seal). I was able to transfer the annotation that I did from the sister species, which doesn't have non-coding annotations, and I did understand that Liftoff only transfer protein-coding genes.
The error log is this:
I tried filtering it, several ways, with AGAT, with gffread, nothing worked.
I would like just to get the non-coding genes. I used Tiberius for ab initio prediction, followed by EviAnn with RNA-seq, protein, and transcript evidence, and found 22k genes. What confused me is that using full proteome the BUSCO complete score (from carnivora db 12) was high - 95.8%, but since it has all the proteins from isoforms, the duplicates were ridiculously high: 69.9%. So, I used AGAT - the only way I know, to get the longest isoform per gene, and the duplicate scores reduced nicely, 1.0%, but so did the complete 93.9%. I feel that I am trying too hard, since I am working with a marine mammal, and BUSCO is based on "limited species coverage".
My next goal is to be able to get full length mRNA sequencing, but it might take a while to do, since PacBio is very expensive.
Thanks!
DustinSokolowski commentedon Feb 11, 2026
Hey!
Sorry to answer your questions with more questions but:
I don't think I'd be too worried about it. the "RNAs" in EarlGrey are TE derived tRNA snRNA snoRNA etc. I'm not sure what repeat library your command would default to but it may have redundancies with other repeat elements. For example the tRNA containing element may be called another SINEs and LTR retrotransposons, or maybe your species doesn't have many evolutionarily "young" TE derived ncRNAs.
Same question as (1). Did you use our helper script for processing your reference genome? It tries to smooth out a lot of the weirdness that can come from GFF formats not being super strict (even if they're all in NCBI).
3a) As for liftoff transferring non-coding models, the answer is slightly annoying. liftoff, by default, transfers features you'd expect to see in PCGs (gene, mRNA / transcript, exon, CDS, five_prime_UTR, three_prime_UTR, start_codon, stop_codon) and I believe it reads the "type" column of the gff to filter what to transfer. You can expand this to include other types with the
-fparameter but personally I've found it pretty buggy. The easiest workaround is to apply liftoff to the referencegtffile instead of thegfffrom NCBI since it uses a much stricter type formatting (i.e., all unique genes are given the "gene" type regardless of if they're PcGs). You can also just use an ensembl annotation but I don't know if that's available for your species. If you go the gtf route, liftoff will return a gtf so don't forget to convert it into a gff with gffread or AGAT if you want to put it into mikado.desmodus1984 commentedon Feb 11, 2026
Hi!
I wouldn't call it on my own haha. I followed the instructions on the mikado website, since the authors might have changed something, so to at least us the most up-to-date version - despite it using Transdecoder output and not TD2.
That is how I feel. I would not based noncoding annotation from an app that is for transposable elements.
Is the script to process the reference genome or the annotation GFF file?
Any program do you trust or recommend for making a gff a gtf?
Indeed, Ensembl doesn't have my species.
I was mostly curious to see if Mikado does some magic and the BUSCO proteome score increases - the BUSCO genome complete was 98.1%, single 96.9%.
DustinSokolowski commentedon Feb 11, 2026
Hey!
RE: Mikado
Is the script to process the reference genome or the annotation GFF file?
Any program do you trust or recommend for making a gff a gtf?
agat_convert_sp_gxf2gxf.plis the way to go. gffread can drop ID features.I was mostly curious to see if Mikado does some magic and the BUSCO proteome score increases - the BUSCO genome complete was 98.1%, single 96.9%.
Best!
Dustin
desmodus1984 commentedon Feb 11, 2026
The biggest problem that I see is that the bed file had some issues that I am trying to figure out with the authors of mikado; 1, issue is running it - I did an installation that worked the configure and prepare steps, but I rebuilt the environment and now I can't install it -following the original instructions...
Kinda exhausted with all the problems. I have the singularity container, let me know any parameter that I should use to run mikado.
I would use the annotation from Tiberius and with EviAnn. I am not that worried with the Liftoff because the BUSCO score of the publicly available genome is 89%, while ours is 98%, so I don't think it will be very significant impact.
For example, my biggest question is what is affected after doing AGAT longest isoform extraction that reduces the BUSCO score.
Any suggestions appreciated.
DustinSokolowski commentedon Feb 11, 2026
Kinda exhausted with all the problems. I have the singularity container, let me know any parameter that I should use to run mikado.
All of the scripts we reference are in https://github.com/BaderLab/GenAnT/tree/main/scripts
I would use the annotation from Tiberius and with EviAnn. I am not that worried with the Liftoff because the BUSCO score of the publicly available genome is 89%, while ours is 98%, so I don't think it will be very significant impact.
"This is with full proteome, I used agat to get the longest isoform per gene, and the BUSCO was lower"
The BUSCO proteome is lower:
C:90.8%[S:25.9%,D:65.0%],F:2.1%,M:7.1%,n:13727
This is with full proteome, I used agat to get the longest isoform per gene, and the BUSCO was lower:
C:89.1%[S:88.4%,D:0.8%],F:2.7%,M:8.2%,n:13727
This is something I think mikado actually can help with. The answer is that longest isoform does not necessarily mean top isoform due to technical issues stuff like transcript chimeras, utr extensions or real biological events like rare exons from RNA-seq data etc. You can ask this with the "metrics file" mikado returned.
For example, for the first 10K genes in my naked mole-rat assembly, I asked if the longest isoform for the gene has the top aggregate score from their huge metrics list. The longest isoform was the top transcript 90.21% of the time. I'd guess your drop in busco score is that there are a handful of long isoforms that have some issue, making them not pass BUSCO, however you have a different isoform in the same gene that is correct, letting the aggregate busco proteome have a higher total score.
Best!
Dustin
14zac2 commentedon Feb 11, 2026
@DustinSokolowski is the master of answering questions BUT I just wanted to chip in to add that if you're using the RefSeq Weddell Seal as a reference, you can get both the GFF and GTF from ftp: https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/349/705/GCF_000349705.1_LepWed1.0/GCF_000349705.1_LepWed1.0_genomic.gff.gz
26 remaining items
14zac2 commentedon Mar 23, 2026
Hello hello!
I'm glad that you're finding a good combination of tools that is working for you. It's possible that you have a higher BUSCO score and more contamination genes because that particular gene set contains more false positive gene models. Is there also a larger number of genes/features in the one with the more contamination genes?
It's important to remember that BUSCO is a rather limited quality assessment tool. Although it is great for assessing highly-conserved regions, it is unclear how good the rest of the genome/annotation is. Any tool that doesn't use RNA-seq directly is probably going to perform best on conserved regions whereas RNA-seq wouldn't have that bias.
Good question about the gene symbols! I think it's a matter of personal preference. I prefer OrthoFinder because if you use human gene symbols, you will get more gene symbols overall that are easier to read. If you use LiftOff, you are limited to the gene symbols that came from your closely-related species (and some of these gene symbols can have weird names).
Cheers,
Zoe
desmodus1984 commentedon Mar 25, 2026
Hi!
Yes, the Mikado gene set have more features/genes, the contamination level was ~20% which was surprisingly high.
Unfortunately, I work with marine mammals and when the project was planned it only included standard RNA-seq. I am now convincing my boss to do long RNA-seq to have better gene model prediction. I used EviAnn and it uses Stringtie and recommends doing tissue-by-tissue gene prediction to minimize mixing transcripts from different tissues and creating chimeric transcripts. Furthermore, for my species, the project only collected skin tissue, which limits the accuracy and power - though a previous project sequenced RNA from 7 other tissues - including placenta!. So, there is some "hard evidence" for finding genes.
Hopefully, we can find funds to do PacBio Kinnex to confirm and find new transcripts.
Funnily, the human T2T assembly reported 20k genes and my species has 24k haha. Science is cool!
Thanks!
DustinSokolowski commentedon Mar 26, 2026
Hey!
I also like tissue-by-tissue stringTie and is what GenAnT uses in that step by recommending you merge each bam file by tissue before running the tool. Braker also internally runs stringtie on each individual inputted bam file and then merges afterwards. As you know, using publicly available RNA-seq is definitely encouraged when performing gene annotations so that's great!
desmodus1984 commentedon Apr 21, 2026
Hi.
I appreciate all the help during the annotation process, and I hope you don't mind me your names in the acknowledgment section of the paper. Please let me know how should I address you, your preferred name.
Thank you very much!
DustinSokolowski commentedon Apr 22, 2026
Hey!
That's very generous, thank you!! My preferred name is Dustin J Sokolowski. I think Zoe would want Zoe A. Clarke.
Thanks again!
Dustin
14zac2 commentedon Apr 23, 2026
It's been our pleasure! Thanks for the acknowledgement! If you found our general advice helpful, citing our paper would be awesome, too, if you can :)
desmodus1984 commentedon Apr 23, 2026
desmodus1984 commentedon May 29, 2026
Hi,
Sorry to bother you one more time. I annotated the genome using all the PCG but later I found that some of them might be erroneous models (ID'd by OMark) so I felt that just deleted them after using them during annotation might be inappropriate.
So, I deleted those, but I also forgot that EviAnn does annotate lncRNA, and it found 1702 . I did a quick look at the EviAnn annotation file, and I noticed something interesting and complicated/confusing at the same time; EviAnn outputted for lncRNAs a "gene" and also like "mRNAs" and "Exons" - based on RNA-seq data:
lncRNA with 2 "mRNA"s
lncRNA with 3 "mRNA"s
This information is interesting but now I am unsure what and how to "include" it during the annotation, like, should I only use the "gene" START and STOP positions, or should I use the "mRNA"s START/STOP positions? The "exon" regions are interesting, but I don't know if it makes sense to add it or not.
I would be extremely grateful for your input on what should be relevant and "valid"/ useful to use during the ncRNA annotation, and how to proceed.
I feel that I am so close but the end point seems like too far away haha.
THANK YOU VERY MUCH!
14zac2 commentedon May 29, 2026
Hello, hello!
Genome annotation will never end if you don't force it to ;)
It looks like you have some alternatively spliced lncRNAs. I'm not super familiar with EviAnn - is the issue just that mRNA is appearing in the ID name?
desmodus1984 commentedon May 29, 2026
I know that feeling. We used regular 2x150 bp RNA-seq and I am REALLY interested in getting long-read transcript data to improve the annotation!
The issue is that I am not sure what to add to the noncoding RNA-seed haha. I just GOoGle'd quickly and I found a paper actually describing lncRNA alternative splicing. Learning a new thing every day! Great!
I am in doubt whether to use the START-STOP positions of the parent lncRNA "gene" to make the combined bed seed file, or to use the START-STOP positions of the "mRNA" forms of the lncRNA "genes".
I am more leaning towards using the "gene" positions since the "mRNA" positions will be overlapping, but I would like to hear from the experts on the best way to approach this dilemma!
Thanks
14zac2 commentedon May 30, 2026
Ah, I see! I was confused because you are referring to the lncRNAs as mRNAs. Yes, I would just use the gene coordinates! It should give you the loweset low and the highest high of each position.
desmodus1984 commentedon Jun 2, 2026
Hi.
Sorry to bother you again.
I am trying to assign Gene Symbols, and for some reason the gene names from Orthofinder don't match the ones from the reference.table. I downloaded the Human T2T assembly and gff. Since Orthofinder needs one protein per gene, I used AGAT to make a gff with the longest isoform per gene, and then I used gffread to get the aa sequences:
gffread -g ../T2T.fasta -y Homsap.pep ../longert/T2T_longest_iso.gff
Maybe I am wrong, but I wanted to get as many genes as possible, so since Orthofinder complains when it finds an in-frame stop codons "" , I changed the "" on the aa seqs to X. I did the same with my species aa sequences, and Orthofinder ran fine.
I then created the reference.table as stated here using the total T2T annotation,
and when it tried to join the reference and the orthogroup_pairs tables, the gene Id column is empty:
I am shocked and confused because I haven't changed anything in the gff. and for some reason the gene names don't match.
I even trimmed the reference gene names, to eliminate everything after the dot, and nothing.
Perhaps could you bring some light on what might be going on?
I followed the code word-by-word - to make the table.txt,
as required in the R script:
DustinSokolowski commentedon Jun 6, 2026
Hey! Sorry for the slow reply.
So while I don't think this will solve your issue, I'd be quite concerned with replacing stop codons with "unknown" codons. I would trust an internal stop codon as a real stop and that the rest of the transcript could be at risk of being misannotated. For example, if your reference has two transcripts incorrectly fused together, orthofinder would build false orthogenes where multiple genes in your target species have a 50% reference (human) 100% target match to your reference species, which could be enough to have two different genes get the same symbol. Since human is your reference you can skip any
Of these issues by using MANE: https://www.ncbi.nlm.nih.gov/refseq/MANE/
For your primary issue, are you making the gene symbol table from the main reference or from the agat-transformed reference gff? I'm wondering if agat may be changing what lives in ID/Parent etc as part of in cleaning process, and as a result you're now trying to line up protein ids with gene ids or something like that.
desmodus1984 commentedon Jun 16, 2026
Hi, I did the Orthofinder analysis twice, with only the proteins with START/STOP CODONS and without in-frame STOP CODONS, and all of them.
I did make the gene symbol table from the main reference:
I just renamed the NCBI file to T2T.gff.
I checked the T2T.longest.gff and it seems fine to me. For instance I checked the protein:
I am surprised that the reference table and the Orthofinder results don't match:
I checked the gff and I noticed something weird. For instance, if I check for instance SCNN1D, the "gene" name, rna-NR_037668, corresponds to the transcript "type",
while gffread used the mRNA "type" ID.
Perhaps I can modify something in the R code to make the reference table?
Lastly, I was reading again the GeneSymbol part, and it says to use the -S function of gffread to retrieve the proteins,
but it just changes the stop codon symbol from '.' to '*'.
Will Orthofinder run fine with proteins with internal stop codons?
I thought that those proteins should not be included for Orthofinder.
Thank you very much!
DustinSokolowski commentedon Jun 22, 2026
Hey!
You can definitely modify the R code to make the reference table.
Modifying the reference table would involve modifying this script
https://github.com/BaderLab/GenAnT/blob/main/setup/ncbi_gene_key.RChange line 28 to whatever column headers you like:
key <- gff_transcript[,c("gene_id","trans_id","gene")] # current default.The more robust (and probably recommended) way to do it would be edit the gene symbols as a post-processing step. We have created a markdown for this and please see this issue for my answer to a very similar question: #4 (comment).
Regards,
Dustin