mirror of
https://github.com/chhylp123/hifiasm.git
synced 2026-10-10 04:30:55 +08:00
Reduce memory requirement
This commit is contained in:
@@ -2,29 +2,13 @@
|
||||
#define __KMER__
|
||||
#include "Process_Read.h"
|
||||
|
||||
#define ALL (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
|
||||
///#define ALL (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
|
||||
#define ALL (0xffffffffffffffff)
|
||||
|
||||
#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
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -44,6 +28,7 @@ typedef struct
|
||||
char* str;
|
||||
long long l;
|
||||
long long i;
|
||||
long long N_occ;
|
||||
|
||||
} HPC_seq;
|
||||
|
||||
@@ -53,17 +38,23 @@ inline uint64_t get_HPC_code(HPC_seq* seq)
|
||||
|
||||
if(seq->i < seq ->l)
|
||||
{
|
||||
char code = seq->str[seq->i];
|
||||
uint8_t code = seq_nt6_table[(uint8_t)seq->str[seq->i]];
|
||||
|
||||
for (; seq->i < seq->l; seq->i++)
|
||||
{
|
||||
if (seq->str[seq->i] != code)
|
||||
///统计N的个数
|
||||
if (seq_nt6_table[(uint8_t)seq->str[seq->i]] >= 4)
|
||||
{
|
||||
seq->N_occ++;
|
||||
}
|
||||
|
||||
if (seq_nt6_table[(uint8_t)seq->str[seq->i]] != code)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return (uint64_t)seq_nt6_table[(uint8_t)code];
|
||||
return (uint64_t)code;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user