@silupanda/label-score 0.3.2

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 (70) hide show
  1. package/README.md +694 -0
  2. package/dist/__tests__/cohen-kappa.test.d.ts +2 -0
  3. package/dist/__tests__/cohen-kappa.test.d.ts.map +1 -0
  4. package/dist/__tests__/cohen-kappa.test.js +110 -0
  5. package/dist/__tests__/cohen-kappa.test.js.map +1 -0
  6. package/dist/__tests__/fleiss-kappa.test.d.ts +2 -0
  7. package/dist/__tests__/fleiss-kappa.test.d.ts.map +1 -0
  8. package/dist/__tests__/fleiss-kappa.test.js +84 -0
  9. package/dist/__tests__/fleiss-kappa.test.js.map +1 -0
  10. package/dist/__tests__/gwet-ac1.test.d.ts +2 -0
  11. package/dist/__tests__/gwet-ac1.test.d.ts.map +1 -0
  12. package/dist/__tests__/gwet-ac1.test.js +74 -0
  13. package/dist/__tests__/gwet-ac1.test.js.map +1 -0
  14. package/dist/__tests__/interpret.test.d.ts +2 -0
  15. package/dist/__tests__/interpret.test.d.ts.map +1 -0
  16. package/dist/__tests__/interpret.test.js +66 -0
  17. package/dist/__tests__/interpret.test.js.map +1 -0
  18. package/dist/__tests__/krippendorff-alpha.test.d.ts +2 -0
  19. package/dist/__tests__/krippendorff-alpha.test.d.ts.map +1 -0
  20. package/dist/__tests__/krippendorff-alpha.test.js +98 -0
  21. package/dist/__tests__/krippendorff-alpha.test.js.map +1 -0
  22. package/dist/__tests__/scott-pi.test.d.ts +2 -0
  23. package/dist/__tests__/scott-pi.test.d.ts.map +1 -0
  24. package/dist/__tests__/scott-pi.test.js +60 -0
  25. package/dist/__tests__/scott-pi.test.js.map +1 -0
  26. package/dist/__tests__/types.test.d.ts +2 -0
  27. package/dist/__tests__/types.test.d.ts.map +1 -0
  28. package/dist/__tests__/types.test.js +92 -0
  29. package/dist/__tests__/types.test.js.map +1 -0
  30. package/dist/__tests__/validate.test.d.ts +2 -0
  31. package/dist/__tests__/validate.test.d.ts.map +1 -0
  32. package/dist/__tests__/validate.test.js +121 -0
  33. package/dist/__tests__/validate.test.js.map +1 -0
  34. package/dist/index.d.ts +9 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +24 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/interpret.d.ts +23 -0
  39. package/dist/interpret.d.ts.map +1 -0
  40. package/dist/interpret.js +48 -0
  41. package/dist/interpret.js.map +1 -0
  42. package/dist/metrics/cohen-kappa.d.ts +16 -0
  43. package/dist/metrics/cohen-kappa.d.ts.map +1 -0
  44. package/dist/metrics/cohen-kappa.js +130 -0
  45. package/dist/metrics/cohen-kappa.js.map +1 -0
  46. package/dist/metrics/fleiss-kappa.d.ts +17 -0
  47. package/dist/metrics/fleiss-kappa.d.ts.map +1 -0
  48. package/dist/metrics/fleiss-kappa.js +63 -0
  49. package/dist/metrics/fleiss-kappa.js.map +1 -0
  50. package/dist/metrics/gwet-ac1.d.ts +19 -0
  51. package/dist/metrics/gwet-ac1.d.ts.map +1 -0
  52. package/dist/metrics/gwet-ac1.js +82 -0
  53. package/dist/metrics/gwet-ac1.js.map +1 -0
  54. package/dist/metrics/krippendorff-alpha.d.ts +21 -0
  55. package/dist/metrics/krippendorff-alpha.d.ts.map +1 -0
  56. package/dist/metrics/krippendorff-alpha.js +162 -0
  57. package/dist/metrics/krippendorff-alpha.js.map +1 -0
  58. package/dist/metrics/scott-pi.d.ts +18 -0
  59. package/dist/metrics/scott-pi.d.ts.map +1 -0
  60. package/dist/metrics/scott-pi.js +73 -0
  61. package/dist/metrics/scott-pi.js.map +1 -0
  62. package/dist/types.d.ts +119 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +3 -0
  65. package/dist/types.js.map +1 -0
  66. package/dist/validate.d.ts +33 -0
  67. package/dist/validate.d.ts.map +1 -0
  68. package/dist/validate.js +83 -0
  69. package/dist/validate.js.map +1 -0
  70. package/package.json +33 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertEqualLength = assertEqualLength;
4
+ exports.assertNonEmpty = assertNonEmpty;
5
+ exports.assertConsistentRowLengths = assertConsistentRowLengths;
6
+ exports.assertConstantRowSums = assertConstantRowSums;
7
+ exports.assertMinAnnotators = assertMinAnnotators;
8
+ exports.detectDuplicates = detectDuplicates;
9
+ /**
10
+ * Throws if a and b do not have the same length.
11
+ */
12
+ function assertEqualLength(a, b, label) {
13
+ if (a.length !== b.length) {
14
+ const suffix = label ? ` ${label}` : '';
15
+ throw new Error(`Arrays must have equal length: got ${a.length} and ${b.length}${suffix}`);
16
+ }
17
+ }
18
+ /**
19
+ * Throws if arr is empty.
20
+ */
21
+ function assertNonEmpty(arr, label) {
22
+ if (arr.length === 0) {
23
+ const suffix = label ? ` ${label}` : '';
24
+ throw new Error(`Array must be non-empty${suffix}`);
25
+ }
26
+ }
27
+ /**
28
+ * Throws if the rows of a 2-D matrix do not all have the same length.
29
+ */
30
+ function assertConsistentRowLengths(matrix) {
31
+ if (matrix.length === 0)
32
+ return;
33
+ const expectedLen = matrix[0].length;
34
+ for (let i = 1; i < matrix.length; i++) {
35
+ if (matrix[i].length !== expectedLen) {
36
+ throw new Error('Matrix has inconsistent row lengths');
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Throws if rows of a numeric matrix do not all sum to the same value
42
+ * (within floating-point tolerance).
43
+ */
44
+ function assertConstantRowSums(matrix) {
45
+ if (matrix.length === 0)
46
+ return;
47
+ const rowSum = (row) => row.reduce((acc, v) => acc + v, 0);
48
+ const expected = rowSum(matrix[0]);
49
+ const tolerance = 1e-9;
50
+ for (let i = 1; i < matrix.length; i++) {
51
+ const s = rowSum(matrix[i]);
52
+ if (Math.abs(s - expected) > tolerance) {
53
+ throw new Error('Category-count matrix rows must have equal sums');
54
+ }
55
+ }
56
+ }
57
+ /**
58
+ * Throws if count is less than 2.
59
+ */
60
+ function assertMinAnnotators(count) {
61
+ if (count < 2) {
62
+ throw new Error(`At least 2 annotators required, got ${count}`);
63
+ }
64
+ }
65
+ /**
66
+ * Returns the (item, annotator) pairs that appear more than once in the given
67
+ * array of triples. Each duplicate pair is returned only once.
68
+ */
69
+ function detectDuplicates(triples) {
70
+ const seen = new Map();
71
+ const duplicates = new Map();
72
+ for (const triple of triples) {
73
+ const key = JSON.stringify([triple.item, triple.annotator]);
74
+ if (seen.has(key)) {
75
+ duplicates.set(key, { item: triple.item, annotator: triple.annotator });
76
+ }
77
+ else {
78
+ seen.set(key, { item: triple.item, annotator: triple.annotator });
79
+ }
80
+ }
81
+ return Array.from(duplicates.values());
82
+ }
83
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@silupanda/label-score",
3
+ "version": "0.3.2",
4
+ "description": "Inter-annotator agreement metrics in JavaScript",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "vitest run",
13
+ "lint": "eslint src/",
14
+ "prepublishOnly": "npm run build"
15
+ },
16
+ "keywords": [],
17
+ "author": "",
18
+ "license": "MIT",
19
+ "engines": {
20
+ "node": ">=18"
21
+ },
22
+ "publishConfig": {
23
+ "access": "public"
24
+ },
25
+ "devDependencies": {
26
+ "@types/node": "^25.5.0",
27
+ "@typescript-eslint/eslint-plugin": "^8.57.1",
28
+ "@typescript-eslint/parser": "^8.57.1",
29
+ "eslint": "^10.1.0",
30
+ "typescript": "^5.9.3",
31
+ "vitest": "^4.1.0"
32
+ }
33
+ }