sketchlib 0.2.4

Genome and amino-acid sketching
Documentation
// ntHash
// See https://bioinformatics.stackexchange.com/a/293
// doi: 10.1093/bioinformatics/btw397
pub const HASH_LOOKUP: [u64; 4] = [
    0x3c8bfbb395c60474,
    0x3193c18562a02b4c,
    0x295549f54be24456,
    0x20323ed082572324,
];
pub const RC_HASH_LOOKUP: [u64; 4] = [
    0x295549f54be24456,
    0x20323ed082572324,
    0x3c8bfbb395c60474,
    0x3193c18562a02b4c,
];

// This is A33R, C33R, T33R, G33R so can be indexed by nucleotide * 33
pub const MS_TAB_33R: [u64; 132] = [
    0x195c60474,
    0x12b8c08e9,
    0x571811d3,
    0xae3023a6,
    0x15c60474c,
    0xb8c08e99,
    0x171811d32,
    0xe3023a65,
    0x1c60474ca,
    0x18c08e995,
    0x11811d32b,
    0x3023a657,
    0x60474cae,
    0xc08e995c,
    0x1811d32b8,
    0x1023a6571,
    0x474cae3,
    0x8e995c6,
    0x11d32b8c,
    0x23a65718,
    0x474cae30,
    0x8e995c60,
    0x11d32b8c0,
    0x3a657181,
    0x74cae302,
    0xe995c604,
    0x1d32b8c08,
    0x1a6571811,
    0x14cae3023,
    0x995c6047,
    0x132b8c08e,
    0x6571811d,
    0xcae3023a,
    0x162a02b4c,
    0xc5405699,
    0x18a80ad32,
    0x115015a65,
    0x2a02b4cb,
    0x54056996,
    0xa80ad32c,
    0x15015a658,
    0xa02b4cb1,
    0x140569962,
    0x80ad32c5,
    0x1015a658a,
    0x2b4cb15,
    0x569962a,
    0xad32c54,
    0x15a658a8,
    0x2b4cb150,
    0x569962a0,
    0xad32c540,
    0x15a658a80,
    0xb4cb1501,
    0x169962a02,
    0xd32c5405,
    0x1a658a80a,
    0x14cb15015,
    0x9962a02b,
    0x132c54056,
    0x658a80ad,
    0xcb15015a,
    0x1962a02b4,
    0x12c540569,
    0x58a80ad3,
    0xb15015a6,
    0x14be24456,
    0x97c488ad,
    0x12f89115a,
    0x5f1222b5,
    0xbe24456a,
    0x17c488ad4,
    0xf89115a9,
    0x1f1222b52,
    0x1e24456a5,
    0x1c488ad4b,
    0x189115a97,
    0x11222b52f,
    0x24456a5f,
    0x488ad4be,
    0x9115a97c,
    0x1222b52f8,
    0x4456a5f1,
    0x88ad4be2,
    0x1115a97c4,
    0x22b52f89,
    0x456a5f12,
    0x8ad4be24,
    0x115a97c48,
    0x2b52f891,
    0x56a5f122,
    0xad4be244,
    0x15a97c488,
    0xb52f8911,
    0x16a5f1222,
    0xd4be2445,
    0x1a97c488a,
    0x152f89115,
    0xa5f1222b,
    0x82572324,
    0x104ae4648,
    0x95c8c91,
    0x12b91922,
    0x25723244,
    0x4ae46488,
    0x95c8c910,
    0x12b919220,
    0x57232441,
    0xae464882,
    0x15c8c9104,
    0xb9192209,
    0x172324412,
    0xe4648825,
    0x1c8c9104a,
    0x191922095,
    0x12324412b,
    0x46488257,
    0x8c9104ae,
    0x11922095c,
    0x324412b9,
    0x64882572,
    0xc9104ae4,
    0x1922095c8,
    0x124412b91,
    0x48825723,
    0x9104ae46,
    0x122095c8c,
    0x4412b919,
    0x88257232,
    0x1104ae464,
    0x2095c8c9,
    0x412b9192,
];

// This is A31R, C31R, T31R, G31R so can be indexed by nucleotide * 31
pub const MS_TAB_31L: [u64; 124] = [
    0x3c8bfbb200000000,
    0x7917f76400000000,
    0xf22feec800000000,
    0xe45fdd9200000000,
    0xc8bfbb2600000000,
    0x917f764e00000000,
    0x22feec9e00000000,
    0x45fdd93c00000000,
    0x8bfbb27800000000,
    0x17f764f200000000,
    0x2feec9e400000000,
    0x5fdd93c800000000,
    0xbfbb279000000000,
    0x7f764f2200000000,
    0xfeec9e4400000000,
    0xfdd93c8a00000000,
    0xfbb2791600000000,
    0xf764f22e00000000,
    0xeec9e45e00000000,
    0xdd93c8be00000000,
    0xbb27917e00000000,
    0x764f22fe00000000,
    0xec9e45fc00000000,
    0xd93c8bfa00000000,
    0xb27917f600000000,
    0x64f22fee00000000,
    0xc9e45fdc00000000,
    0x93c8bfba00000000,
    0x27917f7600000000,
    0x4f22feec00000000,
    0x9e45fdd800000000,
    0x3193c18400000000,
    0x6327830800000000,
    0xc64f061000000000,
    0x8c9e0c2200000000,
    0x193c184600000000,
    0x3278308c00000000,
    0x64f0611800000000,
    0xc9e0c23000000000,
    0x93c1846200000000,
    0x278308c600000000,
    0x4f06118c00000000,
    0x9e0c231800000000,
    0x3c18463200000000,
    0x78308c6400000000,
    0xf06118c800000000,
    0xe0c2319200000000,
    0xc184632600000000,
    0x8308c64e00000000,
    0x6118c9e00000000,
    0xc23193c00000000,
    0x1846327800000000,
    0x308c64f000000000,
    0x6118c9e000000000,
    0xc23193c000000000,
    0x8463278200000000,
    0x8c64f0600000000,
    0x118c9e0c00000000,
    0x23193c1800000000,
    0x4632783000000000,
    0x8c64f06000000000,
    0x18c9e0c200000000,
    0x295549f400000000,
    0x52aa93e800000000,
    0xa55527d000000000,
    0x4aaa4fa200000000,
    0x95549f4400000000,
    0x2aa93e8a00000000,
    0x55527d1400000000,
    0xaaa4fa2800000000,
    0x5549f45200000000,
    0xaa93e8a400000000,
    0x5527d14a00000000,
    0xaa4fa29400000000,
    0x549f452a00000000,
    0xa93e8a5400000000,
    0x527d14aa00000000,
    0xa4fa295400000000,
    0x49f452aa00000000,
    0x93e8a55400000000,
    0x27d14aaa00000000,
    0x4fa2955400000000,
    0x9f452aa800000000,
    0x3e8a555200000000,
    0x7d14aaa400000000,
    0xfa29554800000000,
    0xf452aa9200000000,
    0xe8a5552600000000,
    0xd14aaa4e00000000,
    0xa295549e00000000,
    0x452aa93e00000000,
    0x8a55527c00000000,
    0x14aaa4fa00000000,
    0x20323ed000000000,
    0x40647da000000000,
    0x80c8fb4000000000,
    0x191f68200000000,
    0x323ed0400000000,
    0x647da0800000000,
    0xc8fb41000000000,
    0x191f682000000000,
    0x323ed04000000000,
    0x647da08000000000,
    0xc8fb410000000000,
    0x91f6820200000000,
    0x23ed040600000000,
    0x47da080c00000000,
    0x8fb4101800000000,
    0x1f68203200000000,
    0x3ed0406400000000,
    0x7da080c800000000,
    0xfb41019000000000,
    0xf682032200000000,
    0xed04064600000000,
    0xda080c8e00000000,
    0xb410191e00000000,
    0x6820323e00000000,
    0xd040647c00000000,
    0xa080c8fa00000000,
    0x410191f600000000,
    0x820323ec00000000,
    0x40647da00000000,
    0x80c8fb400000000,
    0x10191f6800000000,
];

/*
const A33R: [u64; 33] = [
    0x195c60474, 0x12b8c08e9, 0x571811d3, 0xae3023a6, 0x15c60474c, 0xb8c08e99, 0x171811d32, 0xe3023a65, 0x1c60474ca, 0x18c08e995, 0x11811d32b, 0x3023a657, 0x60474cae, 0xc08e995c, 0x1811d32b8, 0x1023a6571, 0x474cae3, 0x8e995c6, 0x11d32b8c, 0x23a65718, 0x474cae30, 0x8e995c60, 0x11d32b8c0, 0x3a657181, 0x74cae302, 0xe995c604, 0x1d32b8c08, 0x1a6571811, 0x14cae3023, 0x995c6047, 0x132b8c08e, 0x6571811d, 0xcae3023a];

const A31L: [u64; 31] = [
    0x3c8bfbb200000000, 0x7917f76400000000, 0xf22feec800000000, 0xe45fdd9200000000, 0xc8bfbb2600000000, 0x917f764e00000000, 0x22feec9e00000000, 0x45fdd93c00000000, 0x8bfbb27800000000, 0x17f764f200000000, 0x2feec9e400000000, 0x5fdd93c800000000, 0xbfbb279000000000, 0x7f764f2200000000, 0xfeec9e4400000000, 0xfdd93c8a00000000, 0xfbb2791600000000, 0xf764f22e00000000, 0xeec9e45e00000000, 0xdd93c8be00000000, 0xbb27917e00000000, 0x764f22fe00000000, 0xec9e45fc00000000, 0xd93c8bfa00000000, 0xb27917f600000000, 0x64f22fee00000000, 0xc9e45fdc00000000, 0x93c8bfba00000000, 0x27917f7600000000, 0x4f22feec00000000, 0x9e45fdd800000000];

const C33R: [u64; 33] = [
    0x162a02b4c, 0xc5405699, 0x18a80ad32, 0x115015a65, 0x2a02b4cb, 0x54056996, 0xa80ad32c, 0x15015a658, 0xa02b4cb1, 0x140569962, 0x80ad32c5, 0x1015a658a, 0x2b4cb15, 0x569962a, 0xad32c54, 0x15a658a8, 0x2b4cb150, 0x569962a0, 0xad32c540, 0x15a658a80, 0xb4cb1501, 0x169962a02, 0xd32c5405, 0x1a658a80a, 0x14cb15015, 0x9962a02b, 0x132c54056, 0x658a80ad, 0xcb15015a, 0x1962a02b4, 0x12c540569, 0x58a80ad3, 0xb15015a6];

const C31L: [u64; 31] = [
    0x3193c18400000000, 0x6327830800000000, 0xc64f061000000000, 0x8c9e0c2200000000, 0x193c184600000000, 0x3278308c00000000, 0x64f0611800000000, 0xc9e0c23000000000, 0x93c1846200000000, 0x278308c600000000, 0x4f06118c00000000, 0x9e0c231800000000, 0x3c18463200000000, 0x78308c6400000000, 0xf06118c800000000, 0xe0c2319200000000, 0xc184632600000000, 0x8308c64e00000000, 0x6118c9e00000000, 0xc23193c00000000, 0x1846327800000000, 0x308c64f000000000, 0x6118c9e000000000, 0xc23193c000000000, 0x8463278200000000, 0x8c64f0600000000, 0x118c9e0c00000000, 0x23193c1800000000, 0x4632783000000000, 0x8c64f06000000000, 0x18c9e0c200000000];

const G33R: [u64; 33] = [
    0x82572324, 0x104ae4648, 0x95c8c91, 0x12b91922, 0x25723244, 0x4ae46488, 0x95c8c910, 0x12b919220, 0x57232441, 0xae464882, 0x15c8c9104, 0xb9192209, 0x172324412, 0xe4648825, 0x1c8c9104a, 0x191922095, 0x12324412b, 0x46488257, 0x8c9104ae, 0x11922095c, 0x324412b9, 0x64882572, 0xc9104ae4, 0x1922095c8, 0x124412b91, 0x48825723, 0x9104ae46, 0x122095c8c, 0x4412b919, 0x88257232, 0x1104ae464, 0x2095c8c9, 0x412b9192];

const G31L: [u64; 31] = [
    0x20323ed000000000, 0x40647da000000000, 0x80c8fb4000000000, 0x191f68200000000, 0x323ed0400000000, 0x647da0800000000, 0xc8fb41000000000, 0x191f682000000000, 0x323ed04000000000, 0x647da08000000000, 0xc8fb410000000000, 0x91f6820200000000, 0x23ed040600000000, 0x47da080c00000000, 0x8fb4101800000000, 0x1f68203200000000, 0x3ed0406400000000, 0x7da080c800000000, 0xfb41019000000000, 0xf682032200000000, 0xed04064600000000, 0xda080c8e00000000, 0xb410191e00000000, 0x6820323e00000000, 0xd040647c00000000, 0xa080c8fa00000000, 0x410191f600000000, 0x820323ec00000000, 0x40647da00000000, 0x80c8fb400000000, 0x10191f6800000000];

const T33R: [u64; 33] = [
    0x14be24456, 0x97c488ad, 0x12f89115a, 0x5f1222b5, 0xbe24456a, 0x17c488ad4, 0xf89115a9, 0x1f1222b52, 0x1e24456a5, 0x1c488ad4b, 0x189115a97, 0x11222b52f, 0x24456a5f, 0x488ad4be, 0x9115a97c, 0x1222b52f8, 0x4456a5f1, 0x88ad4be2, 0x1115a97c4, 0x22b52f89, 0x456a5f12, 0x8ad4be24, 0x115a97c48, 0x2b52f891, 0x56a5f122, 0xad4be244, 0x15a97c488, 0xb52f8911, 0x16a5f1222, 0xd4be2445, 0x1a97c488a, 0x152f89115, 0xa5f1222b];

const T31L: [u64; 31] = [
    0x295549f400000000, 0x52aa93e800000000, 0xa55527d000000000, 0x4aaa4fa200000000, 0x95549f4400000000, 0x2aa93e8a00000000, 0x55527d1400000000, 0xaaa4fa2800000000, 0x5549f45200000000, 0xaa93e8a400000000, 0x5527d14a00000000, 0xaa4fa29400000000, 0x549f452a00000000, 0xa93e8a5400000000, 0x527d14aa00000000, 0xa4fa295400000000, 0x49f452aa00000000, 0x93e8a55400000000, 0x27d14aaa00000000, 0x4fa2955400000000, 0x9f452aa800000000, 0x3e8a555200000000, 0x7d14aaa400000000, 0xfa29554800000000, 0xf452aa9200000000, 0xe8a5552600000000, 0xd14aaa4e00000000, 0xa295549e00000000, 0x452aa93e00000000, 0x8a55527c00000000, 0x14aaa4fa00000000];
*/