@gmod/cram 3.0.6 → 3.0.7

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 (113) hide show
  1. package/dist/cram-bundle.js +1 -1
  2. package/dist/cramFile/codecs/byteArrayStop.d.ts +2 -2
  3. package/dist/cramFile/file.js +8 -10
  4. package/dist/cramFile/file.js.map +1 -1
  5. package/dist/cramFile/util.js.map +1 -1
  6. package/dist/htscodecs/arith_gen.d.ts +26 -0
  7. package/dist/htscodecs/arith_gen.js +558 -0
  8. package/dist/htscodecs/arith_gen.js.map +1 -0
  9. package/dist/htscodecs/arith_sh.d.ts +16 -0
  10. package/dist/htscodecs/arith_sh.js +128 -0
  11. package/dist/htscodecs/arith_sh.js.map +1 -0
  12. package/dist/htscodecs/byte_model.d.ts +11 -0
  13. package/dist/htscodecs/byte_model.js +113 -0
  14. package/dist/htscodecs/byte_model.js.map +1 -0
  15. package/dist/htscodecs/fqzcomp.d.ts +2 -0
  16. package/dist/htscodecs/fqzcomp.js +744 -0
  17. package/dist/htscodecs/fqzcomp.js.map +1 -0
  18. package/dist/htscodecs/index.d.ts +5 -0
  19. package/dist/htscodecs/index.js +70 -0
  20. package/dist/htscodecs/index.js.map +1 -0
  21. package/dist/htscodecs/iostream.d.ts +26 -0
  22. package/dist/htscodecs/iostream.js +242 -0
  23. package/dist/htscodecs/iostream.js.map +1 -0
  24. package/dist/htscodecs/main_arith_gen.d.ts +1 -0
  25. package/dist/htscodecs/main_arith_gen.js +86 -0
  26. package/dist/htscodecs/main_arith_gen.js.map +1 -0
  27. package/dist/htscodecs/main_fqzcomp.d.ts +1 -0
  28. package/dist/htscodecs/main_fqzcomp.js +112 -0
  29. package/dist/htscodecs/main_fqzcomp.js.map +1 -0
  30. package/dist/htscodecs/main_rans.d.ts +1 -0
  31. package/dist/htscodecs/main_rans.js +83 -0
  32. package/dist/htscodecs/main_rans.js.map +1 -0
  33. package/dist/htscodecs/main_rans4x16.d.ts +1 -0
  34. package/dist/htscodecs/main_rans4x16.js +82 -0
  35. package/dist/htscodecs/main_rans4x16.js.map +1 -0
  36. package/dist/htscodecs/main_tok3.d.ts +1 -0
  37. package/dist/htscodecs/main_tok3.js +84 -0
  38. package/dist/htscodecs/main_tok3.js.map +1 -0
  39. package/dist/htscodecs/rans.d.ts +2 -0
  40. package/dist/htscodecs/rans.js +480 -0
  41. package/dist/htscodecs/rans.js.map +1 -0
  42. package/dist/htscodecs/rans4x16.d.ts +2 -0
  43. package/dist/htscodecs/rans4x16.js +896 -0
  44. package/dist/htscodecs/rans4x16.js.map +1 -0
  45. package/dist/htscodecs/tok3.d.ts +2 -0
  46. package/dist/htscodecs/tok3.js +347 -0
  47. package/dist/htscodecs/tok3.js.map +1 -0
  48. package/esm/cramFile/codecs/byteArrayStop.d.ts +2 -2
  49. package/esm/cramFile/file.js +8 -10
  50. package/esm/cramFile/file.js.map +1 -1
  51. package/esm/cramFile/util.js.map +1 -1
  52. package/esm/htscodecs/arith_gen.d.ts +26 -0
  53. package/esm/htscodecs/arith_gen.js +558 -0
  54. package/esm/htscodecs/arith_gen.js.map +1 -0
  55. package/esm/htscodecs/arith_sh.d.ts +16 -0
  56. package/esm/htscodecs/arith_sh.js +128 -0
  57. package/esm/htscodecs/arith_sh.js.map +1 -0
  58. package/esm/htscodecs/byte_model.d.ts +11 -0
  59. package/esm/htscodecs/byte_model.js +113 -0
  60. package/esm/htscodecs/byte_model.js.map +1 -0
  61. package/esm/htscodecs/fqzcomp.d.ts +2 -0
  62. package/esm/htscodecs/fqzcomp.js +744 -0
  63. package/esm/htscodecs/fqzcomp.js.map +1 -0
  64. package/esm/htscodecs/index.d.ts +5 -0
  65. package/esm/htscodecs/index.js +70 -0
  66. package/esm/htscodecs/index.js.map +1 -0
  67. package/esm/htscodecs/iostream.d.ts +26 -0
  68. package/esm/htscodecs/iostream.js +242 -0
  69. package/esm/htscodecs/iostream.js.map +1 -0
  70. package/esm/htscodecs/main_arith_gen.d.ts +1 -0
  71. package/esm/htscodecs/main_arith_gen.js +86 -0
  72. package/esm/htscodecs/main_arith_gen.js.map +1 -0
  73. package/esm/htscodecs/main_fqzcomp.d.ts +1 -0
  74. package/esm/htscodecs/main_fqzcomp.js +112 -0
  75. package/esm/htscodecs/main_fqzcomp.js.map +1 -0
  76. package/esm/htscodecs/main_rans.d.ts +1 -0
  77. package/esm/htscodecs/main_rans.js +83 -0
  78. package/esm/htscodecs/main_rans.js.map +1 -0
  79. package/esm/htscodecs/main_rans4x16.d.ts +1 -0
  80. package/esm/htscodecs/main_rans4x16.js +82 -0
  81. package/esm/htscodecs/main_rans4x16.js.map +1 -0
  82. package/esm/htscodecs/main_tok3.d.ts +1 -0
  83. package/esm/htscodecs/main_tok3.js +84 -0
  84. package/esm/htscodecs/main_tok3.js.map +1 -0
  85. package/esm/htscodecs/rans.d.ts +2 -0
  86. package/esm/htscodecs/rans.js +480 -0
  87. package/esm/htscodecs/rans.js.map +1 -0
  88. package/esm/htscodecs/rans4x16.d.ts +2 -0
  89. package/esm/htscodecs/rans4x16.js +896 -0
  90. package/esm/htscodecs/rans4x16.js.map +1 -0
  91. package/esm/htscodecs/tok3.d.ts +2 -0
  92. package/esm/htscodecs/tok3.js +347 -0
  93. package/esm/htscodecs/tok3.js.map +1 -0
  94. package/package.json +1 -2
  95. package/src/cramFile/file.ts +8 -10
  96. package/src/cramFile/util.ts +0 -1
  97. package/src/htscodecs/Makefile +142 -0
  98. package/src/htscodecs/README.md +64 -0
  99. package/src/htscodecs/arith_gen.js +607 -0
  100. package/src/htscodecs/arith_sh.js +138 -0
  101. package/src/htscodecs/byte_model.js +126 -0
  102. package/src/htscodecs/fqzcomp.js +834 -0
  103. package/src/htscodecs/index.js +79 -0
  104. package/src/htscodecs/iostream.js +256 -0
  105. package/src/htscodecs/main_arith_gen.js +96 -0
  106. package/src/htscodecs/main_fqzcomp.js +113 -0
  107. package/src/htscodecs/main_rans.js +88 -0
  108. package/src/htscodecs/main_rans4x16.js +87 -0
  109. package/src/htscodecs/main_tok3.js +86 -0
  110. package/src/htscodecs/rans.js +545 -0
  111. package/src/htscodecs/rans4x16.js +1003 -0
  112. package/src/htscodecs/tok3.js +396 -0
  113. package/src/typings/htscodecs.d.ts +0 -6
@@ -0,0 +1,142 @@
1
+ all: test
2
+
3
+ CBIN=../build/tests
4
+ NODE=node
5
+ NODE_OPTS=--use-strict
6
+
7
+ TESTS=test_r4x8 test_r4x16 test_arith test_fqzcomp test_tok3
8
+ CORPUS=../tests
9
+
10
+ modules: node_modules/bzip2 node_modules/minimist
11
+
12
+ node_modules/bzip2:
13
+ -mkdir node_modules
14
+ npm install bzip2
15
+
16
+ node_modules/minimist:
17
+ -mkdir node_modules
18
+ npm install minimist
19
+
20
+ test check: modules ${TESTS}
21
+
22
+ test_r4x8:
23
+ @echo
24
+ @echo === Checking r4x8
25
+ @if [ ! -e ${CBIN}/rans4x8 ]; then echo "Set CBIN if you wish to validate against C version"; fi
26
+ @for i in ${CORPUS}/dat/r4x8/*; do \
27
+ echo $$i;\
28
+ base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
29
+ level=`echo $$i | sed 's/.*\.//'`;\
30
+ # Decode predefined data set\
31
+ a=`${NODE} ${NODE_OPTS} main_rans.js -d -r $$i 2>/dev/null | md5sum`; \
32
+ b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
33
+ test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
34
+ # Round trip. \
35
+ cut -f 1 < $$base | tr -d '\012' > _nonl; \
36
+ ${NODE} ${NODE_OPTS} main_rans.js -o $$level -r _nonl 2>/dev/null > _; \
37
+ a=`${NODE} ${NODE_OPTS} main_rans.js -d -r _ 2>/dev/null | md5sum`; \
38
+ test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
39
+ if [ -e ${CBIN}/rans4x8 ]; \
40
+ then \
41
+ a=`${CBIN}/rans4x8 -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
42
+ test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
43
+ fi; \
44
+ done
45
+
46
+ test_r4x16:
47
+ @echo
48
+ @echo === Checking r4x16
49
+ @if [ ! -e ${CBIN}/rans4x16pr ]; then echo "Set CBIN if you wish to validate against C version"; fi
50
+ @for i in ${CORPUS}/dat/r4x16/*; do \
51
+ echo $$i;\
52
+ base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
53
+ level=`echo $$i | sed 's/.*\.//'`;\
54
+ # Decode predefined data set\
55
+ a=`${NODE} ${NODE_OPTS} main_rans4x16.js -d -r $$i 2>/dev/null | md5sum`; \
56
+ b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
57
+ test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
58
+ # Round trip. \
59
+ cut -f 1 < $$base | tr -d '\012' > _nonl; \
60
+ ${NODE} ${NODE_OPTS} main_rans4x16.js -o $$level -r _nonl 2>/dev/null > _; \
61
+ a=`${NODE} ${NODE_OPTS} main_rans4x16.js -d -r _ 2>/dev/null | md5sum`; \
62
+ test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
63
+ if [ -e ${CBIN}/rans4x16pr ]; \
64
+ then \
65
+ a=`${CBIN}/rans4x16pr -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
66
+ test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
67
+ fi; \
68
+ done
69
+
70
+ test_arith:
71
+ @echo
72
+ @echo === Checking arith
73
+ @if [ ! -e ${CBIN}/arith_dynamic ]; then echo "Set CBIN if you wish to validate against C version"; fi
74
+ @for i in ${CORPUS}/dat/arith/*; do \
75
+ echo $$i;\
76
+ base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
77
+ level=`echo $$i | sed 's/.*\.//'`;\
78
+ # Decode predefined data set\
79
+ a=`${NODE} ${NODE_OPTS} main_arith_gen.js -d -r $$i 2>/dev/null | md5sum`; \
80
+ b=`cut -f 1 < $$base | tr -d '\012' | md5sum`; \
81
+ test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
82
+ # Round trip. \
83
+ cut -f 1 < $$base | tr -d '\012' > _nonl; \
84
+ ${NODE} ${NODE_OPTS} main_arith_gen.js -o $$level -r _nonl 2>/dev/null > _; \
85
+ a=`${NODE} ${NODE_OPTS} main_arith_gen.js -d -r _ 2>/dev/null | md5sum`; \
86
+ test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
87
+ if [ -e ${CBIN}/arith_dynamic ]; \
88
+ then \
89
+ a=`${CBIN}/arith_dynamic -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
90
+ test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
91
+ fi; \
92
+ done
93
+
94
+ test_fqzcomp:
95
+ @echo
96
+ @echo === Checking fqzcomp
97
+ @if [ ! -e ${CBIN}/fqzcomp_qual ]; then echo "Set CBIN if you wish to validate against C version"; fi
98
+ @for i in ${CORPUS}/dat/fqzcomp/q*; do \
99
+ echo $$i;\
100
+ base=`echo $$i | sed 's/\.[0-9]*$$//;s#/q#/../q#'`; \
101
+ level=`echo $$i | sed 's/.*\.//'`;\
102
+ # Decode predefined data set\
103
+ a=`${NODE} ${NODE_OPTS} main_fqzcomp.js -d -r $$i 2>/dev/null | md5sum`; \
104
+ b=`awk '{print $$1}' $$base | md5sum`; \
105
+ test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
106
+ # Round trip. \
107
+ ${NODE} ${NODE_OPTS} main_fqzcomp.js -s $$level -r $$base 2>/dev/null > _; \
108
+ a=`${NODE} ${NODE_OPTS} main_fqzcomp -d -r _ 2>/dev/null | md5sum`; \
109
+ test "$$a" = "$$b" || echo $<: Fail round-trip for $$base with level $$level; \
110
+ if [ -e ${CBIN}/fqzcomp_qual ]; \
111
+ then \
112
+ a=`${CBIN}/fqzcomp_qual -d -r < _ 2>/dev/null | tr '\000' '\012' | md5sum`; \
113
+ test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
114
+ fi; \
115
+ done
116
+
117
+ test_tok3:
118
+ @echo
119
+ @echo === Checking tok3
120
+ @if [ ! -e ${CBIN}/tokenise_name3 ]; then echo "Set CBIN if you wish to validate against C version"; fi
121
+ @for base in ${CORPUS}/names/*.names; do \
122
+ echo -n "$$base ";\
123
+ ${NODE} ${NODE_OPTS} main_tok3.js -a -r $$base 2>/dev/null > _; \
124
+ a=`${NODE} ${NODE_OPTS} main_tok3 -d -r _ 2>/dev/null | md5sum`; \
125
+ cat _ | wc -c;\
126
+ b=`cat $$base | md5sum`; \
127
+ test "$$a" = "$$b" || echo $<: Fail round-trip for $$base; \
128
+ if [ -e ${CBIN}/tokenise_name3 ]; \
129
+ then \
130
+ a=`${CBIN}/tokenise_name3 -d -r < _ | tr '\000' '\012' | md5sum`; \
131
+ test "$$a" = "$$b" || echo $<: Fail JS to C round-trip for $$base; \
132
+ fi; \
133
+ done;
134
+ @for i in ${CORPUS}/names/tok3/*; do \
135
+ echo $$i;\
136
+ base=`echo $$i | sed 's/\.[0-9]*$$//;s#/tok3##'`; \
137
+ level=`echo $$i | sed 's/.*\.//'`;\
138
+ # Decode predefined data set\
139
+ a=`${NODE} ${NODE_OPTS} main_tok3 -d -r $$i 2>/dev/null | md5sum`; \
140
+ b=`cat $$base | md5sum`; \
141
+ test "$$a" = "$$b" || echo $<: Mismatch for $$i; \
142
+ done;
@@ -0,0 +1,64 @@
1
+ # Reference implementation files
2
+
3
+ This directory contains javascript implementations of the custom codecs using in
4
+ CRAM 3.1, capable of being run under node.js.
5
+
6
+ These is not written for speed, but for clarity and as an exercise in checking
7
+ the pseudocode in the CRAM specification. It is written as close to this
8
+ pseudocode as is possible.
9
+
10
+ Prerequisites: minimist package for command line parsing and bzip2 for part of
11
+ the arith_gen.js code.
12
+
13
+ npm install minimist
14
+ npm install bzip2
15
+
16
+ ## iostream.js
17
+
18
+ Makes a buffer appear to be a stream with ReadByte, ReadITF8, etc functions.
19
+
20
+ ## rans.js
21
+
22
+ Implements the order-0 and order-1 rans (4x8) decoder as used in CRAM3.0.
23
+
24
+ ## main_rans.js
25
+
26
+ A command line tool to exercise the rans.js code, included for debug purposes.
27
+
28
+ ## rans4x16.js, main_rans4x16.js
29
+
30
+ A 16-bit renormalising variant of rANS above. This also includes transforms for
31
+ RLE, bit-packing and 4-way interleaving.
32
+
33
+ ## arith_sh.js
34
+
35
+ Arithmetic (range) coding with Schindler carry handling.
36
+
37
+ ## byte_model.js
38
+
39
+ An adaptive model for keeping track of symbol frequencies.
40
+
41
+ ## arith_gen.js, main_arith_gen.js
42
+
43
+ Wrapper around arith_sh.js to perform order-0/1 encoding with RLE and
44
+ bit-packing. Plus debug command line tool
45
+
46
+ ## fqzcomp.js, main_fqzcomp.js
47
+
48
+ Implements the fqzcomp quality compression codec. Plus debug command line tool.
49
+
50
+ ## tok3.js, main_tok3.js
51
+
52
+ Implements the tokenise_name3 read identifier compression codec. Plus debug
53
+ command line tool.
54
+
55
+ # Testing
56
+
57
+ The various main js files can be used for adhoc testing. There is also a
58
+ Makefile which performs checks against known defined data streams and does
59
+ round-trip testing in both Javascript and if compiled the C variant. You can set
60
+ CORPUS make variable to a larger data set such htscodecs-corpus.
61
+
62
+ eg.
63
+
64
+ make check CORPUS=../tests/htscodecs-corpus/