-
Notifications
You must be signed in to change notification settings - Fork 295
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Storing reversible hashes for k>32 #1442
Comments
Another idea discussed was using the 128 bit integer implementation ( Pros:
Cons:
Probably not the best idea in the long term, but worth bringing up. |
Some experiments in this gist. This uses a int128 and int256 implementation I found by googling. They were useful to quickly get started. Having 33-mers seems to "just work" if you have a bigger int type available. The second thing I investigated is how to transport these big integers into python land. Python's integer type has no limit and you can create them from an array of bytes After this digging around I think implementing the big-ints with a byte array instead of a pair of smaller integers is the way to go given we need to make those arrays for going to/from python. |
My only worry about using a byte array is that it might be slower?? I will make a small benchmark pitting the uint128_t from the gist against one based on an array to answer that. Other remark: |
blinks Well, this looks pretty awesome... What's the performance hit? |
I don't know yet ;) but I might have just achieved one of the tests passing after switching |
in #1519 and friends => too slow. #wontfix |
(#1511 added irreversible hashing for k > 32) |
Place for thoughts and progress on representing reversible hash values of (arbitrarily) large k-mers.
This is one of the things needed for #1441.
First idea from @camillescott is to switch from using a single
int64
to a struct of integers.The text was updated successfully, but these errors were encountered: