| set evalue_all, evalue_small, evalue_reblast, DBD_domains |
| open transcription_factors as input |
| small_proteins_database, all_proteins_database, transcription_factors_database ← initialize BLAST reference databases |
| putative_miPs new list |
| for transcription_factor in transcription_factors do |
| TF_domains InterproScan(transcription_factor) |
| subjects_all BLAST transcription_factor against all_proteins_database |
| for subject in subjects_all do |
| if length(subject) ≤ 550 and length(subject) ≤ 1.1 length(transcription_factor) and evalue of subject ≤ evalue_all then |
| subject_domains ← InterproScan(subject) |
| if subject_domains not in DBD_domains and length(subject_domains) < length(TF_domains) |
| and length(intersection(subject_domains with TF_fomains)) ≥ 1 then |
| putative_miPs.append(subject) |
| end if |
| end if |
| end for |
| subjects_small ← BLAST transcription_factors against small_protein_database |
| for subject in subjects_small do |
| if length(subject) ≤ 1.1 length(transcription_factor) and evalue of subject ≤ evalue_small then |
| blast_results ← BLAST subject against transcription_factors_database |
| if transcription_factor in blast_results and evalue of transcription_factor ≤ evalue_reblast then |
| subject_domains ← InterproScan(subject) |
| if subject_domains not in DBD_domains and length(subject_domains) < length(TF_domains) |
| and length(intersection(subject_domains with TF_fomains)) ≥ 1 then |
| putative_miPs.append(subject) |
| end if |
| end if |
| end if |
| end for |
| end for |
| return putative_miPs |