Μετάβαση στο περιεχόμενο

Περιγραφή

Lift over is a way of mapping annotations from one genome assembly to another. The idea "lift over" is same as what tools like UCSC LiftOver, NCBI's LiftUp web service do. However, NCBI and UCSC's web services are available only for a limited number of species.

To perform lift over locally, one can use UCSC chain files (Kent et al 2003) with programs such as UCSC's liftOver or CrossMap. A chain file captures large, homologous segments between two genomes as chains of gapless blocks of alignment. One way of generating chain files is using this bash script and UCSC tools.

flo is an implementation of the above script in Ruby programming language. Further, both liftOver and CrossMap process GFF files line by line instead of transcripts as a whole. This results in some non-biologically meaningful output. flo provides a basic filtering of UCSC liftOver's GFF output.

flo 1.1.0

Documentation

Προσοχή!

Τα ερευνητικά αποτελέσματα που προκύπτουν από χρήση του flo θα πρέπει να περιέχουν την σχετική αναφορά: The fire ant social chromosome supergene variant Sb shows low diversity but high divergence from SB. 2017. R Pracana, A Priyam, I Levantis, Y Wurm. Molecular Ecology, doi: 10.1111/mec.14054.

Παράδειγμα χρήσης

Καταρχάς θα πρέπει να κατασκευάσουμε το αρχείο flo_opts.yaml σύμφωνα με το υπόδειγμα /mnt/apps/prebuilt/flo/opts_example.yaml, όπου θα γράψουμε πού βρίσκονται τα source και target αρχεία FASTA (στα οποία θα βάλουμε κατάληξη .fa), πού βρίσκονται τυχόν GFF αρχεία που χρησιμοποιούμε, πόσες CPU θέλουμε να χρησιμοποιήσουμε, καθώς και τις παραμέτρους με τις οποίες θέλουμε να εκτελεστεί το BLAT.

Προσοχή!

Ο αριθμός των CPU που δίνουμε ως παράμετρο θα πρέπει να ισούται με την SLURM_NTASKS (ορίζεται με το --ntasks).

Note

Για να αποφύγουμε τα λάθη, μπορούμε να διασφαλίσουμε με κάποια αυτοματοποίηση ότι θα χρησιμοποιηθεί ο σωστός αριθμός CPU. Μπορεί να χρησιμοποιηθεί κάποια απλή μέθοδος όπως οι προτεινόμενες σχολιασμένες εντολές στο παράδειγμά μας, ή η εντολή sed, ή και κάποιο script που κατασκευάζει εξ ολοκλήρου το flo_opts.yaml από command line input, όπως το παράδειγμα /mnt/apps/prebuilt/flo/example_script που γράψαμε για διευκόλυνση.

Το script υποβολής της εργασίας θα έχει την ακόλουθη μορφή:

SLURM submission script
#!/bin/bash
#SBATCH --job-name=flo-1.1.0-case.sh
#SBATCH --partition=rome
#SBATCH --nodes=1
#SBATCH --ntasks=10
#SBATCH --time=1:00:00


module load gcc/12.2.0 ruby flo

  # ****** OPTIONAL FAILSAFE ******

  # to make sure that the :processes: parameter is correct
  # suppose we have a file called "my_opts"
  # that already contains the parameters
  # :lift:, :source_fa:, :target_fa:, :blat_opts:, :add_to_path:
  # (according to $FLO_ROOT/opts_example.yaml)
  # we can then set the :processes: parameter by

  # $ cp my_opts flo_opts.yaml
  # $ echo -e "\n:processes: $SLURM_NTASKS">>flo_opts.yaml

  # which adds a newline ("\n") and the line
  # ":processes: 10"
  # (since we have specified 10 tasks)

# run flo
rake -f $FLO_ROOT/Rakefile

Προσέξτε παραπάνω ότι έχουμε θέσει nodes=1 γιατί το flo τρέχει μόνο σε έναν κόμβο.

Στο $HOME μας στο login node, δημιουργούμε ένα νέο φάκελο όπου τοποθετούμε το αρχείο flo_opts.yaml και το script υποβολής της εργασίας, έστω flo-1.1.0-case.sh.

# mkdir flo-1.1.0-case
# cd flo-1.1.0-case

Η υποβολή της εργασίας γίνεται με την εντολή sbatch <filename.sh> ως εξής:

# sbatch flo-1.1.0-case.sh

Παρακολουθούμε με την εντολή squeue την εξέλιξη της εργασίας.

Eφόσον η εργασία έχει εκκινήσει μπορούμε να ελέγχουμε την πρόοδο της επίλυσης μέσω των αρχείων εξόδου. Π.χ.:

# tail -f *.out

Προσοχή!

Αντίθετα με άλλα προγράμματα, τα αρχεία εξόδου (υποφάκελος run) δεν αντικαθίστανται από επόμενες εκτελέσεις. Πριν επαναλάβετε την εκτέλεση του προγράμματος, θα πρέπει να έχετε σβήσει ή μετακινήσει την προηγούμενη έξοδο.