I am currently exploring the BLAST program, just for testing purpose i generated two FASTA files, containing two genes A and B, such that B is just a motif of repeated 'G's that occurs in A.

file A.fna:


file B.fna:


So by my understanding BLAST should find the local alignment of B in A easily? But the program returns 'No hits found'? Maybe I am doing something wrong here?

I executed the following:

makeblastdb -in A.fna -dbtype 'nucl'
makeblastdb -in B.fna -dbtype 'nucl'
blastn -db A.fna -query B.fna

output of blastn:

BLASTN 2.7.1+

Reference: Zheng Zhang, Scott Schwartz, Lukas Wagner, and Webb Miller (2000), "A greedy algorithm for aligning DNA sequences", J Comput Biol 2000; 7(1-2):203-14.

Database: A.fna
           1 sequences; 64 total letters

Query= B


***** No hits found *****

Lambda      K        H
    1.33    0.621     1.12 

Gapped Lambda      K        H
    1.28    0.460    0.850 

Effective search space used: 480

  Database: A.fna
    Posted date:  May 3, 2018  5:17 PM   Number of letters in database: 64   Number of sequences in database:  1

Matrix: blastn matrix 1 -2 Gap Penalties: Existence: 0, Extension: 2.5

Thanks for any suggestions (:

  • $\begingroup$ I'm not sure but could it be that there are too many gaps and then it doesn't match it. BLAST doesn't just search for a sequence inside another one, but looks for similarities between sequences, and these two sequences are not similar (even if one contains the other) $\endgroup$
    – llrs
    May 3 '18 at 16:10
  • $\begingroup$ But is that not exactly what BLAST is supposed to do (local alignment)? There is a perfect local alignment (without any gaps). In terms of global alignment the two sequences are very different (and gap penalties are huge), but here we are talking about local alignments !? $\endgroup$
    – Paul
    May 3 '18 at 16:22
  • $\begingroup$ Yes, it should, glad we have terdon to answer the question $\endgroup$
    – llrs
    May 3 '18 at 17:19

There are three possible problems that come to mind.

  1. Masking

    Blast will mask low complexity regions by default. Since your sequence is nothing but Gs, it is a safe bet that it is being masked, so no hits will be found for it.

  2. Score/e-value thresholds

    Another source of complication is that even if a match is found, that match will have very bad scores. Both the actual score of the alignment and the e-value will be very bad. Since this is such a simple sequence, it will always score badly.

  3. Word-size

    The way blast works is (simplifying a bit) by finding a match for N residues (the word size) and then extending that match if extending increases the score. If your query sequence is shorter than the word size, no match will ever be found.

With all that said, the specific problem in your case seems to be a combination of the word-size and masking. If you run your query setting the word-size to 11 and disabling masking, as shown below, you should get results.

blastn -db A.fna -query B.fna -word_size 11 -dust no

That should return two hits (two because the word size is one less than the query size, so it can align perfectly at two locations):

> A

 Score = 23.3 bits (12),  Expect = 5e-05
 Identities = 12/12 (100%), Gaps = 0/12 (0%)

Query  1   GGGGGGGGGGGG  12
Sbjct  11  GGGGGGGGGGGG  22

 Score = 23.3 bits (12),  Expect = 5e-05
 Identities = 12/12 (100%), Gaps = 0/12 (0%)

Query  1   GGGGGGGGGGGG  12
Sbjct  12  GGGGGGGGGGGG  23

Note that the default word size for BLASTn searches is usually 11. I don't know why the blast+ version (2.2.31+) I have on my Ubuntu machine didn't use that as a default. The manual says it should. But I got no hits when I didn't explicitly set the word size to 11.

  • $\begingroup$ that makes a lot of sense (i was not familiar with the concept/term of masking) thanks (: $\endgroup$
    – Paul
    May 3 '18 at 17:24

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.