I would like to know exactly, in which aspect blastx and tblasn varies?
As per my understanding, blastx `convert nucleotide to protein and compare with the query protein sequences`
where as, tblastn also does the same thing but, here the query is nucleotide `convert nucleotide to protein and compare with subject protein sequences` Hence, both are doing the same, then what is the difference between these two process?.
Please let me know the difference and why do we use `tblastn` over `blastx` for evolutionary analysis.
Thank you in advance.
You have mixed-up your query sequences.

Blastx is used when you want to compare a nucleotide sequence to a protein DB. but as we can not compare nucleotides and protein to each other directly the nucleotide sequence is translated (in all 6 frames, this is important !)  and then an amino-acid vs aminoacid comparison is done.

For tBlastn, it's the reverse, here you want to compare a protein sequence to a nucleotide DB, and for the same reason as above , the would DB in this case is translated in all 6 frames, to allow protein to protein comparisons.

One could simplify it as: in tblastn, you know what the protein should be like and you want to search for nucleotide sequences where that protein might be similar to. For blastx , you have no idea where or which protein might be present on it so you screen that to a protein DB to look for potential matches of known proteins.

There is no reason why one would prefer one over the other in evolutionary analysis. The only thing is that it's often more convenient to use a protein as query if you want to screen for absence or presence of a certain gene. Moreover evolutionary analyses most often are done on protein level so it's more likely that you want to look for potential other proteins based on a protein you have as query.
