input_encoders_numba.py 文件源码

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

项目:LSTM-and-maxlayer-for-SNV-based-phenotype-prediction 作者: widmi 项目源码 文件源码
def encode_overlapping_binary_inplace_jit(ticker_steps, n_inputnodes, nr_samples, lengths, out, out_uint):
    # out: float32[:,:,:] with [samples, timesteps, features]
    # pos_ind: int64 at which position in out['features'] the position
    #    is stored and encoding should start
    # lengths: lengths without tickersteps - tickersteps will be added here
    # Note: positions=0 are ignored
    mask = 1
    pos_bit = n_inputnodes
    if ticker_steps > 0:
        n_inputnodes -= 1
    n_bits = (n_inputnodes / 2) + 1 #lowbit only in binary

    for s_i in range(nr_samples):

        # Enocde position
        for t_i in range(lengths[s_i]):
            orig_int = out_uint[s_i, t_i, -pos_bit] #to be encoded

            # normal bitwise for all bits
            for n_i in range(n_bits):
                out[s_i, t_i, n_i-n_inputnodes] = ((mask << n_i) & orig_int) != 0

            # overlapping bitwise (low bit ignored)
            for n_i in range(1, n_bits):
                # for bit at bitposition bp add 2**(bp-1) = 1<<(bp-1)
                out[s_i, t_i, n_i-n_bits] = ((mask << n_i) & (orig_int + (mask << (n_i-1)))) != 0

            out[s_i, t_i, -pos_bit] = 0 #remove position


        # Set ticker steps, if they exist
        if ticker_steps > 0:
            for n_i in range(ticker_steps):
                out[s_i, lengths[s_i]+n_i, -pos_bit] = 1
            # add ticker steps to lenght
            lengths[s_i] += n_i # := lengths[s_i] += lengths[s_i-1 for index of last element instead of length
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号