bed-reader 1.0.3__tar.gz → 1.0.4__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.
- {bed_reader-1.0.3 → bed_reader-1.0.4}/.github/workflows/ci.yml +5 -5
- {bed_reader-1.0.3 → bed_reader-1.0.4}/CHANGELOG.md +6 -2
- {bed_reader-1.0.3 → bed_reader-1.0.4}/Cargo.lock +1 -1
- {bed_reader-1.0.3 → bed_reader-1.0.4}/Cargo.toml +1 -1
- {bed_reader-1.0.3 → bed_reader-1.0.4}/PKG-INFO +1 -1
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_open_bed.py +15 -3
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_open_bed.py +4 -5
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_open_bed_cloud.py +5 -6
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/python_module.rs +3 -3
- {bed_reader-1.0.3 → bed_reader-1.0.4}/.flake8 +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/.gitignore +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/.isort.cfg +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/AUTHORS.txt +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/LICENSE.md +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/README-rust.md +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/README.md +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/basic.css +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/doctools.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/documentation_options.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/file.png +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.4.1.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.5.1.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.6.0.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/badge_only.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/html5shiv-printshiv.min.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/html5shiv.min.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/modernizr.min.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/theme.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/language_data.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/minus.png +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/plus.png +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/pygments.css +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/searchtools.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/sphinx_highlight.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.12.0.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.13.1.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.3.1.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore.js +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/__init__.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_sample_data.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_to_bed.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/__init__.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/benchmark/bench2.ipynb +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/benchmark/benchmark.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/500x400_o640_array.memmap +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/badfile.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/empty.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bad_bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bim_bad_positions.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.deb +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.fam_bad +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.maf +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.mib +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small2_array.memmap +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_array.memmap +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_bim.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_bim.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_fam.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_fam.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmodebad.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.properties.npz +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.val.npy +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.bed +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.bim +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.fam +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/registry.txt +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_file_dot.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_opt_dep.py +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/build.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/examples/cloud.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/examples/no_cloud.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/pyproject.toml +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/pytest.ini +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements-dev.txt +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements-min-dev.txt +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements.txt +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/setpath.bat +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/bed_cloud.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/lib.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/supplemental_documents/cloud_urls_etc.md +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/supplemental_documents/options_etc.md +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/src/tests.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/tests/tests_api.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/tests/tests_api_cloud.rs +0 -0
- {bed_reader-1.0.3 → bed_reader-1.0.4}/useful.md +0 -0
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
strategy:
|
|
23
23
|
fail-fast: false
|
|
24
24
|
matrix:
|
|
25
|
-
os: [ubuntu-latest, macos-
|
|
25
|
+
os: [ubuntu-latest, macos-12, windows-latest]
|
|
26
26
|
runs-on: ${{ matrix.os }}
|
|
27
27
|
steps:
|
|
28
28
|
- name: Checkout
|
|
@@ -39,7 +39,7 @@ jobs:
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
macos:
|
|
42
|
-
runs-on: macos-
|
|
42
|
+
runs-on: macos-12
|
|
43
43
|
strategy:
|
|
44
44
|
matrix:
|
|
45
45
|
target: [x86_64, aarch64]
|
|
@@ -75,11 +75,11 @@ jobs:
|
|
|
75
75
|
- uses: actions/setup-python@v4
|
|
76
76
|
with:
|
|
77
77
|
python-version: |
|
|
78
|
-
3.7
|
|
79
78
|
3.8
|
|
80
79
|
3.9
|
|
81
80
|
3.10
|
|
82
81
|
3.11
|
|
82
|
+
3.12
|
|
83
83
|
- name: Build wheels
|
|
84
84
|
uses: PyO3/maturin-action@v1
|
|
85
85
|
with:
|
|
@@ -103,11 +103,11 @@ jobs:
|
|
|
103
103
|
- uses: actions/setup-python@v4
|
|
104
104
|
with:
|
|
105
105
|
python-version: |
|
|
106
|
-
3.7
|
|
107
106
|
3.8
|
|
108
107
|
3.9
|
|
109
108
|
3.10
|
|
110
109
|
3.11
|
|
110
|
+
3.12
|
|
111
111
|
architecture: ${{ matrix.target }}
|
|
112
112
|
- name: Build wheels
|
|
113
113
|
uses: PyO3/maturin-action@v1
|
|
@@ -142,7 +142,7 @@ jobs:
|
|
|
142
142
|
fail-fast: false
|
|
143
143
|
matrix:
|
|
144
144
|
python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
|
|
145
|
-
os: [ubuntu-latest, macos-
|
|
145
|
+
os: [ubuntu-latest, macos-12, windows-latest]
|
|
146
146
|
runs-on: ${{ matrix.os }}
|
|
147
147
|
steps:
|
|
148
148
|
- name: Checkout
|
|
@@ -5,13 +5,17 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.0.
|
|
8
|
+
## [1.0.4] - 2024-4-24
|
|
9
|
+
|
|
10
|
+
- Fix a minor bug in helper functions used by PySnpTools.
|
|
11
|
+
|
|
12
|
+
## [1.0.3] - 2024-4-17
|
|
9
13
|
|
|
10
14
|
- On the Python file, add `create-bed`, a method for writing large
|
|
11
15
|
bed files SNP-by-SNP (or individual-by-individual).
|
|
12
16
|
Also, add full support for the less common individual-major files.
|
|
13
17
|
|
|
14
|
-
## [1.0.
|
|
18
|
+
## [1.0.2] - 2024-3-16
|
|
15
19
|
|
|
16
20
|
- Add support for cloud files to both Rust and Python.
|
|
17
21
|
|
|
@@ -1345,16 +1345,28 @@ class open_bed:
|
|
|
1345
1345
|
if len(input.shape) != 1:
|
|
1346
1346
|
raise ValueError(f"{key} should be one dimensional")
|
|
1347
1347
|
|
|
1348
|
-
|
|
1348
|
+
do_missing_values = True
|
|
1349
|
+
if np.issubdtype(input.dtype, np.floating) and np.issubdtype(dtype, int):
|
|
1350
|
+
input[input != input] = missing_value
|
|
1351
|
+
old_settings = np.seterr(invalid="warn")
|
|
1352
|
+
try:
|
|
1353
|
+
output = np.array(input, dtype=dtype)
|
|
1354
|
+
finally:
|
|
1355
|
+
np.seterr(**old_settings)
|
|
1356
|
+
elif not np.issubdtype(input.dtype, dtype):
|
|
1349
1357
|
# This will convert, for example, numerical sids to string sids or
|
|
1350
1358
|
# floats that happen to be integers into ints,
|
|
1351
1359
|
# but there will be a warning generated.
|
|
1352
|
-
|
|
1360
|
+
old_settings = np.seterr(invalid="warn")
|
|
1361
|
+
try:
|
|
1362
|
+
output = np.array(input, dtype=dtype)
|
|
1363
|
+
finally:
|
|
1364
|
+
np.seterr(**old_settings)
|
|
1353
1365
|
else:
|
|
1354
1366
|
output = input
|
|
1355
1367
|
|
|
1356
1368
|
# Change NaN in input to correct missing value
|
|
1357
|
-
if np.issubdtype(input.dtype, np.floating):
|
|
1369
|
+
if do_missing_values and np.issubdtype(input.dtype, np.floating):
|
|
1358
1370
|
output[input != input] = missing_value
|
|
1359
1371
|
|
|
1360
1372
|
return output
|
|
@@ -880,11 +880,10 @@ def test_coverage2(shared_datadir, tmp_path):
|
|
|
880
880
|
|
|
881
881
|
|
|
882
882
|
def test_coverage3(shared_datadir, tmp_path):
|
|
883
|
-
with
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
assert np.array_equal(bed.sex, np.array([1, 0, 1, 2]))
|
|
883
|
+
with open_bed(
|
|
884
|
+
shared_datadir / "small.bed", properties={"sex": [1.0, np.nan, 1.0, 2.0]}
|
|
885
|
+
) as bed:
|
|
886
|
+
assert np.array_equal(bed.sex, np.array([1, 0, 1, 2]))
|
|
888
887
|
|
|
889
888
|
with open_bed(
|
|
890
889
|
shared_datadir / "small.bed",
|
|
@@ -712,12 +712,11 @@ def test_cloud_coverage2(shared_datadir, tmp_path):
|
|
|
712
712
|
|
|
713
713
|
|
|
714
714
|
def test_cloud_coverage3(shared_datadir, tmp_path):
|
|
715
|
-
with
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
assert np.array_equal(bed.sex, np.array([1, 0, 1, 2]))
|
|
715
|
+
with open_bed(
|
|
716
|
+
file_to_url(shared_datadir / "small.bed"),
|
|
717
|
+
properties={"sex": [1.0, np.nan, 1.0, 2.0]},
|
|
718
|
+
) as bed:
|
|
719
|
+
assert np.array_equal(bed.sex, np.array([1, 0, 1, 2]))
|
|
721
720
|
|
|
722
721
|
with open_bed(
|
|
723
722
|
file_to_url(shared_datadir / "small.bed"),
|
|
@@ -448,7 +448,7 @@ fn bed_reader(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
|
|
448
448
|
let iid_index = iid_index.readonly();
|
|
449
449
|
let sid_index = sid_index.readonly();
|
|
450
450
|
|
|
451
|
-
let val_in = val_in.
|
|
451
|
+
let val_in = val_in.readonly();
|
|
452
452
|
let val_in = val_in.as_array();
|
|
453
453
|
let mut val_out = val_out.readwrite();
|
|
454
454
|
let mut val_out = val_out.as_array_mut();
|
|
@@ -473,7 +473,7 @@ fn bed_reader(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
|
|
473
473
|
let iid_index = iid_index.readonly();
|
|
474
474
|
let sid_index = sid_index.readonly();
|
|
475
475
|
|
|
476
|
-
let val_in = val_in.
|
|
476
|
+
let val_in = val_in.readonly();
|
|
477
477
|
let val_in = val_in.as_array();
|
|
478
478
|
let mut val_out = val_out.readwrite();
|
|
479
479
|
let mut val_out = val_out.as_array_mut();
|
|
@@ -498,7 +498,7 @@ fn bed_reader(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
|
|
|
498
498
|
let iid_index = iid_index.readonly();
|
|
499
499
|
let sid_index = sid_index.readonly();
|
|
500
500
|
|
|
501
|
-
let val_in = val_in.
|
|
501
|
+
let val_in = val_in.readonly();
|
|
502
502
|
let val_in = val_in.as_array();
|
|
503
503
|
let mut val_out = val_out.readwrite();
|
|
504
504
|
let mut val_out = val_out.as_array_mut();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|