def _compute_score(model, mirna_transcript, candidate_site, label_encoder, one_hot_encoder): """ predict the score of the duplex passed as argument :param model: the trained neural network model :param label_encoder: the label encoder to use :param one_hot_encoder: one_hot encoder object to use :param mirna_transcript: the mirna transcript sequence :param candidate_site: the candidate mbs sequence :return: the score according to the model """ # reshape data nn_input = np.concatenate( (vec.one_hot_encode_sequence(mirna_transcript, label_encoder, one_hot_encoder), vec.one_hot_encode_sequence(candidate_site, label_encoder, one_hot_encoder, mirna=False))) nn_input = np.expand_dims(nn_input, axis=0) # predict output score = model.predict(nn_input) return score
def test_one_hot_encode_sequence_site_len(): # check site enc0, enc1 = init_encoders() assert len(one_hot_encode_sequence('A' * 40, enc0, enc1, mirna=False)) == 160 with pytest.raises(SystemExit): one_hot_encode_sequence('A' * 41, enc0, enc1, mirna=False)
def test_one_hot_encode_sequence_mirna_len(): # check mirnas enc0, enc1 = init_encoders() assert len(one_hot_encode_sequence('', enc0, enc1)) == 120 assert len(one_hot_encode_sequence('U' * 25, enc0, enc1)) == 120 with pytest.raises(SystemExit): one_hot_encode_sequence('U' * 31, enc0, enc1)
def test_one_hot_encode_sequence_site_wellformed(): # must not raise exception enc0, enc1 = init_encoders() raised = False try: one_hot_encode_sequence('A' * 40, enc0, enc1, mirna=False) except SystemExit: raised = True assert raised == False
def test_one_hot_encode_sequence_site_badformed(): enc0, enc1 = init_encoders() with pytest.raises(SystemExit): one_hot_encode_sequence('H' * 40, enc0, enc1, mirna=False)
def test_one_hot_encode_sequence_mirna_badformed(): enc0, enc1 = init_encoders() with pytest.raises(SystemExit): one_hot_encode_sequence('H' * 20, enc0, enc1)