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.
Files changed (64) hide show
  1. poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/FortranCInterface/CMakeLists.txt +141 -0
  2. poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/FortranCInterface/Verify/CMakeLists.txt +35 -0
  3. poreflow-0.2.3/.uv-cache/archive-v0/z45tL5TdILP1qJGGGgvg_/cmake/data/share/cmake-4.2/Modules/IntelVSImplicitPath/CMakeLists.txt +7 -0
  4. 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
  5. 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
  6. 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
  7. poreflow-0.2.3/CMakeLists.txt +37 -0
  8. poreflow-0.2.3/LICENSE.MD +21 -0
  9. poreflow-0.2.3/PKG-INFO +87 -0
  10. poreflow-0.2.3/README.md +39 -0
  11. poreflow-0.2.3/pyproject.toml +69 -0
  12. poreflow-0.2.3/src/fast5_research/LICENSE.md +364 -0
  13. poreflow-0.2.3/src/fast5_research/__init__.py +4 -0
  14. poreflow-0.2.3/src/fast5_research/extract.py +853 -0
  15. poreflow-0.2.3/src/fast5_research/fast5.py +1604 -0
  16. poreflow-0.2.3/src/fast5_research/fast5_bulk.py +1188 -0
  17. poreflow-0.2.3/src/fast5_research/util.py +743 -0
  18. poreflow-0.2.3/src/poreflow/COPYING +619 -0
  19. poreflow-0.2.3/src/poreflow/README.md +268 -0
  20. poreflow-0.2.3/src/poreflow/__init__.py +61 -0
  21. poreflow-0.2.3/src/poreflow/classification/__init__.py +0 -0
  22. poreflow-0.2.3/src/poreflow/classification/assets/DNA_6mer_prediction_model_cv.csv +4097 -0
  23. poreflow-0.2.3/src/poreflow/classification/assets/pore_model_6mer_constant_voltage.csv +8193 -0
  24. poreflow-0.2.3/src/poreflow/classification/event_filtering.py +42 -0
  25. poreflow-0.2.3/src/poreflow/classification/predictdna.py +147 -0
  26. poreflow-0.2.3/src/poreflow/classification/sequence.py +545 -0
  27. poreflow-0.2.3/src/poreflow/cli.py +31 -0
  28. poreflow-0.2.3/src/poreflow/constants.py +84 -0
  29. poreflow-0.2.3/src/poreflow/dashboards/__init__.py +3 -0
  30. poreflow-0.2.3/src/poreflow/dashboards/app.py +156 -0
  31. poreflow-0.2.3/src/poreflow/dashboards/components.py +164 -0
  32. poreflow-0.2.3/src/poreflow/dashboards/pages/__init__.py +0 -0
  33. poreflow-0.2.3/src/poreflow/dashboards/pages/channels.py +283 -0
  34. poreflow-0.2.3/src/poreflow/dashboards/pages/file_manager.py +142 -0
  35. poreflow-0.2.3/src/poreflow/dashboards/pages/labeler.py +613 -0
  36. poreflow-0.2.3/src/poreflow/dashboards/utils.py +21 -0
  37. poreflow-0.2.3/src/poreflow/dataset.py +142 -0
  38. poreflow-0.2.3/src/poreflow/feature_extraction/__init__.py +0 -0
  39. poreflow-0.2.3/src/poreflow/feature_extraction/_changepoint.cpp +365 -0
  40. poreflow-0.2.3/src/poreflow/feature_extraction/assets/equal_spacing_dna.npz +0 -0
  41. poreflow-0.2.3/src/poreflow/feature_extraction/assets/principal_components_for_level_finding.npy +0 -0
  42. poreflow-0.2.3/src/poreflow/feature_extraction/changepoint.py +175 -0
  43. poreflow-0.2.3/src/poreflow/feature_extraction/cpic.py +96 -0
  44. poreflow-0.2.3/src/poreflow/feature_extraction/metrics.py +33 -0
  45. poreflow-0.2.3/src/poreflow/feature_selection/__init__.py +0 -0
  46. poreflow-0.2.3/src/poreflow/feature_selection/eventfiltering.py +72 -0
  47. poreflow-0.2.3/src/poreflow/io/__init__.py +16 -0
  48. poreflow-0.2.3/src/poreflow/io/devices.py +2 -0
  49. poreflow-0.2.3/src/poreflow/io/labview.py +295 -0
  50. poreflow-0.2.3/src/poreflow/io/ont.py +639 -0
  51. poreflow-0.2.3/src/poreflow/parallel.py +170 -0
  52. poreflow-0.2.3/src/poreflow/plots.py +34 -0
  53. poreflow-0.2.3/src/poreflow/preprocessing/__init__.py +0 -0
  54. poreflow-0.2.3/src/poreflow/preprocessing/eventdetection.py +205 -0
  55. poreflow-0.2.3/src/poreflow/preprocessing/openstate.py +102 -0
  56. poreflow-0.2.3/src/poreflow/preprocessing/voltagestate.py +10 -0
  57. poreflow-0.2.3/src/poreflow/structures/__init__.py +0 -0
  58. poreflow-0.2.3/src/poreflow/structures/base.py +153 -0
  59. poreflow-0.2.3/src/poreflow/structures/event.py +99 -0
  60. poreflow-0.2.3/src/poreflow/structures/events.py +362 -0
  61. poreflow-0.2.3/src/poreflow/structures/raw.py +200 -0
  62. poreflow-0.2.3/src/poreflow/structures/steps.py +62 -0
  63. poreflow-0.2.3/src/poreflow/utils.py +304 -0
  64. 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,7 @@
1
+ cmake_minimum_required(VERSION ${CMAKE_VERSION})
2
+ project(IntelFortranImplicit Fortran)
3
+ add_custom_command(
4
+ OUTPUT output.cmake
5
+ COMMAND ${CMAKE_COMMAND} -P ${IntelFortranImplicit_SOURCE_DIR}/detect.cmake
6
+ )
7
+ add_library(FortranLib hello.f output.cmake)
@@ -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,7 @@
1
+ cmake_minimum_required(VERSION ${CMAKE_VERSION})
2
+ project(IntelFortranImplicit Fortran)
3
+ add_custom_command(
4
+ OUTPUT output.cmake
5
+ COMMAND ${CMAKE_COMMAND} -P ${IntelFortranImplicit_SOURCE_DIR}/detect.cmake
6
+ )
7
+ add_library(FortranLib hello.f output.cmake)
@@ -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.
@@ -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/
@@ -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"