Compare commits
No commits in common. "c6706c04de71094f444abd4c54e13526a2ab0ffd" and "b45780c0cb3b70ce0b29021c5b67a2c39d4f2114" have entirely different histories.
c6706c04de
...
b45780c0cb
@ -1,5 +0,0 @@
|
|||||||
import dna
|
|
||||||
|
|
||||||
help(dna)
|
|
||||||
|
|
||||||
dna.dna_reverse("filteredReads.txt","reversedSequence.txt")
|
|
41
src/main.cpp
41
src/main.cpp
@ -1,12 +1,5 @@
|
|||||||
#include "dna.hpp"
|
#include "dna.hpp"
|
||||||
|
|
||||||
#ifdef DNA_IS_PYBIND
|
|
||||||
#include <pybind11/pybind11.h>
|
|
||||||
// #include <pybind11/stl_bind.h>
|
|
||||||
namespace py = pybind11;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//注意,这个函数会被并行执行,请只访问begin<=i<end之间的内容,以免出现数据竞争导致程序异常
|
//注意,这个函数会被并行执行,请只访问begin<=i<end之间的内容,以免出现数据竞争导致程序异常
|
||||||
void reverseComplement(char *begin, char *end)
|
void reverseComplement(char *begin, char *end)
|
||||||
{
|
{
|
||||||
@ -21,7 +14,7 @@ void reverseComplement(char *begin, char *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) {
|
||||||
// static int _ = (zt::print(NAME_VALUE(omp_get_num_threads()),"\n"),0); // 打印线程数量
|
static int _ = (zt::print(NAME_VALUE(omp_get_num_threads()),"\n"),0); // 打印线程数量
|
||||||
auto it = complement.find(begin[i]);
|
auto it = complement.find(begin[i]);
|
||||||
if (it != complement.end()) {
|
if (it != complement.end()) {
|
||||||
begin[i] = it->second;
|
begin[i] = it->second;
|
||||||
@ -29,7 +22,6 @@ void reverseComplement(char *begin, char *end)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef DNA_IS_PYBIND
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
@ -54,34 +46,3 @@ int main()
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
void bind_func(std::string input_file_name,std::string out_put_file_name){
|
|
||||||
try{
|
|
||||||
dna::open_file_and_calculate<(size_t)4*1024 * 1024 *1024 , (size_t)5e4+5>(input_file_name, out_put_file_name,reverseComplement);
|
|
||||||
// dna::open_file_and_calculate<(size_t)1 * 1024 *1024 , (size_t)5e4+5>(input_file_name, out_put_file_name,reverseComplement);
|
|
||||||
}catch(const std::exception &e){
|
|
||||||
zt::eprint(
|
|
||||||
"Caught an error because:\n",
|
|
||||||
"\t",NAME_VALUE(e.what()),"\n"
|
|
||||||
"Closing\n"
|
|
||||||
);
|
|
||||||
throw e;
|
|
||||||
}catch(...){
|
|
||||||
zt::eprint(
|
|
||||||
"Caught an unknown error :\n",
|
|
||||||
"Closing\n"
|
|
||||||
);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
PYBIND11_MODULE(dna, m){
|
|
||||||
m.doc() = "DNASequence processing functions"; // optional module docstring
|
|
||||||
|
|
||||||
m.def("dna_reverse", &bind_func, "DNA is double-stranded and complementary to each other, and when sequencing a DNA sample you can't be sure which strand is being measured, so the complementary strands of all the DNA fragments are counted and assembled together with the original file."
|
|
||||||
,py::arg("input_file_path"),py::arg("output_file_path"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
17
xmake.lua
17
xmake.lua
@ -1,8 +1,6 @@
|
|||||||
add_rules("mode.debug","mode.release")
|
add_rules("mode.debug","mode.release")
|
||||||
set_languages("c++23")
|
set_languages("c++23")
|
||||||
|
|
||||||
add_requires("pybind11")
|
|
||||||
|
|
||||||
if is_mode("release")then
|
if is_mode("release")then
|
||||||
set_optimize("aggressive") --这里使用了激进的优化,可能会导致浮点数计算不准确,考虑到本项目没有浮点计算,酌情考虑开启
|
set_optimize("aggressive") --这里使用了激进的优化,可能会导致浮点数计算不准确,考虑到本项目没有浮点计算,酌情考虑开启
|
||||||
-- set_optimize("fastest") --上面和下面的二选一,--表示注释
|
-- set_optimize("fastest") --上面和下面的二选一,--表示注释
|
||||||
@ -26,20 +24,5 @@ end
|
|||||||
add_includedirs("src/tools")
|
add_includedirs("src/tools")
|
||||||
set_rundir("./")
|
set_rundir("./")
|
||||||
|
|
||||||
target("dna_pybind")
|
|
||||||
add_defines("DNA_IS_PYBIND")
|
|
||||||
add_packages("pybind11")
|
|
||||||
set_kind("shared")
|
|
||||||
set_extension(".pyd")
|
|
||||||
add_files("src/main.cpp")
|
|
||||||
set_basename("dna")
|
|
||||||
after_build(
|
|
||||||
function (target)
|
|
||||||
print(target:targetdir())
|
|
||||||
os.cp("*.py*",target:targetdir())
|
|
||||||
end
|
|
||||||
)
|
|
||||||
|
|
||||||
target("dna")
|
target("dna")
|
||||||
set_kind("binary")
|
|
||||||
add_files("src/main.cpp")
|
add_files("src/main.cpp")
|
||||||
|
Loading…
Reference in New Issue
Block a user