/********************************************************************************************* 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 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