Skip to content

Tiberius commands

Gemy George Kaithakottil edited this page Apr 13, 2026 · 4 revisions

Tiberius commands

Deep learning-based ab-initio gene structure prediction analysis

Go to the directory for this activity.

cd /home/train/Annotation_workshop/Tiberius

Example Tiberius run on a region of Arabidopsis using eudicotyledons weights (~1 minute)

(
tiberius.py \
    --genome Inputs/Genome/Athaliana_447_TAIR10.Chr3-1065466-1464870.unmasked.fa \
    --model Inputs/Weights/eudicotyledons \
    --out tiberius_unmasked.gtf
)

Run Tiberius against select models to predict protein-coding genes.

Weights/models trained with soft-masking (<2 minutes)

(
mkdir -p Model_analysis/Annotations
for f in Inputs/Weights/{eudicotyledons,insecta,mammalia} ; do
    tag=$(basename $f)
    tiberius.py \
        --genome Inputs/Genome/Athaliana_447_TAIR10.Chr3-1065466-1464870.unmasked.fa \
        --model ${f} \
        --out Model_analysis/Annotations/tiberius.${tag}.gtf
done
)

Weights/models not trained for soft-masking (~2 minutes)

Note the usage of --no_softmasking option
(
mkdir -p Model_analysis/Annotations
for f in Inputs/Weights/{insecta_nomask,mammalia_nomask,vertebrates_nomask,fungi_nomask} ; do
    tag=$(basename $f)
    tiberius.py \
        --genome Inputs/Genome/Athaliana_447_TAIR10.Chr3-1065466-1464870.unmasked.fa \
        --model ${f} \
        --no_softmasking \
        --out Model_analysis/Annotations/tiberius.${tag}.gtf
done
)

Correct the GTF positions to match the original chromosome positions.

(
for f in Model_analysis/Annotations/tiberius*gtf ; do
    tag=$(basename $f .gtf)_corrected
    ./Scripts/offset_gff.sh \
        $f \
        1065465 \
        > Model_analysis/Annotations/${tag}.gtf
done
)

Create properly formatted GFF files

(
for f in Model_analysis/Annotations/tiberius*corrected.gtf ; do
    tag=$(basename $f .gtf)
    ./Scripts/parse_tiberius_GTF_to_GFF3.py \
        --add_gff3_directives \
        $f \
        > Model_analysis/Annotations/${tag}.gff
done
)

Use Mikado to generate metrics for each annotation.

(
mkdir -p Model_analysis/Mikado_stats
for f in Model_analysis/Annotations/tiberius*corrected.gff ; do
    tag=$(basename $f)
    mikado util stats $f Model_analysis/Mikado_stats/${tag}.stats
done
)

Summarise the statistics generated by Mikado.

(
for f in Model_analysis/Mikado_stats/*.stats ; do
    tag=$(basename $f)
    parse_mikado_stats \
        Model_analysis/Mikado_stats/${tag} \
        > Model_analysis/Mikado_stats/${tag}.summary
done
)

Concatenate all the summary files into one.

(
Scripts/paste_mikado_summary_stats.sh \
    Model_analysis/Mikado_stats/*stats.summary |
    tabulate -s "\t" \
    > Model_analysis/Mikado_stats/all_gff.summary
)

Visualise the final output.

cat Model_analysis/Mikado_stats/all_gff.summary
--------------------------------  --------------  ------------  -------  --------------  --------  ---------------  ------------------
Metric                            eudicotyledons  fungi_nomask  insecta  insecta_nomask  mammalia  mammalia_nomask  vertebrates_nomask
Number of genes                   104.00          116.00        73.00    91.00           63.00     64.00            47.00
Number of Transcripts             104.00          116.00        73.00    91.00           63.00     64.00            47.00
Transcripts per gene              1.00            1.00          1.00     1.00            1.00      1.00             1.00
Number of monoexonic genes        22.00           31.00         5.00     18.00           8.00      4.00             4.00
Monoexonic transcripts            22.00           31.00         5.00     18.00           8.00      4.00             4.00
Transcript mean size cDNA (bp)    1347.38         1195.42       1270.64  1306.35         1231.62   1244.02          1126.79
Transcript median size cDNA (bp)  1179.00         1002.00       1029.00  1038.00         996.00    1017.00          900.00
Min cDNA                          231.00          219.00        216.00   252.00          273.00    225.00           219.00
Max cDNA                          5112.00         3867.00       5112.00  5112.00         4074.00   5076.00          3015.00
Total exons                       639.00          586.00        494.00   545.00          351.00    397.00           316.00
Exons per transcript              6.14            5.05          6.77     5.99            5.57      6.20             6.72
Exon mean size (bp)               219.29          236.64        187.77   218.12          221.06    200.55           167.59
CDS mean size (bp)                219.29          236.64        187.77   218.12          221.06    200.55           167.59
Transcript mean size CDS (bp)     1347.38         1195.42       1270.64  1306.35         1231.62   1244.02          1126.79
Transcript median size CDS (bp)   1179.00         1002.00       1029.00  1038.00         996.00    1017.00          900.00
Min CDS                           231.00          219.00        216.00   252.00          273.00    225.00           219.00
Max CDS                           5112.00         3867.00       5112.00  5112.00         4074.00   5076.00          3015.00
Intron mean size (bp)             150.01          133.37        196.41   172.07          266.09    339.90           190.35
5'UTR mean size (bp)              0.00            0.00          0.00     0.00            0.00      0.00             0.00
3'UTR mean size (bp)              0.00            0.00          0.00     0.00            0.00      0.00             0.00
--------------------------------  --------------  ------------  -------  --------------  --------  ---------------  ------------------

Use Mikado to compare the annotations to the reference annotation.

(
for f in Model_analysis/Annotations/*corrected.gff ; do
    tag=$(basename $f .gff)
    mikado compare \
        -r Inputs/Annotation/Athaliana_447_Araport11.Chr3-1065466-1464870.gene_exons.gff3 \
        -p $f  \
        -o Model_analysis/Mikado_Compare/${tag}
done
)

Summarise all comparisons.

(
mikado util collect_compare \
    -fmt tsv \
    -l "all" \
    -o Model_analysis/Mikado_Compare/Athaliana_tiberius_models \
    Model_analysis/Mikado_Compare/*.stats
)

Visualise the F1 metrics of all the comparisons.

(
cat Model_analysis/Mikado_Compare/Athaliana_tiberius_models.f1.tsv \
    | sed -e 's:Model_analysis/Mikado_Compare/tiberius.::g' -e 's:_corrected.stats::g' \
    | tabulate -s "\t"
)
--------------------------------  --------------  ------------  -------  --------------  --------  ---------------  ------------------
F1                                eudicotyledons  fungi_nomask  insecta  insecta_nomask  mammalia  mammalia_nomask  vertebrates_nomask
Base level                        75.72           73.09         56.56    66.89           50.69     48.32            37.83
Exon level (stringent)            59.87           48.42         45.88    51.87           34.5      34.36            33.85
Exon level (lenient)              85.49           69.06         64.9     74.23           50.22     46.45            47.77
Splice site level                 92.23           81.01         73.86    82.41           58.97     57.97            56.4
Intron level                      94.19           78.36         65.86    76.2            51.05     44               49.49
Intron level (NR)                 90.68           75.72         65.21    75.37           48.59     45.09            51.16
Intron chain level                54.3            22.88         23.85    33              12.96     2.38             10.21
Intron chain level (NR)           53.68           22.55         24.03    32.7            13.06     2.4              10.3
Transcript level (stringent)      1.85            1.19          0.68     1.28            0         0                0
Transcript level (>=95% base F1)  6.15            4.15          1.36     4.49            1.41      0.7              0
Transcript level (>=80% base F1)  35.49           21.16         14.29    23.08           8.45      2.81             4.48
Gene level (100% base F1)         2.65            1.68          1.03     1.88            0         0                0
Gene level (>=95% base F1)        8.85            5.88          2.05     6.57            2.16      1.08             0
Gene level (>=80% base F1)        50.44           29.41         21.54    33.8            12.97     4.3              7.1
--------------------------------  --------------  ------------  -------  --------------  --------  ---------------  ------------------

Analyse the effect of the masking.

Generate multiple annotation files using unmasked, repeat masked and fully masked genomes

Run Tiberius using the eudicotyledons weights (<2 minutes)

(
mkdir -p Masking_analysis/Annotations
for f in Inputs/Genome/{*unmasked*,*repeat_masked*,*fully_masked*} ; do
    tag=$(basename $f | rev | cut -d "." -f2 | rev )
    tiberius.py \
        --genome ${f} \
        --model Inputs/Weights/eudicotyledons \
        --out Masking_analysis/Annotations/tiberius.${tag}.gtf
done
)

Correct the GTF positions to match the original chromosome positions.

(
for f in Masking_analysis/Annotations/tiberius*gtf ; do
    tag=$(basename $f .gtf)_corrected
    ./Scripts/offset_gff.sh \
        $f \
        1065465 \
        > Masking_analysis/Annotations/${tag}.gtf
done
)

Create properly formatted GFF files

(
for f in Masking_analysis/Annotations/tiberius*corrected.gtf ; do
    tag=$(basename $f .gtf)
    ./Scripts/parse_tiberius_GTF_to_GFF3.py \
        --add_gff3_directives \
        $f \
        > Masking_analysis/Annotations/${tag}.gff
done
)

Use Mikado to generate metrics for each annotation.

(
mkdir -p Masking_analysis/Mikado_stats
for f in Masking_analysis/Annotations/tiberius*corrected.gff ; do
    tag=$(basename $f)
    mikado util stats $f Masking_analysis/Mikado_stats/${tag}.stats
done
)

Summarise the statistics generated by Mikado.

(
for f in Masking_analysis/Mikado_stats/*.stats ; do
    tag=$(basename $f)
    parse_mikado_stats \
        Masking_analysis/Mikado_stats/${tag} \
        > Masking_analysis/Mikado_stats/${tag}.summary
done
)

Concatenate all the summary files into one.

(
Scripts/paste_mikado_summary_stats.sh \
    Masking_analysis/Mikado_stats/*stats.summary |
    tabulate -s "\t" \
    > Masking_analysis/Mikado_stats/all_gff.summary
)

Visualise the final output.

cat Masking_analysis/Mikado_stats/all_gff.summary
--------------------------------  ------------  -------------  --------
Metric                            fully_masked  repeat_masked  unmasked
Number of genes                   41.00         106.00         104.00
Number of Transcripts             41.00         106.00         104.00
Transcripts per gene              1.00          1.00           1.00
Number of monoexonic genes        1.00          24.00          22.00
Monoexonic transcripts            1.00          24.00          22.00
Transcript mean size cDNA (bp)    1184.78       1320.54        1347.38
Transcript median size cDNA (bp)  783.00        1137.00        1179.00
Min cDNA                          210.00        231.00         231.00
Max cDNA                          3963.00       5112.00        5112.00
Total exons                       305.00        642.00         639.00
Exons per transcript              7.44          6.06           6.14
Exon mean size (bp)               159.27        218.03         219.29
CDS mean size (bp)                159.27        218.03         219.29
Transcript mean size CDS (bp)     1184.78       1320.54        1347.38
Transcript median size CDS (bp)   783.00        1137.00        1179.00
Min CDS                           210.00        231.00         231.00
Max CDS                           3963.00       5112.00        5112.00
Intron mean size (bp)             172.34        149.80         150.01
5'UTR mean size (bp)              0.00          0.00           0.00
3'UTR mean size (bp)              0.00          0.00           0.00
--------------------------------  ------------  -------------  --------

Use Mikado to compare the annotations to the reference annotation.

(
for f in Masking_analysis/Annotations/*corrected.gff ; do
    tag=$(basename $f .gff)
    mikado compare \
        -r Inputs/Annotation/Athaliana_447_Araport11.Chr3-1065466-1464870.gene_exons.gff3 \
        -p $f  \
        -o Masking_analysis/Mikado_Compare/${tag}
done
)

Summarise all comparisons.

(
mikado util collect_compare \
    -fmt tsv \
    -l "all" \
    -o Masking_analysis/Mikado_Compare/Athaliana_tiberius_models \
    Masking_analysis/Mikado_Compare/*.stats
)

Visualise the F1 metrics of all the comparisons.

(
cat Masking_analysis/Mikado_Compare/Athaliana_tiberius_models.f1.tsv \
    | sed -e 's:Masking_analysis/Mikado_Compare/tiberius.::g' -e 's:_corrected.stats::g' \
    | tabulate -s "\t"
)
--------------------------------  ------------  -------------  --------
F1                                fully_masked  repeat_masked  unmasked
Base level                        34.4          75.61          75.72
Exon level (stringent)            34.49         59.88          59.87
Exon level (lenient)              47.03         85.17          85.49
Splice site level                 55.13         92.15          92.23
Intron level                      52.39         94.06          94.19
Intron level (NR)                 52.12         90.6           90.68
Intron chain level                11.21         53.06          54.3
Intron chain level (NR)           11.3          52.94          53.68
Transcript level (stringent)      0             2.45           1.85
Transcript level (>=95% base F1)  0             6.12           6.15
Transcript level (>=80% base F1)  6.87          35.47          35.49
Gene level (100% base F1)         0             3.51           2.65
Gene level (>=95% base F1)        0             8.77           8.85
Gene level (>=80% base F1)        11.04         50.88          50.44
--------------------------------  ------------  -------------  --------

Commands to clean up, i.e. return to only the original files.

cd /home/train/Annotation_workshop/Tiberius
rm -rf -v !("Inputs"|"Scripts"|"commands.txt"|"Example_output")

Clone this wiki locally