I have downloaded tRNAscan-SE from here. After decompressing and untaring the file, I installed it using:

make install

When I type tRNAscan-SE --help, I get the help page:

tRNAscan-SE 2.0 (December 2017)

FATAL: No sequence file(s) specified.

Usage: tRNAscan-SE [-options] <FASTA file(s)>

  Scan a sequence file for tRNAs 
          -- default: use Infernal & tRNA covariance models
             with eukaryotic sequences 
             (use -B, -A, -M, -O or -G to scan other types of sequences)

Basic Options
  -E         : search for eukaryotic tRNAs (default)
  -B         : search for bacterial tRNAs
  -A         : search for archaeal tRNAs
  -M <model> : search for mitochondrial tRNAs
                 options: mammal, vert
  -O         : search for other organellar tRNAs
  -G         : use general tRNA model (cytoslic tRNAs from all 3 domains included)
  -L         : search using the legacy method (tRNAscan, EufindtRNA, and COVE)
                 use with -E, -B, -A, -O, or -G
  -I         : search using Infernal (default)
                 use with -E, -B, -A, -O, or -G
  -o <file>  : save final results in <file>
  -f <file>  : save tRNA secondary structures to <file>
  -m <file>  : save statistics summary for run in <file>
               (speed, # tRNAs found in each part of search, etc)
  -H         : show both primary and secondary structure components to
               covariance model bit scores
  -q         : quiet mode (credits & run option selections suppressed)

  -h         : print full list (long) of available options

I then tried to use it with tRNAscan-SE c_elegans.PRJNA13758.WS263.genomic.fa but it gave the following error:

FATAL: Unable to find /usr/local/bin/cmsearch executable

After googling cmsearch, it seems that is is part of the Infernal package. So, I installed infernal with conda using conda install infernal.

I pulled the help from cmsearch successfully:

cmsearch -h    
# cmsearch :: search CM(s) against a sequence database
# INFERNAL 1.1.2 (July 2016)
# Copyright (C) 2016 Howard Hughes Medical Institute.
# Freely distributed under a BSD open source license.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Usage: cmsearch [options] <cmfile> <seqdb>

Basic options:
  -h        : show brief help on version and usage
  -g        : configure CM for glocal alignment [default: local]
  -Z <x>    : set search space size in *Mb* to <x> for E-value calculations  (x>0)
  --devhelp : show list of otherwise hidden developer/expert options

Options directing output:
  -o <f>       : direct output to file <f>, not stdout
  -A <f>       : save multiple alignment of all significant hits to file <s>
  --tblout <f> : save parseable table of hits to file <s>
  --acc        : prefer accessions over names in output
  --noali      : don't output alignments, so output is smaller
  --notextw    : unlimit ASCII text output line width
  --textw <n>  : set max width of ASCII text output lines  [120]  (n>=120)
  --verbose    : report extra information; mainly useful for debugging

Options controlling reporting thresholds:
  -E <x> : report sequences <= this E-value threshold in output  [10.0]  (x>0)
  -T <x> : report sequences >= this score threshold in output

Options controlling inclusion (significance) thresholds:
  --incE <x> : consider sequences <= this E-value threshold as significant  [0.01]
  --incT <x> : consider sequences >= this score threshold as significant

Options controlling model-specific reporting thresholds:
  --cut_ga : use CM's GA gathering cutoffs as reporting thresholds
  --cut_nc : use CM's NC noise cutoffs as reporting thresholds
  --cut_tc : use CM's TC trusted cutoffs as reporting thresholds

Options controlling acceleration heuristics*:
  --max      : turn all heuristic filters off (slow)
  --nohmm    : skip all HMM filter stages, use only CM (slow)
  --mid      : skip first two HMM filter stages (SSV & Vit)
  --default  : default: run search space size-dependent pipeline  [default]
  --rfam     : set heuristic filters at Rfam-level (fast)
  --hmmonly  : use HMM only, don't use a CM at all
  --FZ <x>   : set filters to defaults used for a search space of size <x> Mb
  --Fmid <x> : with --mid, set P-value threshold for HMM stages to <x>  [0.02]

Other options*:
  --notrunc     : do not allow truncated hits at sequence termini
  --anytrunc    : allow full and truncated hits anywhere within sequences
  --nonull3     : turn off the NULL3 post hoc additional null model
  --mxsize <x>  : set max allowed alnment mx size to <x> Mb [df: autodetermined]
  --smxsize <x> : set max allowed size of search DP matrices to <x> Mb  [128.]
  --cyk         : use scanning CM CYK algorithm, not Inside in final stage
  --acyk        : align hits with CYK, not optimal accuracy
  --wcx <x>     : set W (expected max hit len) as <x> * cm->clen (model len)
  --toponly     : only search the top strand
  --bottomonly  : only search the bottom strand
  --tformat <s> : assert target <seqdb> is in format <s>: no autodetection
  --cpu <n>     : number of parallel CPU workers to use for multithreads

*Use --devhelp to show additional expert options.

I tried the tRNAscan-SE command again but it failed with the same error message.

So, tRNAscan-SE is looking for cmsearch in the wrong place. How can I make tRNAscan-SE use cmsearch successfully?



Forgot to tell you I am working on Mac OS X and that cmsearch is installed here:


and my python3env anaconda environment is active.

  • 2
    $\begingroup$ Please edit your question and tell us i) what operating system you are using and ii) assuming it is some sort of *nix, the output of which cmsearch $\endgroup$
    – terdon
    Jul 6 '18 at 9:43

An easy way to build tRNAscan and their dependencies "all Infernal packages" without confusion is to run

conda install -c bioconda trnascan-se 

You may try to set the correct path through the infernal_dir variable in tRNAscan-SE.conf.src. You might need to do this before the installation process.

Original file starts with:

# tRNAscan-SE 2.0 
# Configuration File

# default paths
bin_dir: @bindir@
lib_dir: @libdir@/tRNAscan-SE
infernal_dir: {bin_dir}

Try the following:

# tRNAscan-SE 2.0 
# Configuration File

# default paths
bin_dir: @bindir@
lib_dir: @libdir@/tRNAscan-SE
infernal_dir: "/Users/user/anaconda/envs/python3env/bin"
  • $\begingroup$ I've done what you said and it still works but how do I know it's not because my symbolic links are still active? Do you know how I can erase them? $\endgroup$ Jul 6 '18 at 15:51
  • 1
    $\begingroup$ @charlesdarwin You can remove them by (carefully) performingsudo rm /usr/local/bin/cmsearch and sudo rm /usr/local/bin/cmscan. $\endgroup$
    – bli
    Jul 6 '18 at 16:04

tRNAscan-SE 2.0 requires separate installation of Infernal 1.1.2. The source code and prebuilt binaries can be obtained at http://eddylab.org/infernal/.

The installation directory of Infernal should be the same as the one where tRNAscan-SE 2.0 is installed.

When install infernal, run the configure command with the option --prefix <your tRNAscan-SE-2.0 install path>. If you didn't add option --prefix when installing tRNAscan-SE-2.0, then you should install infernal without option --prefix.


A much cleaner solution is given in @bli's answer.

The error message is telling you that tRNAScan-SE is looking for the cmsearch executable at /usr/local/bin/cmsearch. However, you installed it though conda which apparently placed it at /Users/user/anaconda/envs/python3env/bin/cmsearch.

A simple, if not very elegant solution, would be to make a link to it:

sudo ln -s /Users/user/anaconda/envs/python3env/bin/cmsearch /usr/local/bin/
  • $\begingroup$ had to do the same with cmscan and now the code is running. $\endgroup$ Jul 6 '18 at 12:26
  • $\begingroup$ what does this soft link do? $\endgroup$ Jul 6 '18 at 12:26
  • $\begingroup$ @charlesdarwin This enables the program to access the program from the place it looks at by default. There might be a cleaner way to do: Changing the default (see my untested answer). $\endgroup$
    – bli
    Jul 6 '18 at 12:37
  • 1
    $\begingroup$ @charlesdarwin as bli said, that just creates a "fake file" at /usr/local/bin/ which points to /Users/user/anaconda/envs/python3env/bin/cmsearch, so that when something tries to open /usr/local/bin/cmsearch, it will actually run /Users/user/anaconda/envs/python3env/bin/cmsearch. But bli's approach of changing the configuration file is a much cleaner solution. Please use that instead. $\endgroup$
    – terdon
    Jul 6 '18 at 12:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.