test.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:neurobind 作者: Kyubyong 项目源码 文件源码
def eval():
    # Load graph
    g = Graph(is_training=False); print("Graph loaded")

    # Load data
    X, Y = load_data(mode="test")
    nucl2idx, idx2nucl = load_vocab()

    with g.graph.as_default():
        sv = tf.train.Supervisor()
        with sv.managed_session(config=tf.ConfigProto(allow_soft_placement=True)) as sess:
            # Restore parameters
            sv.saver.restore(sess, tf.train.latest_checkpoint(hp.logdir)); print("Restored!")

            # Get model name
            mname = open(hp.logdir + '/checkpoint', 'r').read().split('"')[1]  # model name

            # Inference
            if not os.path.exists(hp.results): os.mkdir(hp.results)
            with open(os.path.join(hp.results, mname), 'w') as fout:
                fout.write("{}\t{}\t{}\n".format("probe", "expected intensity", "predicted intensity"))
                expected, predicted = [], []
                for step in range(len(X) // hp.batch_size):
                    x = X[step * hp.batch_size: (step + 1) * hp.batch_size]
                    y = Y[step * hp.batch_size: (step + 1) * hp.batch_size]

                    # predict intensities
                    logits = sess.run(g.logits, {g.x: x})

                    expected.extend(list(y))
                    predicted.extend(list(logits))

                    for xx, yy, ll in zip(x, y, logits):  # sequence-wise
                        fout.write("{}\t{}\t{}\n".format("".join(idx2nucl[idx] for idx in xx), yy, ll))

                # Get spearman coefficients
                score, _ = spearmanr(expected, predicted)
                fout.write("{}{}\n".format("Spearman Coefficient: ", score))

                # Plot the ranks of the top 100 positive probes
                expected_predicted = sorted(zip(expected, predicted), key=lambda x: float(x[0]), reverse=True)
                expected_predicted = [list(each) + [int(i < 100)] for i, each in enumerate(expected_predicted)]
                expected_predicted = sorted(expected_predicted, key=lambda x: float(x[1]), reverse=True)
                predicted_ranks = np.array([each[-1] for each in expected_predicted])

                # Plot
                axprops = dict(xticks=[], yticks=[])
                barprops = dict(aspect='auto', cmap=plt.cm.binary, interpolation='nearest')

                fig = plt.figure()

                predicted_ranks.shape = len(predicted_ranks), 1
                ax = fig.add_axes([0, 0, .5, 1], **axprops)
                ax.imshow(predicted_ranks, **barprops)
                fig.savefig('fig/rank.png')
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号