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 |