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 predict(model, mirnas, threeutrs, use_filter=True): """ given the lists of pairs of mirnas and threeutrs predict their functionality :param model : the nn to use for prediction :param mirnas: numpy array of the mirna to check :param threeutrs: numpy array of genes :param use_filter: whether to use site accessibility filter or not :return: the list of predictions """ preds = [0] * len(mirnas) label_encoder, one_hot_encoder = vec.init_encoders() for mirna, threeutr, idx in zip(tqdm(mirnas), threeutrs, range(len(mirnas))): pred = predict_pair(model, mirna, threeutr, label_encoder, one_hot_encoder, use_filter=use_filter) preds[idx] = pred return preds
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)