This commit is contained in:
Zengtudor 2024-09-27 23:50:16 +08:00
parent 14c9711253
commit a68a322885

View File

@ -6,11 +6,6 @@
namespace py = pybind11; namespace py = pybind11;
#endif #endif
//注意这个函数会被并行执行请只访问begin<=i<end之间的内容以免出现数据竞争导致程序异常
void reverseComplement(char *begin, char *end)
{
//注意end是开区间不能访问end
static const std::unordered_map<char, char> complement = { //这里使用查表的方式大大提高CPU速度因为if分支CPU不容易命中缓存需要使用查表加速 static const std::unordered_map<char, char> complement = { //这里使用查表的方式大大提高CPU速度因为if分支CPU不容易命中缓存需要使用查表加速
{'A', 'T'}, {'a', 'T'}, {'A', 'T'}, {'a', 'T'},
{'T', 'A'}, {'t', 'A'}, {'T', 'A'}, {'t', 'A'},
@ -18,6 +13,11 @@ void reverseComplement(char *begin, char *end)
{'G', 'C'}, {'g', 'C'} {'G', 'C'}, {'g', 'C'}
}; };
//注意这个函数会被并行执行请只访问begin<=i<end之间的内容以免出现数据竞争导致程序异常
void reverseComplement(char *begin, char *end)
{
//注意end是开区间不能访问end
std::reverse(begin, end); //翻转DNA序列 std::reverse(begin, end); //翻转DNA序列
for (ptrdiff_t i = 0; i < (end - begin); ++i) { for (ptrdiff_t i = 0; i < (end - begin); ++i) {