164 lines
13 KiB
C
164 lines
13 KiB
C
|
|
/*********************************************************************************************
|
|||
|
|
Description: Declarations of sw extend functions
|
|||
|
|
|
|||
|
|
Copyright : All right reserved by NCIC.ICT
|
|||
|
|
|
|||
|
|
Author : Zhang Zhonghai
|
|||
|
|
Date : 2023/08/23
|
|||
|
|
***********************************************************************************************/
|
|||
|
|
#ifndef __KSW_EXT_H
|
|||
|
|
#define __KSW_EXT_H
|
|||
|
|
#include <stdint.h>
|
|||
|
|
|
|||
|
|
typedef struct _thread_mem_t thread_mem_t;
|
|||
|
|
|
|||
|
|
// declaration of ksw functions
|
|||
|
|
|
|||
|
|
int ksw_extend_normal(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int m, // 碱基种类 (5)
|
|||
|
|
const int8_t *mat, // 每个位置的query和target的匹配得分 m*m
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int w, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int zdrop, // 如果比对过程中,太多mismatch,提前结束比对
|
|||
|
|
int h0, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2_u8(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2_heuristics(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2_u8_heuristics(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2_aligned(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
int ksw_extend_avx2_u8_aligned(thread_mem_t *tmem, // 内存池
|
|||
|
|
int qlen, // query length 待匹配段碱基的query长度
|
|||
|
|
const uint8_t *query, // read碱基序列
|
|||
|
|
int tlen, // target length reference的长度
|
|||
|
|
const uint8_t *target, // reference序列
|
|||
|
|
int extend_left, // 是不是向左扩展
|
|||
|
|
int o_del, // deletion 错配开始的惩罚系数
|
|||
|
|
int e_del, // deletion extension的惩罚系数
|
|||
|
|
int o_ins, // insertion 错配开始的惩罚系数
|
|||
|
|
int e_ins, // insertion extension的惩罚系数SIMD_BTYES
|
|||
|
|
int base_match_score, // 碱基match时的分数
|
|||
|
|
int base_mis_score, // 碱基mismatch时的惩罚分数(正数)
|
|||
|
|
int window_size, // 提前剪枝系数,w =100 匹配位置和beg的最大距离
|
|||
|
|
int end_bonus, // 如果query比对到了最后一个字符,额外奖励分值
|
|||
|
|
int init_score, // 该seed的初始得分(完全匹配query的碱基数)
|
|||
|
|
int *_qle, // 匹配得到全局最大得分的碱基在query的位置
|
|||
|
|
int *_tle, // 匹配得到全局最大得分的碱基在reference的位置
|
|||
|
|
int *_gtle, // query全部匹配上的target的长度
|
|||
|
|
int *_gscore, // query的端到端匹配得分
|
|||
|
|
int *_max_off); // 取得最大得分时在query和reference上位置差的 最大值
|
|||
|
|
|
|||
|
|
#endif
|