NOTE: This question and answer concerns BLAST 2.2.25+... I do not know if any of this is valid for other versions of BLAST.
Answer to question #2:
My initial (main) problem was that the following blast+ command...
tblastn -query protein.fasta -db nucl.blastdb -out results.tblastnout -evalue 1 -outfmt 7 -num\_descriptions 100000
...did not give me the result that I was expecting.
Normally, in BLAST (whether the old or the new), you can say how many descriptions and alignments you want (depending on the version):
-v or -num_descriptions determine the number of descriptions that are output. By default these are 500.
-b or -num_alignments determine the number of alignments that are output. By default these are 250.
Indeed, with these default settings, and provided there are at least 500 hits, a blast will produce 500 descriptions and 250 alignments. This should imply that each argument is independent of the other.
When it comes to the tabular output formats (flag -outfmt 6 and above) the output is devoid of alignments. In BLAST+, the documentation even suggests that one should use the flag -max_target_seqs instead of -num_descriptions. This should imply that the flag -num_alignments has no impact on tabular format outputs.
Oddly enough, it seems that neither of these assumptions are true, when requesting tabular output formatting: although the num_alignment flag can be ignored for pairwise output, it will limit the num_descriptions output.
In order to retrieve the maximum number of hits in a tabular format, with BLAST+, one should use a command similar to the following:
tblastn -query protein.fasta -db nucl.blastdb -out results.tblastnout -evalue 1 -outfmt 7 -num\_descriptions 100000 -num\_alignments 100000
Why this would be the case beats me. I will ask the NCBI BLAST team and report back if I get an answer...
Update:
I have contacted the BLAST Help team, and received a reply. However, they only pointed to the use of -maxtargetseqs when using outfmt flags >4. I emailed back to point out that in version 2.2.25+, that this does not return the expected result. I'm still waiting to hear back from them...
So, for anybody having issues, I highly recommend to use the latest version of BLAST: 2.2.27+. I have verified: the use of the option "maxtargetseqs" works as expected!
Update 2:
No news from the BLAST Help team... I guess they don't like it when people point out bugs :(
Conclusion: USE THE LATEST VERSION ;)