I do not set the frameshift penalty costs and output everything in BLAST XML format. Then I go through this file and usually the beginning contains parameters of the scoring scheme etc. But it does not contain any entry about frameshift costs. Does anybody know about this? Are frameshifts allowed at all?
BlastOutput_program blastx
BlastOutput_version BLASTX 2.2.25+
BlastOutput_reference Stephen F. Altschul, Thomas L. Madden, Alejandro A. Schäffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J. Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of protein database search programs", Nucleic Acids Res. 25:3389-3402.
BlastOutput_db refseq-prot
Parameters_matrix BLOSUM62
Parameters_expect 1
Parameters_gap-open 11
Parameters_gap-extend 1
Parameters_filter L;
Edit: Just found out that, if you run blastx with '-help', you will get detailed options and their default values. There it says:
-frame_shift_penalty <Integer, >=1>
Frame shift penalty (for use with out-of-frame gapped alignment in blastx or tblastn, default ignored)
Still, what does ignored mean, a value of 0 or no frameshifts allowed?
Edit2: I had a look into the source code and the best I could find in this short time was:
SetMatrixName(BLAST_DEFAULT_MATRIX); // BLOSUM62
SetGapOpeningCost(BLAST_GAP_OPEN_PROT);
SetGapExtensionCost(BLAST_GAP_EXTN_PROT);
SetGappedMode();
// set invalid values for options that are not applicable
m_Opts->SetOutOfFrameMode(false);
m_Opts->SetFrameShiftPenalty(INT2_MAX);
So it seems that they just set the penalty to a very hight value that will practically disallow any shifts.
If anybody wants to confirm this behavior...
I will also do this but it would be nicer for any scientific program to document this kind of behavior.
I am not aware of any such program. If you do test this yourself, be sure to introduce the frameshift at various locations of your test gene: middle of exon, middle of intron, in intron but near splice junction, in exon but near splice junction. This last test may return a "truncated" exon because the frameshift creates an aligned segment too low-scoring to be reported in the results. This is the same as a frameshift at amino acid #6 - a segment of amino acids 1-5 will not align with BLASTX.