bed-reader 1.0.0b3__tar.gz → 1.0.0b4__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 (73) hide show
  1. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/Cargo.lock +1 -1
  2. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/Cargo.toml +1 -1
  3. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/PKG-INFO +1 -1
  4. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/_open_bed.py +26 -1
  5. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/test_open_bed.py +33 -0
  6. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/.flake8 +0 -0
  7. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/.github/workflows/ci.yml +0 -0
  8. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/.gitignore +0 -0
  9. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/.isort.cfg +0 -0
  10. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/AUTHORS.txt +0 -0
  11. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/CHANGELOG.md +0 -0
  12. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/LICENSE.md +0 -0
  13. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/README-rust.md +0 -0
  14. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/README.md +0 -0
  15. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/__init__.py +0 -0
  16. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/_sample_data.py +0 -0
  17. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/_to_bed.py +0 -0
  18. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/__init__.py +0 -0
  19. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/benchmark/benchmark.py +0 -0
  20. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/500x400_o640_array.memmap +0 -0
  21. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/badfile.bed +0 -0
  22. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/empty.bed +0 -0
  23. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bed +0 -0
  24. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.bim +0 -0
  25. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/plink_sim_10s_100v_10pmiss.fam +0 -0
  26. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.bad_bim +0 -0
  27. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.bed +0 -0
  28. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.bim +0 -0
  29. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.bim_bad_positions.bim +0 -0
  30. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.deb +0 -0
  31. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.fam +0 -0
  32. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.fam_bad +0 -0
  33. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.maf +0 -0
  34. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small.mib +0 -0
  35. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small2_array.memmap +0 -0
  36. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_array.memmap +0 -0
  37. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_no_bim.bed +0 -0
  38. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_no_bim.fam +0 -0
  39. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_no_fam.bed +0 -0
  40. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_no_fam.bim +0 -0
  41. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_too_short.bed +0 -0
  42. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_too_short.bim +0 -0
  43. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/small_too_short.fam +0 -0
  44. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/smallmode0.bed +0 -0
  45. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/smallmode0.bim +0 -0
  46. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/smallmode0.fam +0 -0
  47. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/smallmodebad.bed +0 -0
  48. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/some_missing.bed +0 -0
  49. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/some_missing.bim +0 -0
  50. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/some_missing.fam +0 -0
  51. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/some_missing.properties.npz +0 -0
  52. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/some_missing.val.npy +0 -0
  53. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/sparse.bed +0 -0
  54. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/sparse.bim +0 -0
  55. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/sparse.fam +0 -0
  56. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/toydata.5chrom.bed +0 -0
  57. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/toydata.5chrom.bim +0 -0
  58. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/data/toydata.5chrom.fam +0 -0
  59. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/registry.txt +0 -0
  60. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/test_file_dot.py +0 -0
  61. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/bed_reader/tests/test_opt_dep.py +0 -0
  62. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/build.rs +0 -0
  63. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/ignore.py +0 -0
  64. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/pyproject.toml +0 -0
  65. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/pytest.ini +0 -0
  66. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/requirements-dev.txt +0 -0
  67. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/requirements-min-dev.txt +0 -0
  68. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/requirements.txt +0 -0
  69. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/src/lib.rs +0 -0
  70. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/src/python_module.rs +0 -0
  71. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/src/tests.rs +0 -0
  72. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/tests/tests_api.rs +0 -0
  73. {bed_reader-1.0.0b3 → bed_reader-1.0.0b4}/useful.bat +0 -0
@@ -86,7 +86,7 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
86
86
 
87
87
  [[package]]
88
88
  name = "bed-reader"
89
- version = "1.0.0-beta.3"
89
+ version = "1.0.0-beta.4"
90
90
  dependencies = [
91
91
  "anyinput",
92
92
  "approx 0.5.1",
@@ -1,7 +1,7 @@
1
1
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
2
2
 
3
3
  [package]
4
- version = "1.0.0-beta.3"
4
+ version = "1.0.0-beta.4"
5
5
  name = "bed-reader"
6
6
  description = "Read and write the PLINK BED format, simply and efficiently."
7
7
  repository = "https://github.com/fastlmm/bed-reader"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bed-reader
3
- Version: 1.0.0b3
3
+ Version: 1.0.0b4
4
4
  Classifier: Programming Language :: Python :: 3.8
5
5
  Classifier: Programming Language :: Python :: 3.9
6
6
  Classifier: Programming Language :: Python :: 3.10
@@ -1511,11 +1511,36 @@ def _read_csv(filepath, delimiter=None, dtype=None, usecols=None):
1511
1511
  # Find the dtype for this column
1512
1512
  col_dtype = dtype.get(input_index, np.str_)
1513
1513
  # Convert the column list to a numpy array with the specified dtype
1514
- columns.append(np.array(col, dtype=col_dtype))
1514
+ columns.append(_convert_to_dtype(col, col_dtype))
1515
1515
 
1516
1516
  return columns, row_count
1517
1517
 
1518
1518
 
1519
+ def _convert_to_dtype(str_arr, dtype):
1520
+ assert dtype in [np.str_, np.float32, np.int32] # real assert
1521
+
1522
+ if dtype == np.str_:
1523
+ return str_arr
1524
+
1525
+ try:
1526
+ new_arr = str_arr.astype(dtype)
1527
+ except ValueError as e:
1528
+ if dtype == np.float32:
1529
+ raise e
1530
+ # for backwards compatibility, see if intermediate float helps int conversion
1531
+ try:
1532
+ assert dtype == np.int32 # real assert
1533
+ float_arr = str_arr.astype(np.float32)
1534
+ except ValueError:
1535
+ raise e
1536
+ new_arr = float_arr.astype(np.int32)
1537
+ if not np.array_equal(new_arr, float_arr):
1538
+ raise ValueError(
1539
+ f"invalid literal for int: '{str_arr[np.where(new_arr != float_arr)][:1]}')"
1540
+ )
1541
+ return new_arr
1542
+
1543
+
1519
1544
  if __name__ == "__main__":
1520
1545
  import pytest
1521
1546
 
@@ -898,6 +898,39 @@ def test_sparse():
898
898
  print(val_sparse.shape)
899
899
 
900
900
 
901
+ def test_convert_to_dtype():
902
+ from bed_reader._open_bed import _convert_to_dtype
903
+
904
+ input = [
905
+ [["a", "b", "c"], ["a", "b", "c"], None, None],
906
+ [["1.0", "2.0", "3.0"], ["1.0", "2.0", "3.0"], [1, 2, 3], [1.0, 2.0, 3.0]],
907
+ [["1.0", "2.0", "3.5"], ["1.0", "2.0", "3.5"], None, [1.0, 2.0, 3.5]],
908
+ [["1", "2", "3"], ["1", "2", "3"], [1, 2, 3], [1.0, 2.0, 3.0]],
909
+ [["1", "A", "3"], ["1", "A", "3"], None, None],
910
+ ]
911
+ # convert all to np.array
912
+ input = [
913
+ [np.array(inner) if inner is not None else None for inner in outer]
914
+ for outer in input
915
+ ]
916
+
917
+ for ori, exp_str, exp_int, exp_float in input:
918
+ for dtype, exp in (
919
+ [np.str_, exp_str],
920
+ [np.int32, exp_int],
921
+ [
922
+ np.float32,
923
+ exp_float,
924
+ ],
925
+ ):
926
+ try:
927
+ actual = _convert_to_dtype(ori, dtype)
928
+ assert np.array_equal(actual, exp)
929
+ except ValueError as e:
930
+ print(e)
931
+ assert exp is None
932
+
933
+
901
934
  if __name__ == "__main__":
902
935
  logging.basicConfig(level=logging.INFO)
903
936
 
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