poreflow 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/FortranCInterface/CMakeLists.txt +141 -0
- poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/FortranCInterface/Verify/CMakeLists.txt +35 -0
- poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/IntelVSImplicitPath/CMakeLists.txt +7 -0
- poreflow-0.2.3/.uv-cache/wheels-v6/pypi/cmake/4.2.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64/cmake/data/share/cmake-4.2/Modules/FortranCInterface/CMakeLists.txt +141 -0
- poreflow-0.2.3/.uv-cache/wheels-v6/pypi/cmake/4.2.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64/cmake/data/share/cmake-4.2/Modules/FortranCInterface/Verify/CMakeLists.txt +35 -0
- poreflow-0.2.3/.uv-cache/wheels-v6/pypi/cmake/4.2.1-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64/cmake/data/share/cmake-4.2/Modules/IntelVSImplicitPath/CMakeLists.txt +7 -0
- poreflow-0.2.3/CMakeLists.txt +37 -0
- poreflow-0.2.3/LICENSE.MD +21 -0
- poreflow-0.2.3/PKG-INFO +87 -0
- poreflow-0.2.3/README.md +39 -0
- poreflow-0.2.3/pyproject.toml +69 -0
- poreflow-0.2.3/src/fast5_research/LICENSE.md +364 -0
- poreflow-0.2.3/src/fast5_research/__init__.py +4 -0
- poreflow-0.2.3/src/fast5_research/extract.py +853 -0
- poreflow-0.2.3/src/fast5_research/fast5.py +1604 -0
- poreflow-0.2.3/src/fast5_research/fast5_bulk.py +1188 -0
- poreflow-0.2.3/src/fast5_research/util.py +743 -0
- poreflow-0.2.3/src/poreflow/COPYING +619 -0
- poreflow-0.2.3/src/poreflow/README.md +268 -0
- poreflow-0.2.3/src/poreflow/__init__.py +61 -0
- poreflow-0.2.3/src/poreflow/classification/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/classification/assets/DNA_6mer_prediction_model_cv.csv +4097 -0
- poreflow-0.2.3/src/poreflow/classification/assets/pore_model_6mer_constant_voltage.csv +8193 -0
- poreflow-0.2.3/src/poreflow/classification/event_filtering.py +42 -0
- poreflow-0.2.3/src/poreflow/classification/predictdna.py +147 -0
- poreflow-0.2.3/src/poreflow/classification/sequence.py +545 -0
- poreflow-0.2.3/src/poreflow/cli.py +31 -0
- poreflow-0.2.3/src/poreflow/constants.py +84 -0
- poreflow-0.2.3/src/poreflow/dashboards/__init__.py +3 -0
- poreflow-0.2.3/src/poreflow/dashboards/app.py +156 -0
- poreflow-0.2.3/src/poreflow/dashboards/components.py +164 -0
- poreflow-0.2.3/src/poreflow/dashboards/pages/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/dashboards/pages/channels.py +283 -0
- poreflow-0.2.3/src/poreflow/dashboards/pages/file_manager.py +142 -0
- poreflow-0.2.3/src/poreflow/dashboards/pages/labeler.py +613 -0
- poreflow-0.2.3/src/poreflow/dashboards/utils.py +21 -0
- poreflow-0.2.3/src/poreflow/dataset.py +142 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/_changepoint.cpp +365 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/assets/equal_spacing_dna.npz +0 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/assets/principal_components_for_level_finding.npy +0 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/changepoint.py +175 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/cpic.py +96 -0
- poreflow-0.2.3/src/poreflow/feature_extraction/metrics.py +33 -0
- poreflow-0.2.3/src/poreflow/feature_selection/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/feature_selection/eventfiltering.py +72 -0
- poreflow-0.2.3/src/poreflow/io/__init__.py +16 -0
- poreflow-0.2.3/src/poreflow/io/devices.py +2 -0
- poreflow-0.2.3/src/poreflow/io/labview.py +295 -0
- poreflow-0.2.3/src/poreflow/io/ont.py +639 -0
- poreflow-0.2.3/src/poreflow/parallel.py +170 -0
- poreflow-0.2.3/src/poreflow/plots.py +34 -0
- poreflow-0.2.3/src/poreflow/preprocessing/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/preprocessing/eventdetection.py +205 -0
- poreflow-0.2.3/src/poreflow/preprocessing/openstate.py +102 -0
- poreflow-0.2.3/src/poreflow/preprocessing/voltagestate.py +10 -0
- poreflow-0.2.3/src/poreflow/structures/__init__.py +0 -0
- poreflow-0.2.3/src/poreflow/structures/base.py +153 -0
- poreflow-0.2.3/src/poreflow/structures/event.py +99 -0
- poreflow-0.2.3/src/poreflow/structures/events.py +362 -0
- poreflow-0.2.3/src/poreflow/structures/raw.py +200 -0
- poreflow-0.2.3/src/poreflow/structures/steps.py +62 -0
- poreflow-0.2.3/src/poreflow/utils.py +304 -0
- poreflow-0.2.3/src/poreflow/widgets.py +221 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
2
|
+
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
3
|
+
|
|
4
|
+
cmake_minimum_required(VERSION ${CMAKE_VERSION})
|
|
5
|
+
project(FortranCInterface C Fortran)
|
|
6
|
+
include(${FortranCInterface_BINARY_DIR}/Input.cmake OPTIONAL)
|
|
7
|
+
|
|
8
|
+
# Check if the C compiler supports '$' in identifiers.
|
|
9
|
+
include(CheckSourceCompiles)
|
|
10
|
+
check_source_compiles(C
|
|
11
|
+
"extern int dollar$(void);
|
|
12
|
+
int main() { return 0; }"
|
|
13
|
+
C_SUPPORTS_DOLLAR)
|
|
14
|
+
|
|
15
|
+
# List manglings of global symbol names to try.
|
|
16
|
+
set(global_symbols
|
|
17
|
+
my_sub # VisualAge
|
|
18
|
+
my_sub_ # GNU, Intel, HP, SunPro, PGI
|
|
19
|
+
my_sub__ # GNU g77
|
|
20
|
+
MY_SUB # Intel on Windows
|
|
21
|
+
mysub # VisualAge
|
|
22
|
+
mysub_ # GNU, Intel, HP, SunPro, PGI
|
|
23
|
+
MYSUB # Intel on Windows
|
|
24
|
+
${FortranCInterface_GLOBAL_SYMBOLS}
|
|
25
|
+
)
|
|
26
|
+
list(REMOVE_DUPLICATES global_symbols)
|
|
27
|
+
|
|
28
|
+
# List manglings of module symbol names to try.
|
|
29
|
+
set(module_symbols
|
|
30
|
+
__my_module_MOD_my_sub # GNU 4.3
|
|
31
|
+
__my_module_NMOD_my_sub # VisualAge
|
|
32
|
+
__my_module__my_sub # GNU 4.2
|
|
33
|
+
__mymodule_MOD_mysub # GNU 4.3
|
|
34
|
+
__mymodule_NMOD_mysub # VisualAge
|
|
35
|
+
__mymodule__mysub # GNU 4.2
|
|
36
|
+
my_module$my_sub # HP
|
|
37
|
+
my_module_mp_my_sub_ # Intel
|
|
38
|
+
MY_MODULE_mp_MY_SUB # Intel on Windows
|
|
39
|
+
my_module_my_sub_ # PGI
|
|
40
|
+
my_module_MP_my_sub # NAG
|
|
41
|
+
mymodule$mysub # HP
|
|
42
|
+
mysub$mymodule_ # Cray
|
|
43
|
+
my_sub$my_module_ # Cray
|
|
44
|
+
mymodule_mp_mysub_ # Intel
|
|
45
|
+
MYMODULE_mp_MYSUB # Intel on Windows
|
|
46
|
+
mymodule_mysub_ # PGI
|
|
47
|
+
mymodule_MP_mysub # NAG
|
|
48
|
+
_QMmy_modulePmy_sub # LLVMFlang
|
|
49
|
+
_QMmymodulePmysub # LLVMFlang
|
|
50
|
+
__module_my_module_my_sub # LFortran
|
|
51
|
+
__module_mymodule_mysub # LFortran
|
|
52
|
+
${FortranCInterface_MODULE_SYMBOLS}
|
|
53
|
+
)
|
|
54
|
+
list(REMOVE_DUPLICATES module_symbols)
|
|
55
|
+
|
|
56
|
+
# Note that some compiler manglings cannot be invoked from C:
|
|
57
|
+
# SunPro uses "my_module.my_sub_"
|
|
58
|
+
# PathScale uses "MY_SUB.in.MY_MODULE"
|
|
59
|
+
|
|
60
|
+
# Add module symbols only with Fortran90.
|
|
61
|
+
if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
|
62
|
+
set(myfort_modules mymodule.f90 my_module.f90)
|
|
63
|
+
set(call_mod call_mod.f90)
|
|
64
|
+
set_property(SOURCE main.F PROPERTY COMPILE_DEFINITIONS CALL_MOD)
|
|
65
|
+
else()
|
|
66
|
+
set(module_symbols)
|
|
67
|
+
endif()
|
|
68
|
+
|
|
69
|
+
# Generate C symbol sources.
|
|
70
|
+
set(symbol_sources)
|
|
71
|
+
if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(PathScale)$")
|
|
72
|
+
# Provide mymodule_ and my_module_ init symbols because:
|
|
73
|
+
# - PGI Fortran uses module init symbols
|
|
74
|
+
# - Cray Fortran >= 7.3.2 uses module init symbols
|
|
75
|
+
# but not for:
|
|
76
|
+
# - PathScale Fortran uses module init symbols but module symbols
|
|
77
|
+
# use '.in.' so we cannot provide them anyway.
|
|
78
|
+
list(APPEND symbol_sources mymodule_.c my_module_.c MY_MODULE.c MYMODULE.c)
|
|
79
|
+
endif()
|
|
80
|
+
foreach(symbol IN LISTS global_symbols module_symbols)
|
|
81
|
+
# Skip symbols with '$' if C cannot handle them.
|
|
82
|
+
if(C_SUPPORTS_DOLLAR OR NOT "${symbol}" MATCHES "\\$")
|
|
83
|
+
if("${symbol}" MATCHES "SUB")
|
|
84
|
+
set(upper "-UPPER")
|
|
85
|
+
else()
|
|
86
|
+
set(upper)
|
|
87
|
+
endif()
|
|
88
|
+
string(REPLACE "$" "S" name "${symbol}")
|
|
89
|
+
set(source ${CMAKE_CURRENT_BINARY_DIR}/symbols/${name}${upper}.c)
|
|
90
|
+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/symbol.c.in ${source} @ONLY)
|
|
91
|
+
list(APPEND symbol_sources ${source})
|
|
92
|
+
endif()
|
|
93
|
+
endforeach()
|
|
94
|
+
|
|
95
|
+
# Provide symbols through Fortran.
|
|
96
|
+
add_library(myfort STATIC mysub.f my_sub.f ${myfort_modules})
|
|
97
|
+
|
|
98
|
+
# Provide symbols through C but fall back to Fortran.
|
|
99
|
+
add_library(symbols STATIC ${symbol_sources})
|
|
100
|
+
target_link_libraries(symbols PUBLIC myfort)
|
|
101
|
+
|
|
102
|
+
# In case the Fortran compiler produces PIC by default make sure
|
|
103
|
+
# the C compiler produces PIC even if it is not its default.
|
|
104
|
+
set_property(TARGET symbols PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|
105
|
+
|
|
106
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LFortran")
|
|
107
|
+
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL "0.55")
|
|
108
|
+
set(_LFORTRAN_SC_FLAG --separate-compilation)
|
|
109
|
+
else()
|
|
110
|
+
set(_LFORTRAN_SC_FLAG --generate-object-code)
|
|
111
|
+
endif()
|
|
112
|
+
add_compile_options(--implicit-interface ${_LFORTRAN_SC_FLAG})
|
|
113
|
+
endif()
|
|
114
|
+
|
|
115
|
+
# Require symbols through Fortran.
|
|
116
|
+
add_executable(FortranCInterface main.F call_sub.f ${call_mod})
|
|
117
|
+
target_link_libraries(FortranCInterface PUBLIC symbols)
|
|
118
|
+
|
|
119
|
+
# If IPO is enabled here, GCC gfortran >= 12.0 will obfuscate
|
|
120
|
+
# the strings of the return values in the compiled executable,
|
|
121
|
+
# which we use to regex match against later.
|
|
122
|
+
# The static libraries must be build with IPO and non-IPO objects,
|
|
123
|
+
# as that will ensure the verify step will operate on IPO objects,
|
|
124
|
+
# if requested by the system compiler flags.
|
|
125
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND
|
|
126
|
+
CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
|
|
127
|
+
target_compile_options(FortranCInterface PRIVATE "-fno-lto")
|
|
128
|
+
if(NOT APPLE)
|
|
129
|
+
target_compile_options(myfort PRIVATE "-flto=auto" "-ffat-lto-objects")
|
|
130
|
+
endif()
|
|
131
|
+
endif()
|
|
132
|
+
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND
|
|
133
|
+
CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
|
|
134
|
+
if(NOT APPLE)
|
|
135
|
+
target_compile_options(symbols PRIVATE "-flto=auto" "-ffat-lto-objects")
|
|
136
|
+
endif()
|
|
137
|
+
endif()
|
|
138
|
+
|
|
139
|
+
file(GENERATE OUTPUT exe-$<CONFIG>.cmake CONTENT [[
|
|
140
|
+
set(FortranCInterface_EXE "$<TARGET_FILE:FortranCInterface>")
|
|
141
|
+
]])
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
2
|
+
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
3
|
+
|
|
4
|
+
cmake_minimum_required(VERSION ${CMAKE_VERSION})
|
|
5
|
+
project(VerifyFortranC C Fortran)
|
|
6
|
+
|
|
7
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LFortran")
|
|
8
|
+
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL "0.55")
|
|
9
|
+
set(_LFORTRAN_SC_FLAG --separate-compilation)
|
|
10
|
+
else()
|
|
11
|
+
set(_LFORTRAN_SC_FLAG --generate-object-code)
|
|
12
|
+
endif()
|
|
13
|
+
add_compile_options("$<$<COMPILE_LANGUAGE:Fortran>:${_LFORTRAN_SC_FLAG}>")
|
|
14
|
+
endif()
|
|
15
|
+
|
|
16
|
+
option(VERIFY_CXX "Whether to verify C++ and Fortran" OFF)
|
|
17
|
+
if(VERIFY_CXX)
|
|
18
|
+
enable_language(CXX)
|
|
19
|
+
set(VerifyCXX VerifyCXX.cxx)
|
|
20
|
+
add_definitions(-DVERIFY_CXX)
|
|
21
|
+
endif()
|
|
22
|
+
|
|
23
|
+
include(FortranCInterface)
|
|
24
|
+
|
|
25
|
+
FortranCInterface_HEADER(VerifyFortran.h SYMBOLS VerifyFortran)
|
|
26
|
+
include_directories(${VerifyFortranC_BINARY_DIR})
|
|
27
|
+
|
|
28
|
+
add_library(VerifyFortran STATIC VerifyFortran.f)
|
|
29
|
+
add_executable(VerifyFortranC main.c VerifyC.c ${VerifyCXX})
|
|
30
|
+
target_link_libraries(VerifyFortranC VerifyFortran)
|
|
31
|
+
|
|
32
|
+
if(NOT VERIFY_CXX)
|
|
33
|
+
# The entry point (main) is defined in C; link with the C compiler.
|
|
34
|
+
set_property(TARGET VerifyFortranC PROPERTY LINKER_LANGUAGE C)
|
|
35
|
+
endif()
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
2
|
+
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
3
|
+
|
|
4
|
+
cmake_minimum_required(VERSION ${CMAKE_VERSION})
|
|
5
|
+
project(FortranCInterface C Fortran)
|
|
6
|
+
include(${FortranCInterface_BINARY_DIR}/Input.cmake OPTIONAL)
|
|
7
|
+
|
|
8
|
+
# Check if the C compiler supports '$' in identifiers.
|
|
9
|
+
include(CheckSourceCompiles)
|
|
10
|
+
check_source_compiles(C
|
|
11
|
+
"extern int dollar$(void);
|
|
12
|
+
int main() { return 0; }"
|
|
13
|
+
C_SUPPORTS_DOLLAR)
|
|
14
|
+
|
|
15
|
+
# List manglings of global symbol names to try.
|
|
16
|
+
set(global_symbols
|
|
17
|
+
my_sub # VisualAge
|
|
18
|
+
my_sub_ # GNU, Intel, HP, SunPro, PGI
|
|
19
|
+
my_sub__ # GNU g77
|
|
20
|
+
MY_SUB # Intel on Windows
|
|
21
|
+
mysub # VisualAge
|
|
22
|
+
mysub_ # GNU, Intel, HP, SunPro, PGI
|
|
23
|
+
MYSUB # Intel on Windows
|
|
24
|
+
${FortranCInterface_GLOBAL_SYMBOLS}
|
|
25
|
+
)
|
|
26
|
+
list(REMOVE_DUPLICATES global_symbols)
|
|
27
|
+
|
|
28
|
+
# List manglings of module symbol names to try.
|
|
29
|
+
set(module_symbols
|
|
30
|
+
__my_module_MOD_my_sub # GNU 4.3
|
|
31
|
+
__my_module_NMOD_my_sub # VisualAge
|
|
32
|
+
__my_module__my_sub # GNU 4.2
|
|
33
|
+
__mymodule_MOD_mysub # GNU 4.3
|
|
34
|
+
__mymodule_NMOD_mysub # VisualAge
|
|
35
|
+
__mymodule__mysub # GNU 4.2
|
|
36
|
+
my_module$my_sub # HP
|
|
37
|
+
my_module_mp_my_sub_ # Intel
|
|
38
|
+
MY_MODULE_mp_MY_SUB # Intel on Windows
|
|
39
|
+
my_module_my_sub_ # PGI
|
|
40
|
+
my_module_MP_my_sub # NAG
|
|
41
|
+
mymodule$mysub # HP
|
|
42
|
+
mysub$mymodule_ # Cray
|
|
43
|
+
my_sub$my_module_ # Cray
|
|
44
|
+
mymodule_mp_mysub_ # Intel
|
|
45
|
+
MYMODULE_mp_MYSUB # Intel on Windows
|
|
46
|
+
mymodule_mysub_ # PGI
|
|
47
|
+
mymodule_MP_mysub # NAG
|
|
48
|
+
_QMmy_modulePmy_sub # LLVMFlang
|
|
49
|
+
_QMmymodulePmysub # LLVMFlang
|
|
50
|
+
__module_my_module_my_sub # LFortran
|
|
51
|
+
__module_mymodule_mysub # LFortran
|
|
52
|
+
${FortranCInterface_MODULE_SYMBOLS}
|
|
53
|
+
)
|
|
54
|
+
list(REMOVE_DUPLICATES module_symbols)
|
|
55
|
+
|
|
56
|
+
# Note that some compiler manglings cannot be invoked from C:
|
|
57
|
+
# SunPro uses "my_module.my_sub_"
|
|
58
|
+
# PathScale uses "MY_SUB.in.MY_MODULE"
|
|
59
|
+
|
|
60
|
+
# Add module symbols only with Fortran90.
|
|
61
|
+
if(CMAKE_Fortran_COMPILER_SUPPORTS_F90)
|
|
62
|
+
set(myfort_modules mymodule.f90 my_module.f90)
|
|
63
|
+
set(call_mod call_mod.f90)
|
|
64
|
+
set_property(SOURCE main.F PROPERTY COMPILE_DEFINITIONS CALL_MOD)
|
|
65
|
+
else()
|
|
66
|
+
set(module_symbols)
|
|
67
|
+
endif()
|
|
68
|
+
|
|
69
|
+
# Generate C symbol sources.
|
|
70
|
+
set(symbol_sources)
|
|
71
|
+
if(NOT CMAKE_Fortran_COMPILER_ID MATCHES "^(PathScale)$")
|
|
72
|
+
# Provide mymodule_ and my_module_ init symbols because:
|
|
73
|
+
# - PGI Fortran uses module init symbols
|
|
74
|
+
# - Cray Fortran >= 7.3.2 uses module init symbols
|
|
75
|
+
# but not for:
|
|
76
|
+
# - PathScale Fortran uses module init symbols but module symbols
|
|
77
|
+
# use '.in.' so we cannot provide them anyway.
|
|
78
|
+
list(APPEND symbol_sources mymodule_.c my_module_.c MY_MODULE.c MYMODULE.c)
|
|
79
|
+
endif()
|
|
80
|
+
foreach(symbol IN LISTS global_symbols module_symbols)
|
|
81
|
+
# Skip symbols with '$' if C cannot handle them.
|
|
82
|
+
if(C_SUPPORTS_DOLLAR OR NOT "${symbol}" MATCHES "\\$")
|
|
83
|
+
if("${symbol}" MATCHES "SUB")
|
|
84
|
+
set(upper "-UPPER")
|
|
85
|
+
else()
|
|
86
|
+
set(upper)
|
|
87
|
+
endif()
|
|
88
|
+
string(REPLACE "$" "S" name "${symbol}")
|
|
89
|
+
set(source ${CMAKE_CURRENT_BINARY_DIR}/symbols/${name}${upper}.c)
|
|
90
|
+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/symbol.c.in ${source} @ONLY)
|
|
91
|
+
list(APPEND symbol_sources ${source})
|
|
92
|
+
endif()
|
|
93
|
+
endforeach()
|
|
94
|
+
|
|
95
|
+
# Provide symbols through Fortran.
|
|
96
|
+
add_library(myfort STATIC mysub.f my_sub.f ${myfort_modules})
|
|
97
|
+
|
|
98
|
+
# Provide symbols through C but fall back to Fortran.
|
|
99
|
+
add_library(symbols STATIC ${symbol_sources})
|
|
100
|
+
target_link_libraries(symbols PUBLIC myfort)
|
|
101
|
+
|
|
102
|
+
# In case the Fortran compiler produces PIC by default make sure
|
|
103
|
+
# the C compiler produces PIC even if it is not its default.
|
|
104
|
+
set_property(TARGET symbols PROPERTY POSITION_INDEPENDENT_CODE 1)
|
|
105
|
+
|
|
106
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LFortran")
|
|
107
|
+
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL "0.55")
|
|
108
|
+
set(_LFORTRAN_SC_FLAG --separate-compilation)
|
|
109
|
+
else()
|
|
110
|
+
set(_LFORTRAN_SC_FLAG --generate-object-code)
|
|
111
|
+
endif()
|
|
112
|
+
add_compile_options(--implicit-interface ${_LFORTRAN_SC_FLAG})
|
|
113
|
+
endif()
|
|
114
|
+
|
|
115
|
+
# Require symbols through Fortran.
|
|
116
|
+
add_executable(FortranCInterface main.F call_sub.f ${call_mod})
|
|
117
|
+
target_link_libraries(FortranCInterface PUBLIC symbols)
|
|
118
|
+
|
|
119
|
+
# If IPO is enabled here, GCC gfortran >= 12.0 will obfuscate
|
|
120
|
+
# the strings of the return values in the compiled executable,
|
|
121
|
+
# which we use to regex match against later.
|
|
122
|
+
# The static libraries must be build with IPO and non-IPO objects,
|
|
123
|
+
# as that will ensure the verify step will operate on IPO objects,
|
|
124
|
+
# if requested by the system compiler flags.
|
|
125
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND
|
|
126
|
+
CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
|
|
127
|
+
target_compile_options(FortranCInterface PRIVATE "-fno-lto")
|
|
128
|
+
if(NOT APPLE)
|
|
129
|
+
target_compile_options(myfort PRIVATE "-flto=auto" "-ffat-lto-objects")
|
|
130
|
+
endif()
|
|
131
|
+
endif()
|
|
132
|
+
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND
|
|
133
|
+
CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
|
|
134
|
+
if(NOT APPLE)
|
|
135
|
+
target_compile_options(symbols PRIVATE "-flto=auto" "-ffat-lto-objects")
|
|
136
|
+
endif()
|
|
137
|
+
endif()
|
|
138
|
+
|
|
139
|
+
file(GENERATE OUTPUT exe-$<CONFIG>.cmake CONTENT [[
|
|
140
|
+
set(FortranCInterface_EXE "$<TARGET_FILE:FortranCInterface>")
|
|
141
|
+
]])
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
2
|
+
# file LICENSE.rst or https://cmake.org/licensing for details.
|
|
3
|
+
|
|
4
|
+
cmake_minimum_required(VERSION ${CMAKE_VERSION})
|
|
5
|
+
project(VerifyFortranC C Fortran)
|
|
6
|
+
|
|
7
|
+
if(CMAKE_Fortran_COMPILER_ID STREQUAL "LFortran")
|
|
8
|
+
if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL "0.55")
|
|
9
|
+
set(_LFORTRAN_SC_FLAG --separate-compilation)
|
|
10
|
+
else()
|
|
11
|
+
set(_LFORTRAN_SC_FLAG --generate-object-code)
|
|
12
|
+
endif()
|
|
13
|
+
add_compile_options("$<$<COMPILE_LANGUAGE:Fortran>:${_LFORTRAN_SC_FLAG}>")
|
|
14
|
+
endif()
|
|
15
|
+
|
|
16
|
+
option(VERIFY_CXX "Whether to verify C++ and Fortran" OFF)
|
|
17
|
+
if(VERIFY_CXX)
|
|
18
|
+
enable_language(CXX)
|
|
19
|
+
set(VerifyCXX VerifyCXX.cxx)
|
|
20
|
+
add_definitions(-DVERIFY_CXX)
|
|
21
|
+
endif()
|
|
22
|
+
|
|
23
|
+
include(FortranCInterface)
|
|
24
|
+
|
|
25
|
+
FortranCInterface_HEADER(VerifyFortran.h SYMBOLS VerifyFortran)
|
|
26
|
+
include_directories(${VerifyFortranC_BINARY_DIR})
|
|
27
|
+
|
|
28
|
+
add_library(VerifyFortran STATIC VerifyFortran.f)
|
|
29
|
+
add_executable(VerifyFortranC main.c VerifyC.c ${VerifyCXX})
|
|
30
|
+
target_link_libraries(VerifyFortranC VerifyFortran)
|
|
31
|
+
|
|
32
|
+
if(NOT VERIFY_CXX)
|
|
33
|
+
# The entry point (main) is defined in C; link with the C compiler.
|
|
34
|
+
set_property(TARGET VerifyFortranC PROPERTY LINKER_LANGUAGE C)
|
|
35
|
+
endif()
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.15)
|
|
2
|
+
project(poreflow_changepoint)
|
|
3
|
+
|
|
4
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
5
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
6
|
+
|
|
7
|
+
# Find Python
|
|
8
|
+
find_package(Python 3.11 COMPONENTS Interpreter Development.Module REQUIRED)
|
|
9
|
+
|
|
10
|
+
# Find NumPy
|
|
11
|
+
execute_process(
|
|
12
|
+
COMMAND "${Python_EXECUTABLE}" -c "import numpy; print(numpy.get_include())"
|
|
13
|
+
OUTPUT_VARIABLE Python_NumPy_INCLUDE_DIR
|
|
14
|
+
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
# Fetch Eigen
|
|
18
|
+
include(FetchContent)
|
|
19
|
+
FetchContent_Declare(
|
|
20
|
+
Eigen3
|
|
21
|
+
GIT_REPOSITORY https://gitlab.com/libeigen/eigen.git
|
|
22
|
+
GIT_TAG 3.4.0
|
|
23
|
+
GIT_SHALLOW TRUE
|
|
24
|
+
)
|
|
25
|
+
FetchContent_MakeAvailable(Eigen3)
|
|
26
|
+
|
|
27
|
+
# Define the extension module
|
|
28
|
+
python_add_library(_changepoint MODULE src/poreflow/feature_extraction/_changepoint.cpp)
|
|
29
|
+
|
|
30
|
+
# Include directories
|
|
31
|
+
target_include_directories(_changepoint PRIVATE
|
|
32
|
+
${Python_NumPy_INCLUDE_DIR}
|
|
33
|
+
${Eigen3_SOURCE_DIR}
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# Install location
|
|
37
|
+
install(TARGETS _changepoint DESTINATION poreflow/feature_extraction)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) [2025] [Xiuqi Chen]
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
poreflow-0.2.3/PKG-INFO
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: poreflow
|
|
3
|
+
Version: 0.2.3
|
|
4
|
+
Summary: Python module for processing nanopore sequencing
|
|
5
|
+
Keywords: nanopore,peptide,bioinformatics
|
|
6
|
+
Author-Email: Xiuqi Chen <X.Chen-13@tudelft.nl>, Thijn Hoekstra <thijnhoekstra@gmail.com>
|
|
7
|
+
License: MIT License
|
|
8
|
+
|
|
9
|
+
Copyright (c) [2025] [Xiuqi Chen]
|
|
10
|
+
|
|
11
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
+
in the Software without restriction, including without limitation the rights
|
|
14
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
+
furnished to do so, subject to the following conditions:
|
|
17
|
+
|
|
18
|
+
The above copyright notice and this permission notice shall be included in all
|
|
19
|
+
copies or substantial portions of the Software.
|
|
20
|
+
|
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
+
SOFTWARE.
|
|
28
|
+
Classifier: Development Status :: 3 - Alpha
|
|
29
|
+
Classifier: Intended Audience :: Developers
|
|
30
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
31
|
+
Project-URL: Repository, https://gitlab.tudelft.nl/xiuqichen/poreFlow.git
|
|
32
|
+
Project-URL: Issues, https://gitlab.tudelft.nl/xiuqichen/poreFlow/-/issues
|
|
33
|
+
Requires-Python: >=3.11
|
|
34
|
+
Requires-Dist: numpy>=2.2.6
|
|
35
|
+
Requires-Dist: scipy>=1.15.3
|
|
36
|
+
Requires-Dist: tqdm>=4.67.1
|
|
37
|
+
Requires-Dist: pandas>=2.3.1
|
|
38
|
+
Requires-Dist: tables>=3.10.1
|
|
39
|
+
Requires-Dist: scikit-learn>=1.7.1
|
|
40
|
+
Requires-Dist: matplotlib>=3.10.5
|
|
41
|
+
Requires-Dist: plotly>=6.2.0
|
|
42
|
+
Requires-Dist: h5py>=3.14.0
|
|
43
|
+
Requires-Dist: seaborn>=0.13.2
|
|
44
|
+
Requires-Dist: dash>=2.18.1
|
|
45
|
+
Requires-Dist: dash-bootstrap-components>=1.6.0
|
|
46
|
+
Requires-Dist: psutil>=7.1.3
|
|
47
|
+
Description-Content-Type: text/markdown
|
|
48
|
+
|
|
49
|
+
# PoreFlow
|
|
50
|
+
> *Nanopore data analysis tools*
|
|
51
|
+
|
|
52
|
+
PoreFlow is a fast, simple, and flexible set of tools for analysing raw nanopore sequencing data,
|
|
53
|
+
intended for use for research in the Cees Dekker lab (and beyond?).
|
|
54
|
+
|
|
55
|
+
Please see the [Documentation][PoreFlow] for an introductory tutorial and full user guide.
|
|
56
|
+
|
|
57
|
+
## Features
|
|
58
|
+
|
|
59
|
+
- Python API for storing measurement, event, and step data.
|
|
60
|
+
- Event detection algorithm
|
|
61
|
+
- Fast step detection algorithm written in C++
|
|
62
|
+
- Support for reasarch .fast5 files, along with .dat files from the UTube device
|
|
63
|
+
- Filter events with basic metrics and store metadata
|
|
64
|
+
- Find DNA-peptide boundary with expected DNA sequence
|
|
65
|
+
|
|
66
|
+
## If you need help with PoreFlow, do not hesitate to get in contact:
|
|
67
|
+
- For questions, contact the authors in-person or via email
|
|
68
|
+
- To report a bug or make a feature request, open an **[Issue]** on GitLab.
|
|
69
|
+
|
|
70
|
+
## Links
|
|
71
|
+
- [Official Documentation][PoreFlow]
|
|
72
|
+
|
|
73
|
+
## Contributing to PoreFlow
|
|
74
|
+
Please see the [Contributing Guide] for information on how you can help develop PoreFlow.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
## Authors
|
|
78
|
+
Thijn Hoekstra, Xiuqi Chen
|
|
79
|
+
|
|
80
|
+
## License
|
|
81
|
+
[MIT license](https://gitlab.tudelft.nl/xiuqichen/poreFlow/LICENSE)
|
|
82
|
+
|
|
83
|
+
<!-- Links -->
|
|
84
|
+
[PoreFlow]: https://twhoekstra.github.io/poreFlow-docs/
|
|
85
|
+
[Issue]: https://https://gitlab.tudelft.nl/xiuqichen/poreFlow/issues
|
|
86
|
+
[Contributing Guide]: https://twhoekstra.github.io/poreFlow-docs/contributing/
|
|
87
|
+
[PyPA Code of Conduct]: https://www.pypa.io/en/latest/code-of-conduct/
|
poreflow-0.2.3/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# PoreFlow
|
|
2
|
+
> *Nanopore data analysis tools*
|
|
3
|
+
|
|
4
|
+
PoreFlow is a fast, simple, and flexible set of tools for analysing raw nanopore sequencing data,
|
|
5
|
+
intended for use for research in the Cees Dekker lab (and beyond?).
|
|
6
|
+
|
|
7
|
+
Please see the [Documentation][PoreFlow] for an introductory tutorial and full user guide.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Python API for storing measurement, event, and step data.
|
|
12
|
+
- Event detection algorithm
|
|
13
|
+
- Fast step detection algorithm written in C++
|
|
14
|
+
- Support for reasarch .fast5 files, along with .dat files from the UTube device
|
|
15
|
+
- Filter events with basic metrics and store metadata
|
|
16
|
+
- Find DNA-peptide boundary with expected DNA sequence
|
|
17
|
+
|
|
18
|
+
## If you need help with PoreFlow, do not hesitate to get in contact:
|
|
19
|
+
- For questions, contact the authors in-person or via email
|
|
20
|
+
- To report a bug or make a feature request, open an **[Issue]** on GitLab.
|
|
21
|
+
|
|
22
|
+
## Links
|
|
23
|
+
- [Official Documentation][PoreFlow]
|
|
24
|
+
|
|
25
|
+
## Contributing to PoreFlow
|
|
26
|
+
Please see the [Contributing Guide] for information on how you can help develop PoreFlow.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## Authors
|
|
30
|
+
Thijn Hoekstra, Xiuqi Chen
|
|
31
|
+
|
|
32
|
+
## License
|
|
33
|
+
[MIT license](https://gitlab.tudelft.nl/xiuqichen/poreFlow/LICENSE)
|
|
34
|
+
|
|
35
|
+
<!-- Links -->
|
|
36
|
+
[PoreFlow]: https://twhoekstra.github.io/poreFlow-docs/
|
|
37
|
+
[Issue]: https://https://gitlab.tudelft.nl/xiuqichen/poreFlow/issues
|
|
38
|
+
[Contributing Guide]: https://twhoekstra.github.io/poreFlow-docs/contributing/
|
|
39
|
+
[PyPA Code of Conduct]: https://www.pypa.io/en/latest/code-of-conduct/
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["scikit-build-core", "numpy"]
|
|
3
|
+
build-backend = "scikit_build_core.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "poreflow"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Xiuqi Chen", email = "X.Chen-13@tudelft.nl"},
|
|
10
|
+
{name = "Thijn Hoekstra", email = "thijnhoekstra@gmail.com"},
|
|
11
|
+
]
|
|
12
|
+
description = "Python module for processing nanopore sequencing"
|
|
13
|
+
readme = "README.md"
|
|
14
|
+
license = {file = "LICENSE.MD"}
|
|
15
|
+
requires-python = ">=3.11"
|
|
16
|
+
dependencies = [
|
|
17
|
+
"numpy>=2.2.6",
|
|
18
|
+
"scipy>=1.15.3",
|
|
19
|
+
"tqdm>=4.67.1",
|
|
20
|
+
"pandas>=2.3.1",
|
|
21
|
+
"tables>=3.10.1",
|
|
22
|
+
"scikit-learn>=1.7.1",
|
|
23
|
+
"matplotlib>=3.10.5",
|
|
24
|
+
"plotly>=6.2.0",
|
|
25
|
+
"h5py>=3.14.0",
|
|
26
|
+
# "dtw-python>=1.5.3",
|
|
27
|
+
# "torch>=2.6.0",
|
|
28
|
+
"seaborn>=0.13.2",
|
|
29
|
+
# "tslearn>=0.7.0",
|
|
30
|
+
# "pomegranate>=1.1.2",
|
|
31
|
+
"dash>=2.18.1",
|
|
32
|
+
"dash-bootstrap-components>=1.6.0",
|
|
33
|
+
"psutil>=7.1.3",
|
|
34
|
+
]
|
|
35
|
+
classifiers = [
|
|
36
|
+
"Development Status :: 3 - Alpha",
|
|
37
|
+
"Intended Audience :: Developers",
|
|
38
|
+
"Programming Language :: Python :: 3.11",
|
|
39
|
+
]
|
|
40
|
+
keywords = ["nanopore", "peptide", "bioinformatics", ]
|
|
41
|
+
|
|
42
|
+
[project.scripts]
|
|
43
|
+
poreflow = "poreflow.cli:main"
|
|
44
|
+
|
|
45
|
+
[project.urls]
|
|
46
|
+
Repository = "https://gitlab.tudelft.nl/xiuqichen/poreFlow.git"
|
|
47
|
+
Issues = "https://gitlab.tudelft.nl/xiuqichen/poreFlow/-/issues"
|
|
48
|
+
|
|
49
|
+
[tool.scikit-build]
|
|
50
|
+
wheel.packages = ["src/poreflow", "src/fast5_research"]
|
|
51
|
+
sdist.include = ["src/*", "LICENSE.MD", "pyproject.toml", "CMakeLists.txt", "README.md"]
|
|
52
|
+
sdist.exclude = ["*"]
|
|
53
|
+
|
|
54
|
+
[tool.scikit-build.metadata.version]
|
|
55
|
+
provider = "scikit_build_core.metadata.regex"
|
|
56
|
+
input = "src/poreflow/__init__.py"
|
|
57
|
+
|
|
58
|
+
[dependency-groups]
|
|
59
|
+
dev = [
|
|
60
|
+
"jupyterlab>=4.4.5",
|
|
61
|
+
"ipywidgets>=8.1.7",
|
|
62
|
+
"ipympl>=0.9.7",
|
|
63
|
+
"pytest>=8.3.3",
|
|
64
|
+
"pytest-cov>=6.0.0",
|
|
65
|
+
"ruff>=0.15.0",
|
|
66
|
+
]
|
|
67
|
+
|
|
68
|
+
[tool.ruff.lint.pydocstyle]
|
|
69
|
+
convention = "google"
|