mirror of
https://github.com/chhylp123/hifiasm.git
synced 2026-10-11 01:10:56 +08:00
Finish multiple thread counting
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
#ifndef __KMER__
|
||||
#define __KMER__
|
||||
#include "Process_Read.h"
|
||||
|
||||
#define ALL (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
|
||||
|
||||
#define SAFE_SHIFT(k) k & ((k < 64)?ALL:0)
|
||||
|
||||
|
||||
static unsigned char seq_nt6_table[256] = {
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 0, 5, 1, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 0, 5, 1, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
|
||||
};
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
///最大64-mer
|
||||
///x[0]低位
|
||||
///x[1]高位
|
||||
uint64_t x[2];
|
||||
|
||||
} Hash_code;
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char* str;
|
||||
long long l;
|
||||
long long i;
|
||||
|
||||
} HPC_seq;
|
||||
|
||||
|
||||
inline uint64_t get_HPC_code(HPC_seq* seq)
|
||||
{
|
||||
|
||||
if(seq->i < seq ->l)
|
||||
{
|
||||
char code = seq->str[seq->i];
|
||||
|
||||
for (; seq->i < seq->l; seq->i++)
|
||||
{
|
||||
if (seq->str[seq->i] != code)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (uint64_t)seq_nt6_table[(uint8_t)code];
|
||||
}
|
||||
else
|
||||
{
|
||||
///end
|
||||
return 6;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
inline void k_mer_append(Hash_code* code, uint64_t c, int k)
|
||||
{
|
||||
|
||||
uint64_t mask = ALL >> (64 -k);
|
||||
|
||||
code->x[0] = ((code->x[0]<<1) | (c&1)) & mask;
|
||||
code->x[1] = ((code->x[1]<<1) | (c>>1)) & mask;
|
||||
}
|
||||
|
||||
void init_HPC_seq(HPC_seq* seq, char* str, long long l);
|
||||
void init_Hash_code(Hash_code* code);
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user