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.
Files changed (105) hide show
  1. {bed_reader-1.0.3 → bed_reader-1.0.4}/.github/workflows/ci.yml +5 -5
  2. {bed_reader-1.0.3 → bed_reader-1.0.4}/CHANGELOG.md +6 -2
  3. {bed_reader-1.0.3 → bed_reader-1.0.4}/Cargo.lock +1 -1
  4. {bed_reader-1.0.3 → bed_reader-1.0.4}/Cargo.toml +1 -1
  5. {bed_reader-1.0.3 → bed_reader-1.0.4}/PKG-INFO +1 -1
  6. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_open_bed.py +15 -3
  7. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_open_bed.py +4 -5
  8. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_open_bed_cloud.py +5 -6
  9. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/python_module.rs +3 -3
  10. {bed_reader-1.0.3 → bed_reader-1.0.4}/.flake8 +0 -0
  11. {bed_reader-1.0.3 → bed_reader-1.0.4}/.gitignore +0 -0
  12. {bed_reader-1.0.3 → bed_reader-1.0.4}/.isort.cfg +0 -0
  13. {bed_reader-1.0.3 → bed_reader-1.0.4}/AUTHORS.txt +0 -0
  14. {bed_reader-1.0.3 → bed_reader-1.0.4}/LICENSE.md +0 -0
  15. {bed_reader-1.0.3 → bed_reader-1.0.4}/README-rust.md +0 -0
  16. {bed_reader-1.0.3 → bed_reader-1.0.4}/README.md +0 -0
  17. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  18. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/basic.css +0 -0
  19. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/doctools.js +0 -0
  20. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/documentation_options.js +0 -0
  21. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/file.png +0 -0
  22. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.4.1.js +0 -0
  23. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.5.1.js +0 -0
  24. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery-3.6.0.js +0 -0
  25. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/jquery.js +0 -0
  26. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/badge_only.js +0 -0
  27. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/html5shiv-printshiv.min.js +0 -0
  28. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/html5shiv.min.js +0 -0
  29. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/modernizr.min.js +0 -0
  30. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/js/theme.js +0 -0
  31. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/language_data.js +0 -0
  32. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/minus.png +0 -0
  33. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/plus.png +0 -0
  34. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/pygments.css +0 -0
  35. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/searchtools.js +0 -0
  36. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/sphinx_highlight.js +0 -0
  37. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.12.0.js +0 -0
  38. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.13.1.js +0 -0
  39. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore-1.3.1.js +0 -0
  40. {bed_reader-1.0.3 → bed_reader-1.0.4}/_static/underscore.js +0 -0
  41. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/__init__.py +0 -0
  42. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_sample_data.py +0 -0
  43. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/_to_bed.py +0 -0
  44. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/__init__.py +0 -0
  45. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/benchmark/bench2.ipynb +0 -0
  46. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/benchmark/benchmark.py +0 -0
  47. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/500x400_o640_array.memmap +0 -0
  48. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/badfile.bed +0 -0
  49. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/empty.bed +0 -0
  50. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bed +0 -0
  51. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bim +0 -0
  52. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.fam +0 -0
  53. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bad_bim +0 -0
  54. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bed +0 -0
  55. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bim +0 -0
  56. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.bim_bad_positions.bim +0 -0
  57. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.deb +0 -0
  58. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.fam +0 -0
  59. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.fam_bad +0 -0
  60. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.maf +0 -0
  61. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small.mib +0 -0
  62. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small2_array.memmap +0 -0
  63. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_array.memmap +0 -0
  64. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_bim.bed +0 -0
  65. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_bim.fam +0 -0
  66. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_fam.bed +0 -0
  67. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_no_fam.bim +0 -0
  68. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.bed +0 -0
  69. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.bim +0 -0
  70. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/small_too_short.fam +0 -0
  71. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.bed +0 -0
  72. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.bim +0 -0
  73. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmode0.fam +0 -0
  74. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/smallmodebad.bed +0 -0
  75. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.bed +0 -0
  76. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.bim +0 -0
  77. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.fam +0 -0
  78. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.properties.npz +0 -0
  79. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/some_missing.val.npy +0 -0
  80. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.bed +0 -0
  81. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.bim +0 -0
  82. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/sparse.fam +0 -0
  83. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.bed +0 -0
  84. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.bim +0 -0
  85. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/data/toydata.5chrom.fam +0 -0
  86. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/registry.txt +0 -0
  87. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_file_dot.py +0 -0
  88. {bed_reader-1.0.3 → bed_reader-1.0.4}/bed_reader/tests/test_opt_dep.py +0 -0
  89. {bed_reader-1.0.3 → bed_reader-1.0.4}/build.rs +0 -0
  90. {bed_reader-1.0.3 → bed_reader-1.0.4}/examples/cloud.rs +0 -0
  91. {bed_reader-1.0.3 → bed_reader-1.0.4}/examples/no_cloud.rs +0 -0
  92. {bed_reader-1.0.3 → bed_reader-1.0.4}/pyproject.toml +0 -0
  93. {bed_reader-1.0.3 → bed_reader-1.0.4}/pytest.ini +0 -0
  94. {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements-dev.txt +0 -0
  95. {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements-min-dev.txt +0 -0
  96. {bed_reader-1.0.3 → bed_reader-1.0.4}/requirements.txt +0 -0
  97. {bed_reader-1.0.3 → bed_reader-1.0.4}/setpath.bat +0 -0
  98. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/bed_cloud.rs +0 -0
  99. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/lib.rs +0 -0
  100. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/supplemental_documents/cloud_urls_etc.md +0 -0
  101. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/supplemental_documents/options_etc.md +0 -0
  102. {bed_reader-1.0.3 → bed_reader-1.0.4}/src/tests.rs +0 -0
  103. {bed_reader-1.0.3 → bed_reader-1.0.4}/tests/tests_api.rs +0 -0
  104. {bed_reader-1.0.3 → bed_reader-1.0.4}/tests/tests_api_cloud.rs +0 -0
  105. {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-latest, windows-latest]
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-latest
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-latest, windows-latest]
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.2] - 2024-4-17
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.1] - 2024-3-16
18
+ ## [1.0.2] - 2024-3-16
15
19
 
16
20
  - Add support for cloud files to both Rust and Python.
17
21
 
@@ -136,7 +136,7 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
136
136
 
137
137
  [[package]]
138
138
  name = "bed-reader"
139
- version = "1.0.3"
139
+ version = "1.0.4"
140
140
  dependencies = [
141
141
  "anyhow",
142
142
  "anyinput",
@@ -1,5 +1,5 @@
1
1
  [package]
2
- version = "1.0.3"
2
+ version = "1.0.4"
3
3
  name = "bed-reader"
4
4
  description = "Read and write the PLINK BED format, simply and efficiently."
5
5
  repository = "https://github.com/fastlmm/bed-reader"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bed-reader
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Classifier: Programming Language :: Python :: 3.8
5
5
  Classifier: Programming Language :: Python :: 3.9
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -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
- if not np.issubdtype(input.dtype, dtype):
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
- output = np.array(input, dtype=dtype)
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 pytest.warns(RuntimeWarning, match="invalid value encountered in cast"):
884
- with open_bed(
885
- shared_datadir / "small.bed", properties={"sex": [1.0, np.nan, 1.0, 2.0]}
886
- ) as bed:
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 pytest.warns(RuntimeWarning, match="invalid value encountered in cast"):
716
- with open_bed(
717
- file_to_url(shared_datadir / "small.bed"),
718
- properties={"sex": [1.0, np.nan, 1.0, 2.0]},
719
- ) as bed:
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.readwrite();
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.readwrite();
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.readwrite();
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