Beispiel #1
0
def res_dl_process(args):
    # 深度学习参数字典
    params_dict = args.params_dict_list[0]
    # 读取base文件向量,对向量矩阵和序列长度数组进行处理
    vec_mat, fixed_seq_len_list = read_base_mat4res(args.fea_file,
                                                    args.fixed_len)

    # 不同于SVM/RF, 深度学习
    if args.ind_vec_file is None:
        # 在参数便利前进行一系列准备工作: 1. 固定划分;2.设定指标;3.指定任务类型
        args = prepare4train_res(args, args.res_labels_list, dl=False)

        res_dcp(args.ml, vec_mat, args.res_labels_list, fixed_seq_len_list,
                args.fixed_len, args.folds, args.results_dir, params_dict)
    else:
        ind_res_dl_fe_process(args, vec_mat, args.res_labels_list,
                              fixed_seq_len_list, params_dict)
Beispiel #2
0
def res_crf_fe_process(args):
    # 深度学习参数字典
    params_dict = args.params_dict_list[0]
    # 读取base文件向量,对向量矩阵和序列长度数组进行处理
    vec_mat, fixed_seq_len_list = read_base_mat4res(args.fea_file, args.fixed_len)

    # 这一步将所有残基的标签转换为固定长度,需要在评测时注意
    res_label_mat = res_dl_label_read(args.res_labels_list, args.fixed_len)

    # 不同于SVM/RF, 深度学习
    if args.ind_seq_file is None:
        # 在参数便利前进行一系列准备工作: 1. 固定划分;2.设定指标;3.指定任务类型
        args = prepare4train_res(args, args.res_labels_list, dl=True)

        crf_cv_process(vec_mat, res_label_mat, fixed_seq_len_list, args.folds, args.results_dir, params_dict)
    else:
        ind_res_crf_fe_process(args, vec_mat, res_label_mat, params_dict)
Beispiel #3
0
def res_cl_process(args):
    # 读取特征向量文件
    vectors, sp_num_list = files2vectors_res(args.vec_file, args.format)
    # 根据不同标签样本数目生成标签数组
    label_array = res_label_read(sp_num_list, args.label)
    # ** 残基层面特征提取和标签数组生成完毕 ** #

    # 在参数便利前进行一系列准备工作: 1. 固定划分;2.设定指标;3.指定任务类型
    args = prepare4train_res(args, label_array, dl=False)

    # ** 通过遍历SVM/RF参数字典列表来筛选参数 ** #
    # SVM/RF参数字典
    params_dict_list = args.params_dict_list
    # 多进程控制
    pool = multiprocessing.Pool(args.cpu)
    params_dict_list_pro = []
    for i in range(len(params_dict_list)):
        params_dict = params_dict_list[i]
        params_dict_list_pro.append(
            pool.apply_async(
                one_cl_process,
                (args, vectors, label_array, args.folds, params_dict)))

    pool.close()
    pool.join()
    # ** 筛选结束 ** #

    # 根据指标进行参数选择
    params_selected = params_select(params_dict_list_pro, args.results_dir)

    # 构建分类器
    ml_cv_results(args.ml, vectors, label_array, args.folds, args.sp,
                  args.multi, args.res, args.results_dir, params_selected)

    # -------- 独立测试-------- #
    # 即,将独立测试数据集在最优的model上进行测试
    if args.ind_vec_file is not None:
        # 读取特征向量文件
        ind_vectors, ind_sp_num_list = files2vectors_res(
            args.ind_vec_file, args.format)
        # 根据不同标签样本数目生成标签数组
        ind_label_array = res_label_read(ind_sp_num_list, args.label)
        # ** 残基层面特征提取和标签数组生成完毕 ** #
        ml_ind_results(args.ml, ind_vectors, ind_label_array, args.multi,
                       args.res, args.results_dir, params_selected)
Beispiel #4
0
def res_cl_fe_process(args, fragment):
    # ** 残基层面特征提取和标签数组生成开始 ** #
    # 为存储SVM和RF输入特征的文件命名
    out_files = out_res_file(args.label, args.results_dir, args.format, args.fragment, ind=False)
    # 读取base特征文件, 待写入
    vectors_list = read_base_vec_list4res(args.fea_file)
    # fragment判断,生成对应的特征向量
    if fragment == 0:
        assert args.window is not None, "If -fragment is 0, lease set window size!"
        # 在fragment=0时,通过滑窗技巧为每个残基生成特征
        sliding_win2files(vectors_list, args.res_labels_list, args.window, args.format, out_files)
    else:
        # 在fragment=1时, 将每个残基片段的base特征进行flatten
        mat_list2frag_array(vectors_list, args.res_labels_list, args.fixed_len, args.format, out_files)
    # 读取特征向量文件
    vectors, sp_num_list = files2vectors_res(out_files, args.format)
    # 根据不同标签样本数目生成标签数组
    label_array = res_label_read(sp_num_list, args.label)
    # ** 残基层面特征提取和标签数组生成完毕 ** #

    # 在参数便利前进行一系列准备工作: 1. 固定划分;2.设定指标;3.指定任务类型
    args = prepare4train_res(args, label_array, dl=False)

    args.res = True

    # ** 通过遍历SVM/RF参数字典列表来筛选参数 ** #
    # SVM/RF参数字典
    params_dict_list = args.params_dict_list
    # 多进程控制
    pool = multiprocessing.Pool(args.cpu)
    params_dict_list_pro = []
    print('\n')
    print('Parameter Selection Processing...')
    print('\n')
    for i in range(len(params_dict_list)):
        params_dict = params_dict_list[i]
        params_dict_list_pro.append(pool.apply_async(one_cl_process, (args, vectors, label_array, args.folds,
                                                                      params_dict)))

    pool.close()
    pool.join()
    # ** 筛选结束 ** #

    # 根据指标进行参数选择
    params_selected = params_select(params_dict_list_pro, args.results_dir)

    # 特征分析
    print(' Shape of Feature vectors: [%d, %d] '.center(66, '*') % (vectors.shape[0], vectors.shape[1]))
    print('\n')
    if args.score == 'none':
        vectors = fa_process(args, vectors, label_array, after_ps=True)
        print(' Shape of Feature vectors after FA process: [%d, %d] '.center(66, '*') % (vectors.shape[0],
                                                                                         vectors.shape[1]))

    # 构建分类器
    ml_cv_results(args.ml, vectors, label_array, args.folds, args.sp, args.multi, args.res, args.results_dir,
                  params_selected)

    # -------- 独立测试-------- #
    # 即,将独立测试数据集在最优的model上进行测试
    if args.ind_seq_file is not None:
        res_ind_cl_fe_process(args, params_selected)