I want to predict which proteins or DNA or RNA might interact with a given protein. However mostly whatever I find is that databases like StringDB etc actually list the already known interacting partners based on pubmed text mining. One trivial way to go is that make a blast search with already known interacting protein or specific domain in order to find out something similar partners or to look at the domains the protein contain and with which proteins these domains interact. However this mostly gives results whch are already known. Is there any more sophistaced way of doing it by machine learning or evolutionary algorithms? Or I should rely on PSI-BLAST for distant homologies?