Timer unit: 1e-06 s
Total time: 1.75906 s
File: /users/avsec/workspace/basepair/basepair/BPNet.py
Function: sim_pred at line 810
Line # Hits Time Per Hit % Time Line Contents
==============================================================
810 def sim_pred(self, central_motif, side_motif=None, side_distances=[], repeat=128, importance=[]):
811 """
812 Args:
813 importance: list of importance scores
814 """
815 6 82.0 13.7 0.0 from basepair.exp.chipnexus.simulate import generate_seq, average_profiles, flatten
816 6 9.0 1.5 0.0 batch_size = repeat
817 6 12.0 2.0 0.0 seqlen = self.seqmodel.seqlen
818 6 9.0 1.5 0.0 tasks = self.seqmodel.tasks
819
820 # simulate sequence
821 6 14.0 2.3 0.0 seqs = encodeDNA([generate_seq(central_motif, side_motif=side_motif,
822 side_distances=side_distances, seqlen=seqlen)
823 6 853696.0 142282.7 48.5 for i in range(repeat)])
824
825 # get predictions
826 6 899545.0 149924.2 51.1 scaled_preds = self.predict(seqs, batch_size=batch_size)
827
828 6 21.0 3.5 0.0 if importance:
829 # get the importance scores (compute only the profile and counts importance)
830 imp_scores_all = self.seqmodel.imp_score_all(seqs, intp_pattern=['*/profile/wn', '*/counts/pre-act'])
831 imp_scores = {t: {self._get_old_imp_score_name(imp_score_name): seqs * imp_scores_all[f'{t}/{imp_score_name}']
832 for imp_score_name in importance}
833 for t in tasks}
834
835 # merge and aggregate the profiles
836 out = {"imp": imp_scores, "profile": scaled_preds}
837 else:
838 6 12.0 2.0 0.0 out = {"profile": scaled_preds}
839 6 5664.0 944.0 0.3 return average_profiles(flatten(out, "/"))