@datagrok/bio 2.25.17 → 2.26.1

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 (50) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/282.js +2 -0
  3. package/dist/282.js.map +1 -0
  4. package/dist/287.js +2 -0
  5. package/dist/287.js.map +1 -0
  6. package/dist/288.js +2 -0
  7. package/dist/288.js.map +1 -0
  8. package/dist/422.js +2 -0
  9. package/dist/422.js.map +1 -0
  10. package/dist/455.js +1 -1
  11. package/dist/455.js.map +1 -1
  12. package/dist/767.js +2 -0
  13. package/dist/767.js.map +1 -0
  14. package/dist/package-test.js +5 -5
  15. package/dist/package-test.js.map +1 -1
  16. package/dist/package.js +3 -3
  17. package/dist/package.js.map +1 -1
  18. package/files/samples/antibodies.csv +494 -0
  19. package/package.json +2 -2
  20. package/src/package-api.ts +28 -0
  21. package/src/package.g.ts +31 -1
  22. package/src/package.ts +40 -1
  23. package/src/tests/substructure-filters-tests.ts +1 -0
  24. package/src/utils/annotations/annotation-actions.ts +130 -0
  25. package/src/utils/annotations/annotation-manager-ui.ts +118 -0
  26. package/src/utils/annotations/annotation-manager.ts +163 -0
  27. package/src/utils/annotations/liability-scanner-ui.ts +88 -0
  28. package/src/utils/annotations/liability-scanner.ts +147 -0
  29. package/src/utils/annotations/numbering-ui.ts +472 -0
  30. package/src/utils/antibody-numbering (WIP)/alignment.ts +578 -0
  31. package/src/utils/antibody-numbering (WIP)/annotator.ts +120 -0
  32. package/src/utils/antibody-numbering (WIP)/data/blosum62.ts +55 -0
  33. package/src/utils/antibody-numbering (WIP)/data/consensus-aho.ts +155 -0
  34. package/src/utils/antibody-numbering (WIP)/data/consensus-imgt.ts +162 -0
  35. package/src/utils/antibody-numbering (WIP)/data/consensus-kabat.ts +157 -0
  36. package/src/utils/antibody-numbering (WIP)/data/consensus-martin.ts +152 -0
  37. package/src/utils/antibody-numbering (WIP)/data/consensus.ts +36 -0
  38. package/src/utils/antibody-numbering (WIP)/data/regions.ts +63 -0
  39. package/src/utils/antibody-numbering (WIP)/index.ts +31 -0
  40. package/src/utils/antibody-numbering (WIP)/testdata.ts +5356 -0
  41. package/src/utils/antibody-numbering (WIP)/types.ts +69 -0
  42. package/src/utils/context-menu.ts +42 -2
  43. package/src/utils/get-region-func-editor.ts +18 -2
  44. package/src/utils/get-region.ts +167 -17
  45. package/src/utils/sequence-column-input.ts +57 -0
  46. package/src/viewers/vd-regions-viewer.ts +2 -0
  47. package/src/widgets/representations.ts +53 -2
  48. package/src/widgets/sequence-scrolling-widget.ts +28 -18
  49. package/test-console-output-1.log +587 -551
  50. package/test-record-1.mp4 +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"767.js","mappings":"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","sources":["webpack://bio/./src/utils/antibody-numbering (WIP)/data/consensus-imgt.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/consensus-kabat.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/consensus-martin.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/consensus-aho.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/consensus.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/blosum62.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/alignment.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/data/regions.ts","webpack://bio/./src/utils/antibody-numbering (WIP)/annotator.ts"],"sourcesContent":["/**\n * IMGT consensus profiles.\n * Each entry: position -> array of expected amino acids (most common first).\n * Gap positions (where CDR insertions can occur) have an empty array.\n */\n\nexport const IMGT_H: [number, string[]][] = [\n [1, ['Q', 'E', 'D']], [2, ['V', 'Q']], [3, ['Q', 'K', 'H', 'S', 'T']], [4, ['L', 'V']],\n [5, ['V', 'Q', 'L', 'E', 'K', 'T']], [6, ['E', 'Q', 'A']], [7, ['S', 'P', 'W']],\n [8, ['G', 'E']], [9, ['G', 'A', 'P', 'S']], [10, []], [11, ['G', 'E', 'D', 'V']],\n [12, ['L', 'V']], [13, ['V', 'K', 'L']], [14, ['K', 'Q', 'R']], [15, ['P', 'A']],\n [16, ['G', 'S', 'T']], [17, ['G', 'A', 'E', 'Q', 'R', 'S', 'D']], [18, ['S', 'T']],\n [19, ['L', 'V']], [20, ['R', 'K', 'S', 'T']], [21, ['L', 'I', 'V', 'M']],\n [22, ['S', 'T']], [23, ['C']], [24, ['A', 'K', 'T', 'V', 'S']],\n [25, ['A', 'V', 'T', 'G', 'I']], [26, ['S', 'T', 'Y']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []],\n [39, []], [40, []], [41, ['W']], [42, ['V', 'I', 'F']], [43, ['R', 'K']],\n [44, ['Q']], [45, ['A', 'P', 'R', 'S', 'T', 'M', 'V']], [46, ['P', 'A', 'H']],\n [47, ['G', 'E', 'S', 'A']], [48, ['K', 'Q', 'R', 'N']], [49, ['G', 'A', 'R', 'S']],\n [50, ['L']], [51, ['E', 'Q']], [52, ['W', 'Y']], [53, ['I', 'V', 'K', 'M']],\n [54, ['A', 'G', 'S']],\n [55, ['A', 'G', 'S', 'D', 'E', 'N', 'T', 'V', 'I', 'L', 'K', 'R', 'Q', 'P', 'F', 'W', 'Y', 'M', 'H', 'C']], [56, []], [57, []], [58, []], [59, []], [60, []], [61, []],\n [62, []], [63, []], [64, []], [65, []],\n [66, ['Y', 'N', 'K', 'D', 'E', 'F', 'G', 'H', 'R', 'S', 'T']], [67, ['Y', 'F']],\n [68, ['A', 'N', 'S', 'P', 'T', 'V', 'G']], [69, ['D', 'E', 'Q', 'A', 'S', 'P']],\n [70, ['S', 'K', 'A', 'W']], [71, ['F', 'V', 'L', 'A']], [72, ['K', 'Q', 'R', 'E']],\n [73, []], [74, ['G', 'S', 'D', 'N']], [75, ['R', 'K', 'Q']],\n [76, ['F', 'V', 'A', 'L', 'I']], [77, ['T', 'S', 'I']],\n [78, ['I', 'L', 'M', 'V', 'F']], [79, ['S', 'T', 'N']],\n [80, ['R', 'V', 'A', 'K', 'L', 'P', 'T']], [81, ['D', 'N', 'E']],\n [82, ['N', 'T', 'K', 'D', 'E', 'S', 'R']], [83, ['S', 'A', 'P', 'D', 'N']],\n [84, ['K', 'S', 'T', 'A', 'E', 'I', 'R', 'Q', 'N', 'L']], [85, ['N', 'S', 'D', 'K', 'T']],\n [86, ['T', 'Q', 'S', 'I', 'M']], [87, ['L', 'A', 'V', 'F']],\n [88, ['Y', 'S', 'F', 'H', 'T', 'V']], [89, ['L', 'M']],\n [90, ['Q', 'E', 'K', 'D', 'T']], [91, ['L', 'M', 'I', 'V', 'W']],\n [92, ['A', 'C', 'D', 'G', 'H', 'K', 'L', 'N', 'R', 'S', 'T']],\n [93, ['A', 'G', 'H', 'K', 'N', 'R', 'S', 'T']], [94, ['L', 'M', 'P', 'V']],\n [95, ['R', 'T', 'K']], [96, ['A', 'S', 'T', 'V', 'P']],\n [97, ['E', 'A', 'D', 'G', 'S', 'V']], [98, ['D']], [99, ['T', 'S']],\n [100, ['A', 'G']], [101, ['V', 'T', 'I', 'L', 'M']], [102, ['Y']],\n [103, ['Y', 'F']], [104, ['C']],\n [105, []], [106, []], [107, []], [108, []], [109, []], [110, []],\n [111, []], [112, []], [113, []], [114, []], [115, []], [116, []], [117, []],\n [118, ['W']], [119, ['G']], [120, ['Q', 'P', 'R', 'K', 'A', 'T']],\n [121, ['G']], [122, ['T', 'V', 'A', 'I']], [123, ['L', 'T', 'M', 'S', 'Q', 'P']],\n [124, ['V', 'L', 'I']], [125, ['T', 'I', 'V']], [126, ['V']],\n [127, ['S', 'T']], [128, ['S', 'A']],\n];\n\nexport const IMGT_K: [number, string[]][] = [\n [1, ['D', 'E', 'Q', 'N', 'A']], [2, ['I', 'V', 'L']], [3, ['V', 'Q', 'L', 'E', 'K']],\n [4, ['M', 'L', 'V', 'I']], [5, ['T', 'S']], [6, ['Q']],\n [7, ['S', 'T', 'A', 'I']], [8, ['P', 'Q', 'T', 'A', 'H']],\n [9, ['S', 'G', 'L', 'A', 'D', 'K', 'F', 'P', 'V']], [10, ['S', 'T', 'F', 'I']],\n [11, ['L', 'M', 'N', 'Q', 'V']], [12, ['T', 'S', 'A', 'P', 'Y']],\n [13, ['V', 'L', 'A', 'T', 'M']], [14, ['T', 'S', 'A']],\n [15, ['A', 'P', 'I', 'V', 'L']], [16, ['G']],\n [17, ['E', 'Q', 'D', 'G', 'T']], [18, ['K', 'R', 'P', 'T', 'Q', 'S']],\n [19, ['V', 'A', 'I']], [20, ['T', 'S']], [21, ['M', 'L', 'I', 'F']],\n [22, ['S', 'T', 'N']], [23, ['C']], [24, ['K', 'R', 'Q', 'S']],\n [25, ['S', 'A', 'T', 'C']], [26, ['S', 'T', 'G']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []],\n [39, ['L', 'M', 'I', 'V', 'F']], [40, ['T', 'A', 'N', 'H', 'E', 'G', 'Q', 'Y', 'S', 'D']],\n [41, ['W']], [42, ['Y', 'L', 'F']], [43, ['Q', 'L', 'R']],\n [44, ['Q', 'H', 'E']], [45, ['K', 'R']], [46, ['P', 'Q', 'S', 'T']],\n [47, ['G', 'E', 'D', 'H', 'N']], [48, ['Q', 'K', 'S', 'T', 'G', 'E', 'R']],\n [49, ['P', 'A', 'S', 'T', 'V']], [50, ['P', 'I', 'V']],\n [51, ['K', 'R', 'Q', 'E', 'I', 'T']], [52, ['L', 'R', 'T', 'P', 'V', 'A']],\n [53, ['L', 'W']], [54, ['I', 'V', 'M']], [55, ['Y', 'K', 'H', 'S', 'F']],\n [56, []], [57, []], [58, []], [59, []], [60, []], [61, []], [62, []],\n [63, []], [64, []], [65, []],\n [66, ['T', 'S', 'K', 'N', 'I', 'D', 'R', 'Y', 'Q', 'F']], [67, ['R', 'L', 'S']],\n [68, ['E', 'A', 'D', 'Q', 'F', 'R', 'Y', 'H', 'I', 'K', 'P', 'G', 'V']],\n [69, ['S', 'T', 'D', 'P', 'A', 'E']], [70, ['G']], [71, ['V', 'I']],\n [72, ['P', 'S', 'A']], [73, []],\n [74, ['D', 'S', 'A', 'V', 'K', 'G']], [75, ['R']], [76, ['F']],\n [77, ['T', 'S', 'I', 'K', 'R']], [78, ['G', 'S', 'A']],\n [79, ['S', 'G', 'R']], [80, ['G', 'R']], [81, ['S', 'Y']],\n [82, ['G', 'R', 'A']], [83, ['A', 'F', 'P', 'S', 'Y']],\n [84, ['A', 'D', 'E', 'G', 'Q', 'R', 'V']], [85, ['T', 'R', 'S', 'Q']],\n [86, ['D', 'E', 'Q', 'S', 'H', 'Y', 'A']], [87, ['F', 'Y']],\n [88, ['T', 'S']], [89, ['L', 'F']], [90, ['T', 'K', 'N', 'S', 'R']],\n [91, ['I', 'V']], [92, ['N', 'S', 'H', 'T', 'D']],\n [93, ['S', 'R', 'P', 'N', 'G', 'D', 'T']], [94, ['V', 'L', 'M']],\n [95, ['Q', 'E', 'K']], [96, ['A', 'P', 'E', 'S', 'T', 'Q', 'C', 'Y']],\n [97, ['E', 'D']], [98, ['D']],\n [99, ['L', 'F', 'V', 'T', 'A', 'I', 'S', 'M']], [100, ['A', 'G']],\n [101, ['V', 'T', 'S', 'E', 'D', 'L', 'I', 'M']], [102, ['Y', 'F']],\n [103, ['Y', 'F', 'H']], [104, ['C']],\n [105, []], [106, []], [107, []], [108, []], [109, []], [110, []],\n [111, []], [112, []], [113, []], [114, []], [115, []], [116, []], [117, []],\n [118, ['F']], [119, ['G']], [120, ['A', 'Q', 'S', 'G', 'P']],\n [121, ['G']], [122, ['T']], [123, ['K', 'R', 'E']],\n [124, ['L', 'V']], [125, ['E', 'V', 'D']], [126, ['L', 'I', 'V']],\n [127, ['K', 'R']],\n];\n\nexport const IMGT_L: [number, string[]][] = [\n [1, ['Q', 'S']], [2, ['S', 'Y', 'P', 'A', 'L', 'F']], [3, ['A', 'V', 'E']],\n [4, ['L', 'V']], [5, ['T']], [6, ['Q']], [7, ['P', 'E', 'S']],\n [8, ['A', 'P', 'S', 'R']], [9, ['S', 'A']], [10, []],\n [11, ['V', 'L', 'A']], [12, ['S', 'T']],\n [13, ['G', 'V', 'A', 'T', 'K', 'E', 'F']], [14, ['S', 'A', 'T']],\n [15, ['P', 'L']], [16, ['G']], [17, ['Q', 'E', 'K', 'A']],\n [18, ['S', 'T', 'K', 'R']], [19, ['I', 'A', 'V']],\n [20, ['T', 'R', 'S', 'K']], [21, ['I', 'L']], [22, ['S', 'T']], [23, ['C']],\n [24, ['T', 'G', 'Q', 'S', 'A', 'N', 'R']], [25, ['G', 'S', 'L', 'R']],\n [26, ['T', 'N', 'D', 'S']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []],\n [39, ['V', 'A', 'I']], [40, ['S', 'H', 'Q', 'C', 'N', 'Y', 'E']],\n [41, ['W']], [42, ['Y', 'F', 'V']], [43, ['Q']],\n [44, ['Q', 'H', 'E']], [45, ['H', 'K', 'R', 'L', 'F', 'V', 'Q']],\n [46, ['P', 'A', 'S']], [47, ['G', 'D', 'L']],\n [48, ['K', 'Q', 'T', 'R', 'H', 'S', 'A', 'M']], [49, ['A', 'S', 'L', 'P', 'G']],\n [50, ['P', 'F']], [51, ['K', 'V', 'S', 'R', 'T', 'I']],\n [52, ['L', 'V', 'G', 'Y', 'T']], [53, ['I', 'V', 'M', 'L']],\n [54, ['I', 'V', 'L', 'M']], [55, ['F', 'Y', 'G', 'S', 'E']],\n [56, []], [57, []], [58, []], [59, []], [60, []], [61, []], [62, []],\n [63, []], [64, []], [65, []],\n [66, ['N', 'D', 'K', 'Q', 'E', 'S', 'H']], [67, ['R', 'T']],\n [68, ['P', 'A', 'G']], [69, ['S', 'P', 'D']], [70, ['G']],\n [71, ['I', 'V']], [72, ['S', 'P']], [73, []],\n [74, ['N', 'E', 'A', 'D']], [75, ['R']], [76, ['F']], [77, ['S']],\n [78, ['G']], [79, ['S']], [80, ['K', 'N', 'P', 'L', 'I', 'S']],\n [81, ['F', 'S', 'I']], [82, ['G', 'A', 'S']],\n [83, ['A', 'I', 'L', 'S', 'T', 'W']], [84, ['A', 'D', 'E', 'G', 'S', 'T']],\n [85, ['N', 'T', 'D', 'S', 'A']], [86, ['T', 'K', 'S', 'R']],\n [87, ['A', 'R']], [88, ['S', 'T', 'A', 'Y']], [89, ['L']],\n [90, ['T', 'G', 'A', 'S']], [91, ['I', 'V']], [92, ['S', 'T']],\n [93, ['G', 'R', 'S', 'N']], [94, ['L', 'V', 'T', 'A', 'I']],\n [95, ['Q', 'E', 'R']], [96, ['A', 'S', 'P', 'T']],\n [97, ['E', 'G', 'M', 'D']], [98, ['D']], [99, ['E']],\n [100, ['A', 'G']], [101, ['D', 'I', 'E']], [102, ['Y']],\n [103, ['Y', 'F', 'I']], [104, ['C']],\n [105, []], [106, []], [107, []], [108, []], [109, []], [110, []],\n [111, []], [112, []], [113, []], [114, []], [115, []], [116, []], [117, []],\n [118, ['F']], [119, ['G']], [120, ['G', 'T', 'S']],\n [121, ['G']], [122, ['T']], [123, ['K', 'T', 'R', 'Q']],\n [124, ['V', 'L']], [125, ['T']], [126, ['V']], [127, ['L', 'K']],\n];\n\n/** C-terminal finder consensus profiles */\nexport const CTERM_H: [number, string[]][] = [\n [1, ['W']], [2, ['G']], [3, ['Q', 'P', 'R', 'K', 'A', 'T']], [4, ['G']],\n [5, ['T', 'V', 'A', 'I']], [6, ['L', 'T', 'M', 'S', 'Q', 'P']],\n [7, ['V', 'L', 'I']], [8, ['T', 'I', 'V']], [9, ['V']], [10, ['S', 'T']],\n];\n\nexport const CTERM_K: [number, string[]][] = [\n [1, ['F']], [2, ['G']], [3, ['A', 'Q', 'S', 'G', 'P']], [4, ['G']],\n [5, ['T']], [6, ['K', 'R', 'E']], [7, ['L', 'V']], [8, ['E', 'V', 'D']],\n [9, ['L', 'I', 'V']], [10, ['K', 'R']],\n];\n\nexport const CTERM_L: [number, string[]][] = [\n [1, ['F']], [2, ['G']], [3, ['G', 'T', 'S']], [4, ['G']],\n [5, ['T']], [6, ['K', 'T', 'R', 'Q']], [7, ['V', 'L']], [8, ['T']],\n [9, ['V']], [10, ['L', 'K']],\n];\n","/**\n * Kabat consensus profiles.\n */\n\nexport const KABAT_H: [number, string[]][] = [\n [1, ['Q','E','D']], [2, ['V','Q']], [3, ['Q','K','H','S','T']], [4, ['L','V']],\n [5, ['V','Q','L','E','K','T']], [6, ['E','Q','A']], [7, ['S','P','W']],\n [8, ['G','E']], [9, ['G','A','P','S']], [10, ['G','E','D','V']],\n [11, ['L','V']], [12, ['V','K','L']], [13, ['K','Q','R']], [14, ['P','A']],\n [15, ['G','S','T']], [16, ['G','A','E','Q','R','S','D']], [17, ['S','T']],\n [18, ['L','V']], [19, ['R','K','S','T']], [20, ['L','I','V','M']],\n [21, ['S','T']], [22, ['C']], [23, ['A','K','T','V','S']],\n [24, ['A','V','T','G','I']], [25, ['S','T','Y']],\n [26, ['G','E']], [27, ['F','Y','G','D','S']], [28, ['T','S','I','N','D','A']],\n [29, ['F','I','L','S','V']], [30, ['S','T','D','G','N','R']],\n [31, []], [32, []], [33, []], [34, []], [35, []],\n [36, ['W']], [37, ['V','I','F']], [38, ['R','K']], [39, ['Q']],\n [40, ['A','P','R','S','T','M','V']], [41, ['P','A','H']],\n [42, ['G','E','S','A']], [43, ['K','Q','R','N']],\n [44, ['G','A','R','S']], [45, ['L']], [46, ['E','Q']],\n [47, ['W','Y']], [48, ['I','V','K','M']], [49, ['A','G','S']],\n [50, []],\n [51, ['I','V','T','M']],\n [52, ['S','N','Y','D','K','I','H','G','W','R','T']],\n [53, ['A','D','Y','W','G','H','I','T','S','N','R']],\n [54, ['A','D','F','G','K','N','T','S']],\n [55, ['A','D','E','G','S','T','W','Y']],\n [56, ['A','D','D','G','N','S','T','W','Y']],\n [57, ['T','A','I','K','N','P','S']],\n [58, ['Y','N','K','D','E','F','G','H','R','S','T']], [59, ['Y','F']],\n [60, ['A','N','S','P','T','V','G']], [61, ['D','E','Q','A','S','P']],\n [62, ['S','K','A','W']], [63, ['F','V','L','A']], [64, ['K','Q','R','E']],\n [65, ['G','S','D','N']], [66, ['R','K','Q']],\n [67, ['F','V','A','L','I']], [68, ['T','S','I']],\n [69, ['I','L','M','V','F']], [70, ['S','T','N']],\n [71, ['R','V','A','K','L','P','T']], [72, ['D','N','E']],\n [73, ['N','T','K','D','E','S','R']], [74, ['S','A','P','D','N']],\n [75, ['K','S','T','A','E','I','R','Q','N','L']], [76, ['N','S','D','K','T']],\n [77, ['T','Q','S','I','M']], [78, ['L','A','V','F']],\n [79, ['Y','S','F','H','T','V']], [80, ['L','M']],\n [81, ['Q','E','K','D','T']], [82, ['L','M','I','V','W']],\n [83, ['R','T','K']], [84, ['A','S','T','V','P']],\n [85, ['E','A','D','G','S','V']], [86, ['D']], [87, ['T','S']],\n [88, ['A','G']], [89, ['V','T','I','L','M']], [90, ['Y']],\n [91, ['Y','F']], [92, ['C']],\n [93, ['A','T','V']], [94, ['R','K','S','T','A','G']],\n [95, []], [96, []], [97, []], [98, []], [99, []], [100, []], [101, []],\n [102, ['Y','V','I','L','F','P','H','S']],\n [103, ['W']], [104, ['G']], [105, ['Q','P','R','K','A','T']],\n [106, ['G']], [107, ['T','V','A','I']], [108, ['L','T','M','S','Q','P']],\n [109, ['V','L','I']], [110, ['T','I','V']], [111, ['V']],\n [112, ['S','T']], [113, ['S','A']],\n];\n\nexport const KABAT_K: [number, string[]][] = [\n [1, ['D','E','Q','N','A']], [2, ['I','V','L']], [3, ['V','Q','L','E','K']],\n [4, ['M','L','V','I']], [5, ['T','S']], [6, ['Q']],\n [7, ['S','T','A','I']], [8, ['P','Q','T','A','H']],\n [9, ['S','G','L','A','D','K','F','P','V']], [10, ['S','T','F','I']],\n [11, ['L','M','N','Q','V']], [12, ['T','S','A','P','Y']],\n [13, ['V','L','A','T','M']], [14, ['T','S','A']],\n [15, ['A','P','I','V','L']], [16, ['G']],\n [17, ['E','Q','D','G','T']], [18, ['K','R','P','T','Q','S']],\n [19, ['V','A','I']], [20, ['T','S']], [21, ['M','L','I','F']],\n [22, ['S','T','N']], [23, ['C']],\n [24, ['K','R','Q','S']], [25, ['S','A','T','C']], [26, ['S','T','G']],\n [27, []], [28, ['N','V','D','S','I','E','Y','T','G']],\n [29, ['Q','S','G','I','R','V','N','H','T','D']],\n [30, ['K','S','H','I','R','Y','N','D','V','G','T','A']],\n [31, ['N','S','T','K','G','V','R','I','D','Y']],\n [32, ['Y','W','F','D','R','N','S','K','H','A','G']],\n [33, ['L','M','I','V','F']],\n [34, ['T','A','N','H','E','G','Q','Y','S','D']],\n [35, ['W']], [36, ['Y','L','F']], [37, ['Q','L','R']],\n [38, ['Q','H','E']], [39, ['K','R']],\n [40, ['P','Q','S','T']], [41, ['G','E','D','H','N']],\n [42, ['Q','K','S','T','G','E','R']], [43, ['P','A','S','T','V']],\n [44, ['P','I','V']], [45, ['K','R','Q','E','I','T']],\n [46, ['L','R','T','P','V','A']], [47, ['L','W']],\n [48, ['I','V','M']], [49, ['Y','K','H','S','F']],\n [50, []], [51, ['A','V','T','S','M','G','I']], [52, ['S','K','T','N']],\n [53, ['T','S','K','N','I','D','R','Y','Q','F']], [54, ['R','L','S']],\n [55, ['E','A','D','Q','F','R','Y','H','I','K','P','G','V']],\n [56, ['S','T','D','P','A','E']], [57, ['G']], [58, ['V','I']],\n [59, ['P','S','A']],\n [60, ['D','S','A','V','K','G']], [61, ['R']], [62, ['F']],\n [63, ['T','S','I','K','R']], [64, ['G','S','A']],\n [65, ['S','G','R']], [66, ['G','R']], [67, ['S','Y']],\n [68, ['G','R','A']], [69, ['T','R','S','Q']],\n [70, ['D','E','Q','S','H','Y','A']], [71, ['F','Y']],\n [72, ['T','S']], [73, ['L','F']], [74, ['T','K','N','S','R']],\n [75, ['I','V']], [76, ['N','S','H','T','D']],\n [77, ['S','R','P','N','G','D','T']], [78, ['V','L','M']],\n [79, ['Q','E','K']], [80, ['A','P','E','S','T','Q','C','Y']],\n [81, ['E','D']], [82, ['D']],\n [83, ['L','F','V','T','A','I','S','M']], [84, ['A','G']],\n [85, ['V','T','S','E','D','L','I','M']], [86, ['Y','F']],\n [87, ['Y','F','H']], [88, ['C']],\n [89, ['Q','W','F','L','H','M','G','A','K','S','V']],\n [90, ['N','Q','H','G']],\n [91, ['D','Y','G','F','I','S','W','R','T','A','N','H']],\n [92, []], [93, []], [94, []], [95, []],\n [96, ['L','Y','W','F','P','R','A','S','I','V','E','H','T']],\n [97, ['T','S','F']], [98, ['F']],\n [99, ['G']], [100, ['A','Q','S','G','P']], [101, ['G']],\n [102, ['T']], [103, ['K','R','E']], [104, ['L','V']],\n [105, ['E','V','D']], [106, ['L','I','V']], [107, ['K','R']],\n];\n\nexport const KABAT_L: [number, string[]][] = [\n [1, ['Q','S']], [2, ['S','Y','P','A','L','F']], [3, ['A','V','E']],\n [4, ['L','V']], [5, ['T']], [6, ['Q']], [7, ['P','E','S']],\n [8, ['A','P','S','R']], [9, ['S','A']], [10, []],\n [11, ['V','L','A']], [12, ['S','T']],\n [13, ['G','V','A','T','K','E','F']], [14, ['S','A','T']],\n [15, ['P','L']], [16, ['G']], [17, ['Q','E','K','A']],\n [18, ['S','T','K','R']], [19, ['I','A','V']],\n [20, ['T','R','S','K']], [21, ['I','L']], [22, ['S','T']], [23, ['C']],\n [24, ['T','G','Q','S','A','N','R']], [25, ['G','S','L','R']],\n [26, ['T','N','D','S']],\n [27, []], [28, ['G','I','L','T','V','H']],\n [29, ['T','G','S','R','A']],\n [30, ['Y','S','D','G','N','T','R','F']],\n [31, ['N','K','D','R','Y']],\n [32, ['F','S','L','A','Y','T','D','N','G']],\n [33, ['V','A','I']], [34, ['S','H','Q','C','N','Y','E']],\n [35, ['W']], [36, ['Y','F','V']], [37, ['Q']],\n [38, ['Q','H','E']], [39, ['H','K','R','L','F','V','Q']],\n [40, ['P','A','S']], [41, ['G','D','L']],\n [42, ['K','Q','T','R','H','S','A','M']], [43, ['A','S','L','P','G']],\n [44, ['P','F']], [45, ['K','V','S','R','T','I']],\n [46, ['L','V','G','Y','T']], [47, ['I','V','M','L']],\n [48, ['I','V','L','M']], [49, ['F','Y','G','S','E']],\n [50, []], [51, ['V','D','N','T','K']], [52, ['T','S','Q','N','D','K']],\n [53, ['N','D','K','Q','E','S','H']], [54, ['R','T']],\n [55, ['P','A','G']], [56, ['S','P','D']], [57, ['G']],\n [58, ['I','V']], [59, ['S','P']],\n [60, ['N','E','A','D']], [61, ['R']], [62, ['F']], [63, ['S']],\n [64, ['G']], [65, ['S']], [66, ['K','N','P','L','I','S']],\n [67, ['F','S','I']], [68, ['G','A','S']],\n [69, ['N','T','D','S','A']], [70, ['T','K','S','R']],\n [71, ['A','R']], [72, ['S','T','A','Y']], [73, ['L']],\n [74, ['T','G','A','S']], [75, ['I','V']], [76, ['S','T']],\n [77, ['G','R','S','N']], [78, ['L','V','T','A','I']],\n [79, ['Q','E','R']], [80, ['A','S','P','T']],\n [81, ['E','G','M','D']], [82, ['D']], [83, ['E']],\n [84, ['A','G']], [85, ['D','I','E']], [86, ['Y']],\n [87, ['Y','F','I']], [88, ['C']],\n [89, ['A','Q','C','H','G','S']], [90, ['A','V','L','S','T','M']],\n [91, ['Y','W','L','R','G']], [92, ['T','D','A','Y','E','R','G']],\n [93, []], [94, []], [95, []],\n [96, ['L','V','W','R','P','Y','S','F','A']],\n [97, ['L','V','I']], [98, ['F']],\n [99, ['G']], [100, ['G','T','S']], [101, ['G']],\n [102, ['T']], [103, ['K','T','R','Q']], [104, ['V','L']],\n [105, ['T']], [106, ['V']], [107, ['L','K']],\n];\n","/**\n * Martin (enhanced Chothia) consensus profiles.\n */\n\nexport const MARTIN_H: [number, string[]][] = [\n [1, ['Q', 'E', 'D']], [2, ['V', 'Q']], [3, ['Q', 'K', 'H', 'S', 'T']], [4, ['L', 'V']],\n [5, ['V', 'Q', 'L', 'E', 'K', 'T']], [6, ['E', 'Q', 'A']], [7, ['S', 'P', 'W']],\n [8, ['G', 'E']], [9, ['G', 'A', 'P', 'S']], [10, ['G', 'E', 'D', 'V']],\n [11, ['L', 'V']], [12, ['V', 'K', 'L']], [13, ['K', 'Q', 'R']], [14, ['P', 'A']],\n [15, ['G', 'S', 'T']], [16, ['G', 'A', 'E', 'Q', 'R', 'S', 'D']], [17, ['S', 'T']],\n [18, ['L', 'V']], [19, ['R', 'K', 'S', 'T']], [20, ['L', 'I', 'V', 'M']],\n [21, ['S', 'T']], [22, ['C']], [23, ['A', 'K', 'T', 'V', 'S']],\n [24, ['A', 'V', 'T', 'G', 'I']], [25, ['S', 'T', 'Y']],\n [26, []], [27, []], [28, []], [29, []], [30, []], [31, []], [32, []],\n [33, ['A', 'G', 'W', 'Y', 'D', 'L', 'S', 'T', 'V', 'F']],\n [34, ['M', 'I', 'W', 'V', 'L']], [35, ['A', 'G', 'H', 'N', 'S', 'T', 'Y']],\n [36, ['W']], [37, ['V', 'I', 'F']], [38, ['R', 'K']], [39, ['Q']],\n [40, ['A', 'P', 'R', 'S', 'T', 'M', 'V']], [41, ['P', 'A', 'H']],\n [42, ['G', 'E', 'S']], [43, ['K', 'Q', 'R', 'N']],\n [44, ['G', 'A', 'R', 'S']], [45, ['L']], [46, ['E', 'Q']],\n [47, ['W', 'Y', 'F', 'L']], [48, ['I', 'V', 'K', 'M']], [49, ['A', 'G', 'S']],\n [50, ['A', 'G', 'S', 'D', 'E', 'N', 'T', 'V', 'I', 'L', 'K', 'R', 'Q', 'P', 'F', 'W', 'Y', 'M', 'H', 'C']], [51, ['A', 'G', 'S', 'D', 'E', 'N', 'T', 'V', 'I', 'L', 'K', 'R', 'Q', 'P', 'F', 'W', 'Y', 'M', 'H', 'C']], [52, []], [53, []],\n [54, ['S', 'I', 'T', 'D', 'G', 'R', 'N', 'L', 'A', 'Y', 'F', 'E']],\n [55, ['G', 'S', 'R', 'D', 'W', 'A', 'Y', 'F', 'V', 'N', 'T', 'E', 'L', 'H']],\n [56, ['S', 'E', 'D', 'I', 'R', 'G', 'Y', 'T', 'V', 'N', 'A', 'H', 'K']],\n [57, ['T', 'A', 'I', 'K', 'N', 'P', 'S']],\n [58, ['Y', 'N', 'K', 'D', 'E', 'F', 'G', 'H', 'R', 'S', 'T']], [59, ['Y', 'F']],\n [60, ['A', 'N', 'S', 'P', 'T', 'V', 'G']], [61, ['D', 'E', 'Q', 'A', 'S', 'P']],\n [62, ['S', 'K', 'A', 'W']], [63, ['F', 'V', 'L', 'A']], [64, ['K', 'Q', 'R', 'E']],\n [65, ['G', 'S', 'D', 'N']], [66, ['R', 'K', 'Q']],\n [67, ['F', 'V', 'A', 'L', 'I']], [68, ['T', 'S', 'I']],\n [69, ['I', 'L', 'M', 'V', 'F']], [70, ['S', 'T', 'N']],\n [71, ['R', 'V', 'A', 'K', 'L', 'P', 'T']], [72, ['D', 'N', 'E']],\n [73, ['N', 'S', 'D', 'K', 'T']], [74, ['T', 'Q', 'S', 'I', 'M']],\n [75, ['L', 'A', 'V', 'F']], [76, ['Y', 'S', 'F', 'H', 'T', 'V']],\n [77, ['L', 'M']], [78, ['Q', 'E', 'K', 'D', 'T']],\n [79, ['L', 'M', 'I', 'V', 'W']],\n [80, ['S', 'N', 'D', 'T', 'R', 'A', 'H', 'K']], [81, ['S', 'N', 'R', 'T', 'A', 'K', 'G']],\n [82, ['L', 'M', 'V', 'P']], [83, ['R', 'T', 'K']],\n [84, ['A', 'S', 'T', 'V', 'P']], [85, ['E', 'A', 'D', 'G', 'S', 'V']],\n [86, ['D']], [87, ['T', 'S']], [88, ['A', 'G']],\n [89, ['V', 'T', 'I', 'L', 'M']], [90, ['Y']], [91, ['Y', 'F']], [92, ['C']],\n [93, ['A', 'T', 'V']], [94, ['R', 'K', 'S', 'T', 'A', 'G']],\n [95, []], [96, []], [97, []], [98, []], [99, []], [100, []], [101, []],\n [102, ['Y', 'V', 'I', 'L', 'F', 'P', 'H', 'S']],\n [103, ['W']], [104, ['G']], [105, ['Q', 'P', 'R', 'K', 'A', 'T']],\n [106, ['G']], [107, ['T', 'V', 'A', 'I']], [108, ['L', 'T', 'M', 'S', 'Q', 'P']],\n [109, ['V', 'L', 'I']], [110, ['T', 'I', 'V']], [111, ['V']],\n [112, ['S', 'T']], [113, ['S', 'A']],\n];\n\nexport const MARTIN_K: [number, string[]][] = [\n [1, ['D', 'E', 'Q', 'N', 'A']], [2, ['I', 'V', 'L']], [3, ['V', 'Q', 'L', 'E', 'K']],\n [4, ['M', 'L', 'V', 'I']], [5, ['T', 'S']], [6, ['Q']],\n [7, ['S', 'T', 'A', 'I']], [8, ['P', 'Q', 'T', 'A', 'H']],\n [9, ['S', 'G', 'L', 'A', 'D', 'K', 'F', 'P', 'V']], [10, ['S', 'T', 'F', 'I']],\n [11, ['L', 'M', 'N', 'Q', 'V']], [12, ['T', 'S', 'A', 'P', 'Y']],\n [13, ['V', 'L', 'A', 'T', 'M']], [14, ['T', 'S', 'A']],\n [15, ['A', 'P', 'I', 'V', 'L']], [16, ['G']],\n [17, ['E', 'Q', 'D', 'G', 'T']], [18, ['K', 'R', 'P', 'T', 'Q', 'S']],\n [19, ['V', 'A', 'I']], [20, ['T', 'S']], [21, ['M', 'L', 'I', 'F']],\n [22, ['S', 'T', 'N']], [23, ['C']],\n [24, ['K', 'R', 'Q', 'S']], [25, ['S', 'A', 'T', 'C']], [26, ['S', 'T', 'G']],\n [27, ['Q', 'G', 'E', 'S', 'K', 'H']], [28, ['S', 'N', 'D', 'E', 'R', 'T', 'G']],\n [29, []], [30, []], [31, []], [32, []],\n [33, ['L', 'M', 'I', 'V', 'F']],\n [34, ['T', 'A', 'N', 'H', 'E', 'G', 'Q', 'Y', 'S', 'D']],\n [35, ['W']], [36, ['Y', 'L', 'F']], [37, ['Q', 'L', 'R']],\n [38, ['Q', 'H', 'E']], [39, ['K', 'R']],\n [40, ['P', 'Q', 'S', 'T']], [41, ['G', 'E', 'D', 'H', 'N']],\n [42, ['Q', 'K', 'S', 'T', 'G', 'E', 'R']], [43, ['P', 'A', 'S', 'T', 'V']],\n [44, ['P', 'I', 'V']], [45, ['K', 'R', 'Q', 'E', 'I', 'T']],\n [46, ['L', 'R', 'T', 'P', 'V', 'A']], [47, ['L', 'W']],\n [48, ['I', 'V', 'M']], [49, ['Y', 'K', 'H', 'S', 'F']],\n [50, ['W', 'G', 'L', 'K', 'N', 'A', 'D', 'Y', 'S', 'E', 'T', 'R', 'Q', 'F', 'V']],\n [51, ['A', 'V', 'T', 'S', 'M', 'G', 'I']], [52, ['S', 'K', 'T', 'N']],\n [53, ['T', 'S', 'K', 'N', 'I', 'D', 'R', 'Y', 'Q', 'F']], [54, ['R', 'L', 'S']],\n [55, ['E', 'A', 'D', 'Q', 'F', 'R', 'Y', 'H', 'I', 'K', 'P', 'G', 'V']],\n [56, ['S', 'T', 'D', 'P', 'A', 'E']], [57, ['G']], [58, ['V', 'I']],\n [59, ['P', 'S', 'A']],\n [60, ['D', 'S', 'A', 'V', 'K', 'G']], [61, ['R']], [62, ['F']],\n [63, ['T', 'S', 'I', 'K', 'R']], [64, ['G', 'S', 'A']],\n [65, ['S', 'G', 'R']], [66, ['G', 'R']], [67, ['S', 'Y']],\n [68, ['G', 'R', 'A']], [69, ['T', 'R', 'S', 'Q']],\n [70, ['D', 'E', 'Q', 'S', 'H', 'Y', 'A']], [71, ['F', 'Y']],\n [72, ['T', 'S']], [73, ['L', 'F']], [74, ['T', 'K', 'N', 'S', 'R']],\n [75, ['I', 'V']], [76, ['N', 'S', 'H', 'T', 'D']],\n [77, ['S', 'R', 'P', 'N', 'G', 'D', 'T']], [78, ['V', 'L', 'M']],\n [79, ['Q', 'E', 'K']], [80, ['A', 'P', 'E', 'S', 'T', 'Q', 'C', 'Y']],\n [81, ['E', 'D']], [82, ['D']],\n [83, ['L', 'F', 'V', 'T', 'A', 'I', 'S', 'M']], [84, ['A', 'G']],\n [85, ['V', 'T', 'S', 'E', 'D', 'L', 'I', 'M']], [86, ['Y', 'F']],\n [87, ['Y', 'F', 'H']], [88, ['C']],\n [89, ['Q', 'W', 'F', 'L', 'H', 'M', 'G', 'A', 'K', 'S', 'V']],\n [90, ['N', 'Q', 'H', 'G']],\n [91, ['D', 'Y', 'G', 'F', 'I', 'S', 'W', 'R', 'T', 'A', 'N', 'H']],\n [92, []], [93, []], [94, []], [95, []],\n [96, ['L', 'Y', 'W', 'F', 'P', 'R', 'A', 'S', 'I', 'V', 'E', 'H', 'T']],\n [97, ['T', 'V', 'I', 'A', 'S', 'F', 'L']], [98, ['F']],\n [99, ['G']], [100, ['A', 'Q', 'S', 'G', 'P']], [101, ['G']],\n [102, ['T']], [103, ['K', 'R', 'E']], [104, ['L', 'V']],\n [105, ['E', 'V', 'D']], [106, ['L', 'I', 'V']], [107, ['K', 'R']],\n];\n\nexport const MARTIN_L: [number, string[]][] = [\n [1, ['Q', 'S']], [2, ['S', 'Y', 'P', 'A', 'L', 'F']], [3, ['A', 'V', 'E']],\n [4, ['L', 'V']], [5, ['T']], [6, ['Q']], [7, ['P', 'E', 'S']],\n [8, ['A', 'P', 'S', 'R']], [9, ['S', 'A']], [10, []],\n [11, ['V', 'L', 'A']], [12, ['S', 'T']],\n [13, ['G', 'V', 'A', 'T', 'K', 'E', 'F']], [14, ['S', 'A', 'T']],\n [15, ['P', 'L']], [16, ['G']], [17, ['Q', 'E', 'K', 'A']],\n [18, ['S', 'T', 'K', 'R']], [19, ['I', 'A', 'V']],\n [20, ['T', 'R', 'S', 'K']], [21, ['I', 'L']], [22, ['S', 'T']], [23, ['C']],\n [24, ['T', 'G', 'Q', 'S', 'A', 'N', 'R']], [25, ['G', 'S', 'L', 'R']],\n [26, ['T', 'N', 'D', 'S']],\n [27, ['Q', 'T', 'N', 'S', 'K', 'A', 'R']], [28, ['S', 'I', 'L', 'N', 'G', 'Q']],\n [29, ['S', 'D', 'G', 'N', 'A', 'R', 'H']],\n [30, []], [31, ['N', 'K', 'D', 'R', 'Y']],\n [32, ['F', 'S', 'L', 'A', 'Y', 'T', 'D', 'G', 'N']],\n [33, ['V', 'A', 'I']], [34, ['S', 'H', 'Q', 'C', 'N', 'Y', 'E']],\n [35, ['W']], [36, ['Y', 'F', 'V']], [37, ['Q']],\n [38, ['Q', 'H', 'E']], [39, ['H', 'K', 'R', 'L', 'F', 'V', 'Q']],\n [40, ['P', 'A', 'S']], [41, ['G', 'D', 'L']],\n [42, ['K', 'Q', 'T', 'R', 'H', 'S', 'A', 'M']], [43, ['A', 'S', 'L', 'P', 'G']],\n [44, ['P', 'F']], [45, ['K', 'V', 'S', 'R', 'T', 'I']],\n [46, ['L', 'V', 'G', 'Y', 'T']], [47, ['I', 'V', 'M', 'L']],\n [48, ['I', 'V', 'L', 'M']], [49, ['F', 'Y', 'G', 'S', 'E']],\n [50, ['D', 'A', 'N', 'E', 'Q', 'Y', 'G', 'V', 'R', 'L', 'K']],\n [51, ['V', 'D', 'N', 'T', 'K']], [52, ['T', 'S', 'Q', 'N', 'D', 'K']],\n [53, ['N', 'D', 'K', 'Q', 'E', 'S', 'H']], [54, ['R', 'T']],\n [55, ['P', 'A', 'G']], [56, ['S', 'P', 'D']], [57, ['G']],\n [58, ['I', 'V']], [59, ['S', 'P']],\n [60, ['N', 'E', 'A', 'D']], [61, ['R']], [62, ['F']], [63, ['S']],\n [64, ['G']], [65, ['S']], [66, ['K', 'N', 'P', 'L', 'I', 'S']],\n [67, ['S', 'D', 'I']], [68, ['G', 'A']],\n [69, ['N', 'T', 'D', 'S', 'A']], [70, ['T', 'K', 'S', 'R']],\n [71, ['A', 'R']], [72, ['S', 'T', 'A', 'Y']], [73, ['L']],\n [74, ['T', 'G', 'A', 'S']], [75, ['I', 'V']], [76, ['S', 'T']],\n [77, ['G', 'R', 'S', 'N']], [78, ['L', 'V', 'T', 'A', 'I']],\n [79, ['Q', 'E', 'R']], [80, ['A', 'S', 'P', 'T']],\n [81, ['E', 'G', 'M', 'D']], [82, ['D']], [83, ['E']],\n [84, ['A', 'G']], [85, ['D', 'I', 'E']], [86, ['Y']],\n [87, ['Y', 'F', 'I']], [88, ['C']],\n [89, ['A', 'Q', 'C', 'H', 'G', 'S']], [90, ['A', 'V', 'L', 'S', 'T', 'M']],\n [91, ['Y', 'W', 'L', 'R', 'G']],\n [92, []], [93, []], [94, []], [95, []],\n [96, ['L', 'V', 'W', 'R', 'P', 'Y', 'S', 'F', 'A']],\n [97, ['L', 'T', 'V', 'I', 'A', 'F', 'S']], [98, ['F']],\n [99, ['G']], [100, ['G', 'T', 'S']], [101, ['G']],\n [102, ['T']], [103, ['K', 'T', 'R', 'Q']], [104, ['V', 'L']],\n [105, ['T']], [106, ['V']], [107, ['L', 'K']],\n];\n","/**\n * AHo consensus profiles.\n */\n\nexport const AHO_H: [number, string[]][] = [\n [1, ['Q', 'E', 'D']], [2, ['V', 'Q']], [3, ['Q', 'K', 'H', 'S', 'T']], [4, ['L', 'V']],\n [5, ['V', 'Q', 'L', 'E', 'K', 'T']], [6, ['E', 'Q', 'A']], [7, ['S', 'P', 'W']],\n [8, []], [9, ['G', 'E']], [10, ['G', 'A', 'P', 'S']],\n [11, ['G', 'E', 'D', 'V']], [12, ['L', 'V']], [13, ['V', 'K', 'L']],\n [14, ['K', 'Q', 'R']], [15, ['P', 'A']], [16, ['G', 'S', 'T']],\n [17, ['G', 'A', 'E', 'Q', 'R', 'S', 'D']], [18, ['S', 'T']],\n [19, ['L', 'V']], [20, ['R', 'K', 'S', 'T']], [21, ['L', 'I', 'V', 'M']],\n [22, ['S', 'T']], [23, ['C']], [24, ['A', 'K', 'T', 'V', 'S']],\n [25, ['A', 'V', 'T', 'G', 'I']], [26, ['S', 'T', 'Y']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []], [39, []], [40, []],\n [41, []], [42, []],\n [43, ['W']], [44, ['V', 'I', 'F']], [45, ['R', 'K']], [46, ['Q']],\n [47, ['A', 'P', 'R', 'S', 'T', 'M', 'V']], [48, ['P', 'A', 'H']],\n [49, ['G', 'E', 'S', 'A']], [50, ['K', 'Q', 'R', 'N']],\n [51, ['G', 'A', 'R', 'S']], [52, ['L']], [53, ['E', 'Q']],\n [54, ['W', 'Y']], [55, ['I', 'V', 'K', 'M']],\n [56, ['A', 'G', 'S']],\n [57, []], [58, []], [59, []], [60, []], [61, []], [62, []], [63, []],\n [64, []], [65, []], [66, []], [67, []], [68, []], [69, []],\n [70, ['Y']], [71, ['A', 'N', 'S', 'P', 'T', 'V', 'G']],\n [72, ['D', 'E', 'Q', 'A', 'S', 'P']], [73, ['S', 'K', 'A', 'W']],\n [74, ['F', 'V', 'L', 'A']], [75, ['K', 'Q', 'R', 'E']],\n [76, ['G', 'S', 'D', 'N']], [77, ['R', 'K', 'Q']],\n [78, ['F', 'V', 'A', 'L', 'I']], [79, ['T', 'S', 'I']],\n [80, ['I', 'L', 'M', 'V', 'F']], [81, ['S', 'T', 'N']],\n [82, ['R', 'V', 'A', 'K', 'L', 'P', 'T']], [83, ['D', 'N', 'E']],\n [84, ['N', 'T', 'K', 'D', 'E', 'S', 'R']], [85, ['S', 'A', 'P', 'D', 'N']],\n [86, ['K', 'S', 'T', 'A', 'E', 'I', 'R', 'Q', 'N', 'L']], [87, ['N', 'S', 'D', 'K', 'T']],\n [88, ['T', 'Q', 'S', 'I', 'M']], [89, ['L', 'A', 'V', 'F']],\n [90, ['Y', 'S', 'F', 'H', 'T', 'V']], [91, ['L', 'M']],\n [92, ['Q', 'E', 'K', 'D', 'T']], [93, ['L', 'M', 'I', 'V', 'W']],\n [94, ['A', 'C', 'D', 'G', 'H', 'K', 'L', 'N', 'R', 'S', 'T']],\n [95, ['A', 'G', 'H', 'K', 'N', 'R', 'S', 'T']], [96, ['L', 'M', 'P', 'V']],\n [97, ['R', 'T', 'K']], [98, ['A', 'S', 'T', 'V', 'P']],\n [99, ['E', 'A', 'D', 'G', 'S', 'V']], [100, ['D']], [101, ['T', 'S']],\n [102, ['A', 'G']], [103, ['V', 'T', 'I', 'L', 'M']], [104, ['Y']],\n [105, ['Y', 'F']], [106, ['C']],\n [107, ['A', 'G', 'S', 'D', 'E', 'N', 'T', 'V', 'I', 'L', 'K', 'R', 'Q', 'P', 'F', 'W', 'Y', 'M', 'H', 'C']], [108, ['A', 'G', 'S', 'D', 'E', 'N', 'T', 'V', 'I', 'L', 'K', 'R', 'Q', 'P', 'F', 'W', 'Y', 'M', 'H', 'C']], [109, []], [110, []], [111, []], [112, []], [113, []],\n [114, []], [115, []], [116, []], [117, []], [118, []], [119, []], [120, []],\n [121, []], [122, []], [123, []], [124, []], [125, []], [126, []], [127, []],\n [128, []], [129, []], [130, []], [131, []], [132, []], [133, []], [134, []],\n [135, []], [136, []], [137, []], [138, []],\n [139, ['W']], [140, ['G']], [141, ['Q', 'P', 'R', 'K', 'A', 'T']],\n [142, ['G']], [143, ['T', 'V', 'A', 'I']], [144, ['L', 'T', 'M', 'S', 'Q', 'P']],\n [145, ['V', 'L', 'I']], [146, ['T', 'I', 'V']], [147, ['V']],\n [148, ['S', 'T']], [149, ['S', 'A']],\n];\n\nexport const AHO_K: [number, string[]][] = [\n [1, ['D', 'E', 'Q', 'N', 'A']], [2, ['I', 'V', 'L']], [3, ['V', 'Q', 'L', 'E', 'K']],\n [4, ['M', 'L', 'V', 'I']], [5, ['T', 'S']], [6, ['Q']],\n [7, ['S', 'T', 'A', 'I']], [8, ['P', 'Q', 'T', 'A', 'H']],\n [9, ['S', 'G', 'L', 'A', 'D', 'K', 'F', 'P', 'V']], [10, ['S', 'T', 'F', 'I']],\n [11, ['L', 'M', 'N', 'Q', 'V']], [12, ['T', 'S', 'A', 'P', 'Y']],\n [13, ['V', 'L', 'A', 'T', 'M']], [14, ['T', 'S', 'A']],\n [15, ['A', 'P', 'I', 'V', 'L']], [16, ['G']],\n [17, ['E', 'Q', 'D', 'G', 'T']], [18, ['K', 'R', 'P', 'T', 'Q', 'S']],\n [19, ['V', 'A', 'I']], [20, ['T', 'S']], [21, ['M', 'L', 'I', 'F']],\n [22, ['S', 'T', 'N']], [23, ['C']],\n [24, ['K', 'R', 'Q', 'S']], [25, ['S', 'A', 'T', 'C']], [26, ['S', 'T', 'G']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []], [39, []], [40, []],\n [41, ['L', 'M', 'I', 'V', 'F']],\n [42, ['T', 'A', 'N', 'H', 'E', 'G', 'Q', 'Y', 'S', 'D']],\n [43, ['W']], [44, ['Y', 'L', 'F']], [45, ['Q', 'L', 'R']],\n [46, ['Q', 'H', 'E']], [47, ['K', 'R']],\n [48, ['P', 'Q', 'S', 'T']], [49, ['G', 'E', 'D', 'H', 'N']],\n [50, ['Q', 'K', 'S', 'T', 'G', 'E', 'R']], [51, ['P', 'A', 'S', 'T', 'V']],\n [52, ['P', 'I', 'V']], [53, ['K', 'R', 'Q', 'E', 'I', 'T']],\n [54, ['L', 'R', 'T', 'P', 'V', 'A']], [55, ['L', 'W']],\n [56, ['I', 'V', 'M']], [57, ['Y', 'K', 'H', 'S', 'F']],\n [58, []], [59, []], [60, []], [61, []], [62, []], [63, []], [64, []],\n [65, []], [66, []], [67, []], [68, []], [69, []],\n [70, ['R', 'L', 'S']],\n [71, ['E', 'A', 'D', 'Q', 'F', 'R', 'Y', 'H', 'I', 'K', 'P', 'G', 'V']],\n [72, ['S', 'T', 'D', 'P', 'A', 'E']], [73, ['G']], [74, ['V', 'I']],\n [75, ['P', 'S', 'A']], [76, ['D', 'S', 'A', 'V', 'K', 'G']],\n [77, ['R']], [78, ['F']], [79, ['T', 'S', 'I', 'K', 'R']],\n [80, ['G', 'S', 'A']], [81, ['S', 'G', 'R']], [82, ['G', 'R']],\n [83, ['S', 'Y']], [84, ['G', 'R', 'A']],\n [85, ['A', 'F', 'P', 'S', 'Y']], [86, ['A', 'D', 'E', 'G', 'Q', 'R', 'V']],\n [87, ['T', 'R', 'S', 'Q']], [88, ['D', 'E', 'Q', 'S', 'H', 'Y', 'A']],\n [89, ['F', 'Y']], [90, ['T', 'S']], [91, ['L', 'F']],\n [92, ['T', 'K', 'N', 'S', 'R']], [93, ['I', 'V']],\n [94, ['N', 'S', 'H', 'T', 'D']], [95, ['S', 'R', 'P', 'N', 'G', 'D', 'T']],\n [96, ['V', 'L', 'M']], [97, ['Q', 'E', 'K']],\n [98, ['A', 'P', 'E', 'S', 'T', 'Q', 'C', 'Y']], [99, ['E', 'D']],\n [100, ['D']], [101, ['L', 'F', 'V', 'T', 'A', 'I', 'S', 'M']],\n [102, ['A', 'G']], [103, ['V', 'T', 'S', 'E', 'D', 'L', 'I', 'M']],\n [104, ['Y', 'F']], [105, ['Y', 'F', 'H']], [106, ['C']],\n [107, []], [108, []], [109, []], [110, []], [111, []], [112, []], [113, []],\n [114, []], [115, []], [116, []], [117, []], [118, []], [119, []], [120, []],\n [121, []], [122, []], [123, []], [124, []], [125, []], [126, []], [127, []],\n [128, []], [129, []], [130, []], [131, []], [132, []], [133, []], [134, []],\n [135, []], [136, []], [137, []], [138, []],\n [139, ['F']], [140, ['G']], [141, ['A', 'Q', 'S', 'G', 'P']],\n [142, ['G']], [143, ['T']], [144, ['K', 'R', 'E']],\n [145, ['L', 'V']], [146, ['E', 'V', 'D']], [147, ['L', 'I', 'V']],\n [148, ['K', 'R']], [149, ['R', 'G']],\n];\n\nexport const AHO_L: [number, string[]][] = [\n [1, ['Q', 'S']], [2, ['S', 'Y', 'P', 'A', 'L', 'F']], [3, ['A', 'V', 'E']],\n [4, ['L', 'V']], [5, ['T']], [6, ['Q']], [7, ['P', 'E', 'S']],\n [8, []], [9, ['A', 'P', 'S', 'R']], [10, ['S', 'A']],\n [11, ['V', 'L', 'A']], [12, ['S', 'T']],\n [13, ['G', 'V', 'A', 'T', 'K', 'E', 'F']], [14, ['S', 'A', 'T']],\n [15, ['P', 'L']], [16, ['G']], [17, ['Q', 'E', 'K', 'A']],\n [18, ['S', 'T', 'K', 'R']], [19, ['I', 'A', 'V']],\n [20, ['T', 'R', 'S', 'K']], [21, ['I', 'L']], [22, ['S', 'T']], [23, ['C']],\n [24, ['T', 'G', 'Q', 'S', 'A', 'N', 'R']], [25, ['G', 'S', 'L', 'R']],\n [26, ['T', 'N', 'D', 'S']],\n [27, []], [28, []], [29, []], [30, []], [31, []], [32, []], [33, []],\n [34, []], [35, []], [36, []], [37, []], [38, []], [39, []], [40, []],\n [41, ['V', 'A', 'I']], [42, ['S', 'H', 'Q', 'C', 'N', 'Y', 'E']],\n [43, ['W']], [44, ['Y', 'F', 'V']], [45, ['Q']],\n [46, ['Q', 'H', 'E']], [47, ['H', 'K', 'R', 'L', 'F', 'V', 'Q']],\n [48, ['P', 'A', 'S']], [49, ['G', 'D', 'L']],\n [50, ['K', 'Q', 'T', 'R', 'H', 'S', 'A', 'M']], [51, ['A', 'S', 'L', 'P', 'G']],\n [52, ['P', 'F']], [53, ['K', 'V', 'S', 'R', 'T', 'I']],\n [54, ['L', 'V', 'G', 'Y', 'T']], [55, ['I', 'V', 'M', 'L']],\n [56, ['I', 'V', 'L', 'M']], [57, ['F', 'Y', 'G', 'S', 'E']],\n [58, []], [59, []], [60, []], [61, []], [62, []], [63, []], [64, []],\n [65, []], [66, []], [67, []], [68, []],\n [69, ['N', 'D', 'K', 'Q', 'E', 'S', 'H']], [70, ['R', 'T']],\n [71, ['P', 'A', 'G']], [72, ['S', 'P', 'D']], [73, ['G']],\n [74, ['I', 'V']], [75, ['S', 'P']], [76, ['N', 'E', 'A', 'D']],\n [77, ['R']], [78, ['F']], [79, ['S']], [80, ['G']],\n [81, ['S']], [82, ['K', 'N', 'P', 'L', 'I', 'S']],\n [83, ['F', 'S', 'I']], [84, ['G', 'A', 'S']],\n [85, ['A', 'I', 'L', 'S', 'T', 'W']], [86, ['A', 'D', 'E', 'G', 'S', 'T']],\n [87, ['N', 'T', 'D', 'S', 'A']], [88, ['T', 'K', 'S', 'R']],\n [89, ['A', 'R']], [90, ['S', 'T', 'A', 'Y']], [91, ['L']],\n [92, ['T', 'G', 'A', 'S']], [93, ['I', 'V']], [94, ['S', 'T']],\n [95, ['G', 'R', 'S', 'N']], [96, ['L', 'V', 'T', 'A', 'I']],\n [97, ['Q', 'E', 'R']], [98, ['A', 'S', 'P', 'T']],\n [99, ['E', 'G', 'M', 'D']], [100, ['D']], [101, ['E']],\n [102, ['A', 'G']], [103, ['D', 'I', 'E']], [104, ['Y']],\n [105, ['Y', 'F', 'I']], [106, ['C']],\n [107, []], [108, []], [109, []], [110, []], [111, []], [112, []], [113, []],\n [114, []], [115, []], [116, []], [117, []], [118, []], [119, []], [120, []],\n [121, []], [122, []], [123, []], [124, []], [125, []], [126, []], [127, []],\n [128, []], [129, []], [130, []], [131, []], [132, []], [133, []], [134, []],\n [135, []], [136, []], [137, []], [138, []],\n [139, ['F']], [140, ['G']], [141, ['G', 'T', 'S']],\n [142, ['G']], [143, ['T']], [144, ['K', 'T', 'R', 'Q']],\n [145, ['V', 'L']], [146, ['T']], [147, ['V']],\n [148, ['L', 'K']], [149, ['R', 'G']],\n];\n","/**\n * Central consensus profile registry.\n * Maps (scheme, chainType) -> profile data.\n */\nimport type { Scheme, ChainType } from '../types';\nimport { IMGT_H, IMGT_K, IMGT_L, CTERM_H, CTERM_K, CTERM_L } from './consensus-imgt';\nimport { KABAT_H, KABAT_K, KABAT_L } from './consensus-kabat';\nimport { MARTIN_H, MARTIN_K, MARTIN_L } from './consensus-martin';\nimport { AHO_H, AHO_K, AHO_L } from './consensus-aho';\n\nexport type ProfileData = [number, string[]][];\n\n/** Get the consensus profile for a given scheme and chain type */\nexport function getConsensusProfile(scheme: Scheme, chain: ChainType): ProfileData {\n const key = `${scheme}_${chain}`;\n const profiles: Record<string, ProfileData> = {\n imgt_H: IMGT_H, imgt_K: IMGT_K, imgt_L: IMGT_L,\n kabat_H: KABAT_H, kabat_K: KABAT_K, kabat_L: KABAT_L,\n chothia_H: MARTIN_H, chothia_K: MARTIN_K, chothia_L: MARTIN_L,\n aho_H: AHO_H, aho_K: AHO_K, aho_L: AHO_L,\n };\n return profiles[key] ?? IMGT_H;\n}\n\n/** Get the C-terminal finder profile for a chain type */\nexport function getCtermProfile(chain: ChainType): ProfileData {\n const profiles: Record<ChainType, ProfileData> = {\n H: CTERM_H, K: CTERM_K, L: CTERM_L,\n };\n return profiles[chain];\n}\n\nexport { IMGT_H, IMGT_K, IMGT_L, CTERM_H, CTERM_K, CTERM_L };\nexport { KABAT_H, KABAT_K, KABAT_L };\nexport { MARTIN_H, MARTIN_K, MARTIN_L };\nexport { AHO_H, AHO_K, AHO_L };\n","/**\n * BLOSUM62 substitution matrix.\n * Used for scoring amino acid matches/mismatches during alignment.\n */\n\nconst AA_ORDER = 'ARNDCQEGHILKMFPSTWYV';\n\n// BLOSUM62 matrix values in the order of AA_ORDER\nconst MATRIX: number[][] = [\n [ 4,-1,-2,-2, 0,-1,-1, 0,-2,-1,-1,-1,-1,-2,-1, 1, 0,-3,-2, 0], // A\n [-1, 5, 0,-2,-3, 1, 0,-2, 0,-3,-2, 2,-1,-3,-2,-1,-1,-3,-2,-3], // R\n [-2, 0, 6, 1,-3, 0, 0, 0, 1,-3,-3, 0,-2,-3,-2, 1, 0,-4,-2,-3], // N\n [-2,-2, 1, 6,-3, 0, 2,-1,-1,-3,-4,-1,-3,-3,-1, 0,-1,-4,-3,-3], // D\n [ 0,-3,-3,-3, 9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1], // C\n [-1, 1, 0, 0,-3, 5, 2,-2, 0,-3,-2, 1, 0,-3,-1, 0,-1,-2,-1,-2], // Q\n [-1, 0, 0, 2,-4, 2, 5,-2, 0,-3,-3, 1,-2,-3,-1, 0,-1,-3,-2,-2], // E\n [ 0,-2, 0,-1,-3,-2,-2, 6,-2,-4,-4,-2,-3,-3,-2, 0,-2,-2,-3,-3], // G\n [-2, 0, 1,-1,-3, 0, 0,-2, 8,-3,-3,-1,-2,-1,-2,-1,-2,-2, 2,-3], // H\n [-1,-3,-3,-3,-1,-3,-3,-4,-3, 4, 2,-3, 1, 0,-3,-2,-1,-3,-1, 3], // I\n [-1,-2,-3,-4,-1,-2,-3,-4,-3, 2, 4,-2, 2, 0,-3,-2,-1,-2,-1, 1], // L\n [-1, 2, 0,-1,-3, 1, 1,-2,-1,-3,-2, 5,-1,-3,-1, 0,-1,-3,-2,-2], // K\n [-1,-1,-2,-3,-1, 0,-2,-3,-2, 1, 2,-1, 5, 0,-2,-1,-1,-1,-1, 1], // M\n [-2,-3,-3,-3,-2,-3,-3,-3,-1, 0, 0,-3, 0, 6,-4,-2,-2, 1, 3,-1], // F\n [-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4, 7,-1,-1,-4,-3,-2], // P\n [ 1,-1, 1, 0,-1, 0, 0, 0,-1,-2,-2, 0,-1,-2,-1, 4, 1,-3,-2,-2], // S\n [ 0,-1, 0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1, 1, 5,-2,-2, 0], // T\n [-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1, 1,-4,-3,-2,11, 2,-3], // W\n [-2,-2,-2,-3,-2,-1,-2,-3, 2,-1,-1,-2,-1, 3,-3,-2,-2, 2, 7,-1], // Y\n [ 0,-3,-3,-3,-1,-2,-2,-3,-3, 3, 1,-2, 1,-1,-2,-2, 0,-3,-1, 4], // V\n];\n\nconst aaIndex = new Map<string, number>();\nfor (let i = 0; i < AA_ORDER.length; i++) {\n aaIndex.set(AA_ORDER[i], i);\n}\n\n/**\n * Get BLOSUM62 score for a pair of amino acids.\n * Returns -4 for unknown amino acids.\n */\nexport function blosum62Score(a: string, b: string): number {\n const i = aaIndex.get(a);\n const j = aaIndex.get(b);\n if (i === undefined || j === undefined) return -4;\n return MATRIX[i][j];\n}\n\n/**\n * Get the self-score (diagonal) for an amino acid.\n */\nexport function blosum62Self(a: string): number {\n const i = aaIndex.get(a);\n if (i === undefined) return -4;\n return MATRIX[i][i];\n}\n","/**\n * Profile-based global alignment for antibody numbering.\n *\n * Aligns an input antibody sequence against a consensus profile\n * using a modified Needleman-Wunsch algorithm. The profile defines\n * which positions exist in the numbering scheme and what amino acids\n * are expected at each position.\n *\n * Gap positions in the profile (empty amino acid lists) represent\n * CDR/variable regions where the input sequence can have insertions.\n */\n\nimport type { ChainType, AlignmentResult, Scheme } from './types';\nimport type { ProfileData } from './data/consensus';\nimport { getConsensusProfile, getCtermProfile } from './data/consensus';\nimport { blosum62Score } from './data/blosum62';\n\n// Scoring parameters\nconst MATCH_CONSENSUS = 6; // bonus for matching a consensus amino acid\nconst MATCH_BLOSUM_SCALE = 1; // scale factor for BLOSUM scores on mismatch\nconst GAP_OPEN = -10; // penalty for opening a gap\nconst GAP_EXTEND = -2; // penalty for extending a gap\nconst GAP_POSITION_BONUS = 4; // reduce gap penalty at gap positions (CDRs)\n\n/**\n * Score a residue against a profile position.\n * Gap positions (empty consensus) get a flat score since anything goes there.\n */\nfunction scorePosition(aa: string, consensusAAs: string[]): number {\n if (consensusAAs.length === 0) {\n // This is a gap/insertion position in the profile - mild positive score\n return 1;\n }\n // Check if aa is in the consensus set\n if (consensusAAs.includes(aa)) {\n return MATCH_CONSENSUS;\n }\n // Use BLOSUM62 against the best consensus AA\n let best = -10;\n for (const caa of consensusAAs) {\n const s = blosum62Score(aa, caa) * MATCH_BLOSUM_SCALE;\n if (s > best) best = s;\n }\n return best;\n}\n\n/** Direction for traceback */\nconst enum Dir {\n DIAG = 0,\n UP = 1, // gap in profile (insertion in sequence)\n LEFT = 2, // gap in sequence (deletion from profile)\n}\n\ninterface AlignmentCell {\n score: number;\n dir: Dir;\n}\n\n/**\n * Perform profile-based global alignment.\n * Returns the position code for each residue in the input sequence,\n * or '-' if the residue is outside the numbered region.\n */\nfunction profileAlign(\n seq: string,\n profile: ProfileData,\n): { positionCodes: string[]; matchedPositions: number; totalProfilePositions: number } {\n const n = seq.length; // sequence length\n const m = profile.length; // profile length\n\n // DP matrix: (n+1) x (m+1)\n // We use affine gap penalties with separate match/insert/delete states\n const INF = -1e9;\n\n // M[i][j] = best score aligning seq[0..i-1] to profile[0..j-1] ending in match\n // X[i][j] = ... ending in gap in profile (insertion in seq)\n // Y[i][j] = ... ending in gap in sequence (deletion from profile)\n const M: number[][] = Array.from({ length: n + 1 }, () => new Float64Array(m + 1) as unknown as number[]);\n const X: number[][] = Array.from({ length: n + 1 }, () => new Float64Array(m + 1) as unknown as number[]);\n const Y: number[][] = Array.from({ length: n + 1 }, () => new Float64Array(m + 1) as unknown as number[]);\n const trM: Dir[][] = Array.from({ length: n + 1 }, () => new Uint8Array(m + 1) as unknown as Dir[]);\n const trX: Dir[][] = Array.from({ length: n + 1 }, () => new Uint8Array(m + 1) as unknown as Dir[]);\n const trY: Dir[][] = Array.from({ length: n + 1 }, () => new Uint8Array(m + 1) as unknown as Dir[]);\n\n // Initialize\n M[0][0] = 0;\n X[0][0] = INF;\n Y[0][0] = INF;\n\n // Allow free leading gaps in sequence (seq can start after profile begins)\n // and free leading gaps in profile (profile can start after seq begins)\n for (let j = 1; j <= m; j++) {\n // Deletion from profile (skip profile positions at start)\n const isGap = profile[j - 1][1].length === 0;\n M[0][j] = INF;\n X[0][j] = INF;\n // Mild penalty for skipping non-gap positions, free for gap positions\n Y[0][j] = isGap ? Y[0][j - 1] : Y[0][j - 1] + GAP_EXTEND * 0.3;\n if (j === 1) Y[0][j] = isGap ? 0 : GAP_OPEN * 0.3;\n trY[0][j] = Dir.LEFT;\n }\n\n for (let i = 1; i <= n; i++) {\n // Insertion in sequence (residues before profile starts)\n M[i][0] = INF;\n Y[i][0] = INF;\n X[i][0] = X[i - 1][0] + GAP_EXTEND * 0.3;\n if (i === 1) X[i][0] = GAP_OPEN * 0.3;\n trX[i][0] = Dir.UP;\n }\n\n // Fill DP matrix\n for (let i = 1; i <= n; i++) {\n const aa = seq[i - 1];\n for (let j = 1; j <= m; j++) {\n const [, consensusAAs] = profile[j - 1];\n const isGapPos = consensusAAs.length === 0;\n\n // Match/mismatch score\n const matchScore = scorePosition(aa, consensusAAs);\n\n // M[i][j]: match state - came from any state diagonally\n const mFromM = M[i - 1][j - 1] + matchScore;\n const mFromX = X[i - 1][j - 1] + matchScore;\n const mFromY = Y[i - 1][j - 1] + matchScore;\n if (mFromM >= mFromX && mFromM >= mFromY) {\n M[i][j] = mFromM; trM[i][j] = Dir.DIAG;\n } else if (mFromX >= mFromY) {\n M[i][j] = mFromX; trM[i][j] = Dir.UP;\n } else {\n M[i][j] = mFromY; trM[i][j] = Dir.LEFT;\n }\n\n // X[i][j]: gap in profile (insertion in sequence)\n // Reduced penalty at positions that are naturally gap positions\n const gapOpenAdj = isGapPos ? GAP_OPEN + GAP_POSITION_BONUS : GAP_OPEN;\n const gapExtAdj = isGapPos ? GAP_EXTEND + GAP_POSITION_BONUS * 0.5 : GAP_EXTEND;\n\n const xFromM = M[i - 1][j] + gapOpenAdj;\n const xFromX = X[i - 1][j] + gapExtAdj;\n if (xFromM >= xFromX) {\n X[i][j] = xFromM; trX[i][j] = Dir.DIAG;\n } else {\n X[i][j] = xFromX; trX[i][j] = Dir.UP;\n }\n\n // Y[i][j]: gap in sequence (deletion from profile)\n // More permissive at gap positions (CDR gaps are expected)\n const delOpen = isGapPos ? 0 : GAP_OPEN;\n const delExt = isGapPos ? 0 : GAP_EXTEND;\n\n const yFromM = M[i][j - 1] + delOpen;\n const yFromY = Y[i][j - 1] + delExt;\n if (yFromM >= yFromY) {\n Y[i][j] = yFromM; trY[i][j] = Dir.DIAG;\n } else {\n Y[i][j] = yFromY; trY[i][j] = Dir.LEFT;\n }\n }\n }\n\n // Find best end score.\n // We prefer endpoints that consume the full profile (j = m) to ensure\n // all scheme positions are assigned. We allow trailing sequence residues\n // (i < n) for sequences extending beyond the variable region.\n // We also allow j < m for truncated sequences missing C-terminal residues,\n // but apply a penalty for unused non-gap profile positions.\n let bestScore = INF;\n let bestI = n, bestJ = m;\n let bestState: 'M' | 'X' | 'Y' = 'M';\n\n // Primary: full profile consumed, any amount of sequence consumed\n for (let i = 0; i <= n; i++) {\n for (const [state, mat] of [['M', M], ['X', X], ['Y', Y]] as const) {\n if (mat[i][m] > bestScore) {\n bestScore = mat[i][m]; bestState = state; bestI = i; bestJ = m;\n }\n }\n }\n\n // Secondary: full sequence consumed, partial profile (for truncated sequences).\n // Apply a small penalty per skipped non-gap profile position.\n for (let j = 0; j < m; j++) {\n // Count skipped non-gap positions at the end\n let skippedNonGap = 0;\n for (let k = j; k < m; k++) {\n if (profile[k][1].length > 0) skippedNonGap++;\n }\n const penalty = skippedNonGap * 3; // mild penalty per skipped position\n for (const [state, mat] of [['M', M], ['X', X], ['Y', Y]] as const) {\n if (mat[n][j] - penalty > bestScore) {\n bestScore = mat[n][j] - penalty; bestState = state; bestI = n; bestJ = j;\n }\n }\n }\n\n // Traceback\n const alignment: Array<[seqIdx: number, profIdx: number]> = [];\n let ci = bestI, cj = bestJ;\n let curState = bestState;\n\n // Trailing unaligned residues in sequence\n for (let i = n; i > bestI; i--) {\n alignment.push([i - 1, -1]);\n }\n\n while (ci > 0 || cj > 0) {\n if (curState === 'M') {\n if (ci === 0 && cj === 0) break;\n if (ci === 0 || cj === 0) {\n // Edge case\n if (ci > 0) { alignment.push([ci - 1, -1]); ci--; curState = 'X'; }\n else { cj--; curState = 'Y'; }\n continue;\n }\n alignment.push([ci - 1, cj - 1]);\n const tr = trM[ci][cj];\n ci--; cj--;\n if (tr === Dir.DIAG) curState = 'M';\n else if (tr === Dir.UP) curState = 'X';\n else curState = 'Y';\n } else if (curState === 'X') {\n if (ci === 0) break;\n alignment.push([ci - 1, -1]); // seq residue not aligned to profile\n const tr = trX[ci][cj];\n ci--;\n if (tr === Dir.DIAG) curState = 'M';\n else curState = 'X';\n } else { // Y\n if (cj === 0) break;\n // Skip profile position (deletion)\n const tr = trY[ci][cj];\n cj--;\n if (tr === Dir.DIAG) curState = 'M';\n else curState = 'Y';\n }\n }\n\n // Leading unaligned residues\n while (ci > 0) {\n alignment.push([ci - 1, -1]);\n ci--;\n }\n\n alignment.reverse();\n\n // Build position codes from alignment\n const positionCodes: string[] = new Array(n).fill('-');\n let matchedPositions = 0;\n const totalProfilePositions = profile.filter(p => p[1].length > 0).length;\n\n // Track which profile positions were used (for insertion labeling)\n const usedProfilePositions = new Set<number>();\n // First pass: assign direct matches\n for (const [seqIdx, profIdx] of alignment) {\n if (profIdx >= 0 && seqIdx >= 0) {\n const [posNum] = profile[profIdx];\n positionCodes[seqIdx] = String(posNum);\n usedProfilePositions.add(profIdx);\n if (profile[profIdx][1].length > 0) {\n matchedPositions++;\n }\n }\n }\n\n // Determine the alignment span: only create insertions between the first\n // and last directly-matched profile positions. Residues outside this span\n // (leader peptide, constant region, etc.) should remain as '-'.\n let firstMatchedSeqIdx = -1;\n let lastMatchedSeqIdx = -1;\n for (const [seqIdx, profIdx] of alignment) {\n if (profIdx >= 0 && seqIdx >= 0) {\n if (firstMatchedSeqIdx === -1) firstMatchedSeqIdx = seqIdx;\n lastMatchedSeqIdx = seqIdx;\n }\n }\n\n // Second pass: handle insertions (residues within the alignment span\n // that weren't directly matched to a profile position)\n // Insertion codes use letters: A, B, C, ...\n const insertionCounters = new Map<string, number>();\n for (let si = 0; si < n; si++) {\n if (positionCodes[si] !== '-') continue;\n // Only create insertions within the alignment span\n if (si < firstMatchedSeqIdx || si > lastMatchedSeqIdx) continue;\n // Find the nearest assigned position before this one\n let prevPos = '';\n for (let k = si - 1; k >= 0; k--) {\n if (positionCodes[k] !== '-') {\n prevPos = positionCodes[k];\n break;\n }\n }\n if (prevPos) {\n // Extract base position number (strip any existing insertion letter)\n const basePos = prevPos.replace(/[A-Z]$/, '');\n const count = (insertionCounters.get(basePos) ?? 0) + 1;\n insertionCounters.set(basePos, count);\n const insertionLetter = String.fromCharCode(64 + count); // A=1, B=2, ...\n positionCodes[si] = basePos + insertionLetter;\n }\n }\n\n return { positionCodes, matchedPositions, totalProfilePositions };\n}\n\n/**\n * Compute percent identity between aligned sequence and consensus.\n */\nfunction computeIdentity(\n seq: string,\n positionCodes: string[],\n profile: ProfileData,\n): number {\n const profileMap = new Map<number, string[]>();\n for (const [pos, aas] of profile) {\n if (aas.length > 0) profileMap.set(pos, aas);\n }\n\n let matches = 0;\n let total = 0;\n\n for (let i = 0; i < seq.length; i++) {\n const code = positionCodes[i];\n if (code === '-') continue;\n const posNum = parseInt(code, 10);\n if (isNaN(posNum)) continue;\n const consensusAAs = profileMap.get(posNum);\n if (!consensusAAs || consensusAAs.length === 0) continue;\n total++;\n if (consensusAAs.includes(seq[i])) {\n matches++;\n }\n }\n\n return total > 0 ? matches / total : 0;\n}\n\n/**\n * Validate conserved residues for an antibody sequence.\n * Checks for conserved cysteines (positions 23, 104 in IMGT-like schemes)\n * and conserved tryptophan (position 41 in IMGT).\n */\nfunction validateConserved(\n seq: string,\n positionCodes: string[],\n profile: ProfileData,\n): string {\n // Build position-to-residue map\n const posToAA = new Map<number, string>();\n for (let i = 0; i < seq.length; i++) {\n const code = positionCodes[i];\n if (code === '-') continue;\n const posNum = parseInt(code, 10);\n if (!isNaN(posNum)) {\n posToAA.set(posNum, seq[i]);\n }\n }\n\n // Find the conserved cysteine positions by checking profile\n // In most schemes, Cys is at specific positions where profile says ['C']\n const cysPositions: number[] = [];\n for (const [pos, aas] of profile) {\n if (aas.length === 1 && aas[0] === 'C') {\n cysPositions.push(pos);\n }\n }\n\n for (const pos of cysPositions) {\n const aa = posToAA.get(pos);\n if (aa && aa !== 'C') {\n return `Expected conserved Cys at position ${pos}, found ${aa}`;\n }\n }\n\n return '';\n}\n\n/**\n * Try to find the C-terminal of the variable region.\n * Returns the index in the sequence where the C-terminal motif starts,\n * or -1 if not found.\n */\nfunction findCTerminal(seq: string, chain: ChainType): number {\n const ctermProfile = getCtermProfile(chain);\n const motifLen = ctermProfile.length;\n\n if (seq.length < motifLen) return -1;\n\n let bestScore = -Infinity;\n let bestPos = -1;\n\n // Scan for best match across the sequence (variable region FW4 can be\n // far from the C-terminus in sequences with constant regions)\n const searchStart = Math.max(0, Math.floor(seq.length * 0.3));\n for (let start = searchStart; start <= seq.length - motifLen; start++) {\n let score = 0;\n for (let j = 0; j < motifLen; j++) {\n const aa = seq[start + j];\n const consensusAAs = ctermProfile[j][1];\n if (consensusAAs.includes(aa)) {\n score += 3;\n } else {\n score -= 1;\n }\n }\n if (score > bestScore) {\n bestScore = score;\n bestPos = start;\n }\n }\n\n // Require a reasonable match\n return bestScore >= motifLen * 1.5 ? bestPos : -1;\n}\n\n/**\n * Align a sequence to all chain type profiles and pick the best match.\n */\nexport function alignSequence(\n seq: string,\n scheme: Scheme,\n chains: ChainType[] = ['H', 'K', 'L'],\n): AlignmentResult {\n if (!seq || seq.length < 10) {\n return { numbering: [], percentIdentity: 0, chainType: 'H', error: 'Sequence too short' };\n }\n\n // Pre-compute CTERM positions for all chain types\n const ctermPositions = new Map<ChainType, number>();\n for (const chain of chains) {\n const idx = findCTerminal(seq, chain);\n if (idx >= 0) ctermPositions.set(chain, idx);\n }\n\n // Detect scFv: if Heavy and Light CTERM positions are both found\n // and far apart, this is a single-chain variable fragment (VH + VL)\n const ctermH = ctermPositions.get('H') ?? -1;\n const ctermK = ctermPositions.get('K') ?? -1;\n const ctermL = ctermPositions.get('L') ?? -1;\n const ctermLight = Math.max(ctermK, ctermL);\n const lightChain: ChainType = ctermK >= ctermL ? 'K' : 'L';\n\n const scfvDomainStart = new Map<ChainType, number>();\n if (ctermH >= 0 && ctermLight >= 0 && Math.abs(ctermH - ctermLight) > 80) {\n if (ctermLight < ctermH) {\n // VL-linker-VH: Light domain first, Heavy domain second.\n // Trim Heavy to skip past VL domain so it aligns cleanly to VH.\n const ctLen = getCtermProfile(lightChain).length;\n scfvDomainStart.set('H', ctermLight + ctLen);\n }\n // For VH-VL: Heavy is already at position 0 and aligns well naturally.\n // Don't trim Light - leaving it untrimmed means VH residues confuse\n // the Light alignment, keeping Heavy as the best match.\n }\n\n const isScfv = ctermH >= 0 && ctermLight >= 0 && Math.abs(ctermH - ctermLight) > 80;\n\n let bestResult: AlignmentResult | null = null;\n let bestIdentity = -1;\n let heavyResult: AlignmentResult | null = null;\n let heavyIdentity = -1;\n\n for (const chain of chains) {\n const profile = getConsensusProfile(scheme, chain);\n\n let trimmedSeq = seq;\n let seqOffset = 0;\n const ctermIdx = ctermPositions.get(chain) ?? -1;\n const ctermLen = getCtermProfile(chain).length;\n\n // C-terminal trimming\n if (ctermIdx >= 0) {\n const ctermEnd = Math.min(seq.length, ctermIdx + ctermLen + 5);\n trimmedSeq = seq.substring(0, ctermEnd);\n }\n\n // N-terminal trimming\n const domainStart = scfvDomainStart.get(chain);\n if (domainStart !== undefined && domainStart > 0 && domainStart < trimmedSeq.length - 80) {\n // scFv: skip past the other domain\n seqOffset = domainStart;\n trimmedSeq = trimmedSeq.substring(domainStart);\n } else if (trimmedSeq.length > 180) {\n // Long sequence (with constant region): try a few N-terminal start positions\n const starts = [0];\n const firstAAs = profile.slice(0, 5).map(p => p[1]).flat();\n for (let i = 1; i < Math.min(30, trimmedSeq.length - 80); i++) {\n if (firstAAs.includes(trimmedSeq[i])) {\n starts.push(i);\n break;\n }\n }\n\n let bestLocalIdentity = -1;\n let bestOffset = 0;\n\n for (const start of starts) {\n const subSeq = trimmedSeq.substring(start);\n const result = profileAlign(subSeq, profile);\n const identity = computeIdentity(subSeq, result.positionCodes, profile);\n if (identity > bestLocalIdentity) {\n bestLocalIdentity = identity;\n bestOffset = start;\n }\n }\n\n if (bestOffset > 0) {\n seqOffset = bestOffset;\n trimmedSeq = trimmedSeq.substring(seqOffset);\n }\n }\n\n const result = profileAlign(trimmedSeq, profile);\n const identity = computeIdentity(trimmedSeq, result.positionCodes, profile);\n\n // Build full numbering array\n const fullNumbering: string[] = new Array(seq.length).fill('-');\n for (let i = 0; i < trimmedSeq.length; i++) {\n fullNumbering[seqOffset + i] = result.positionCodes[i];\n }\n\n // KABAT CDR-H1 insertion placement: insertions should go after position 35\n // (not left-aligned after 31). Redistribute if needed.\n if (scheme === 'kabat' && chain === 'H') {\n const cdr1Indices: number[] = [];\n for (let i = 0; i < fullNumbering.length; i++) {\n if (fullNumbering[i] === '-') continue;\n const baseNum = parseInt(fullNumbering[i], 10);\n if (!isNaN(baseNum) && baseNum >= 31 && baseNum <= 35) {\n cdr1Indices.push(i);\n }\n }\n if (cdr1Indices.length > 5) {\n // First 5 get base positions 31-35, rest get 35A, 35B, etc.\n for (let j = 0; j < cdr1Indices.length; j++) {\n if (j < 5) {\n fullNumbering[cdr1Indices[j]] = String(31 + j);\n } else {\n fullNumbering[cdr1Indices[j]] = '35' + String.fromCharCode(64 + j - 4);\n }\n }\n }\n }\n\n const validationError = validateConserved(trimmedSeq, result.positionCodes, profile);\n\n const chainResult: AlignmentResult = {\n numbering: fullNumbering,\n percentIdentity: identity,\n chainType: chain,\n error: identity < 0.3 ? 'Low sequence identity; may not be an antibody variable region' :\n validationError || '',\n };\n\n // Save Heavy result for scFv preference\n if (chain === 'H') {\n heavyResult = chainResult;\n heavyIdentity = identity;\n }\n\n if (identity > bestIdentity) {\n bestIdentity = identity;\n bestResult = chainResult;\n }\n }\n\n // For scFv sequences, prefer Heavy chain when identities are close.\n // In scFv constructs, both VH and VL domains match their respective\n // profiles well. AntPack (HMMER-based) naturally picks VH; we replicate\n // this by preferring Heavy when its identity is within 0.05 of the best.\n if (isScfv && bestResult && bestResult.chainType !== 'H' &&\n heavyResult && heavyIdentity > 0.9 && bestIdentity - heavyIdentity < 0.05) {\n bestResult = heavyResult;\n }\n\n return bestResult!;\n}\n","/**\n * Region definitions per scheme, keyed by chain group.\n * Each region: [name, startPosition, endPosition].\n * Mirrors the Python number_antibody.py definitions.\n */\nimport type { Scheme, ChainGroup } from '../types';\n\nexport type RegionDef = [name: string, start: number, end: number];\n\nconst IMGT_REGIONS: Record<ChainGroup, RegionDef[]> = {\n Heavy: [\n ['FR1', 1, 26], ['CDR1', 27, 38], ['FR2', 39, 55],\n ['CDR2', 56, 65], ['FR3', 66, 104], ['CDR3', 105, 117], ['FR4', 118, 128],\n ],\n Light: [\n ['FR1', 1, 26], ['CDR1', 27, 38], ['FR2', 39, 55],\n ['CDR2', 56, 65], ['FR3', 66, 104], ['CDR3', 105, 117], ['FR4', 118, 127],\n ],\n};\n\nconst KABAT_REGIONS: Record<ChainGroup, RegionDef[]> = {\n Heavy: [\n ['FR1', 1, 30], ['CDR1', 31, 35], ['FR2', 36, 49],\n ['CDR2', 50, 65], ['FR3', 66, 94], ['CDR3', 95, 102], ['FR4', 103, 113],\n ],\n Light: [\n ['FR1', 1, 23], ['CDR1', 24, 34], ['FR2', 35, 49],\n ['CDR2', 50, 56], ['FR3', 57, 88], ['CDR3', 89, 97], ['FR4', 98, 107],\n ],\n};\n\nconst CHOTHIA_REGIONS: Record<ChainGroup, RegionDef[]> = {\n Heavy: [\n ['FR1', 1, 25], ['CDR1', 26, 32], ['FR2', 33, 51],\n ['CDR2', 52, 56], ['FR3', 57, 94], ['CDR3', 95, 102], ['FR4', 103, 113],\n ],\n Light: [\n ['FR1', 1, 25], ['CDR1', 26, 32], ['FR2', 33, 49],\n ['CDR2', 50, 52], ['FR3', 53, 90], ['CDR3', 91, 96], ['FR4', 97, 107],\n ],\n};\n\nconst AHO_REGIONS: Record<ChainGroup, RegionDef[]> = {\n Heavy: [\n ['FR1', 1, 24], ['CDR1', 25, 40], ['FR2', 41, 55],\n ['CDR2', 56, 78], ['FR3', 79, 108], ['CDR3', 109, 138], ['FR4', 139, 149],\n ],\n Light: [\n ['FR1', 1, 24], ['CDR1', 25, 40], ['FR2', 41, 55],\n ['CDR2', 56, 78], ['FR3', 79, 108], ['CDR3', 109, 138], ['FR4', 139, 149],\n ],\n};\n\nconst SCHEME_REGIONS: Record<Scheme, Record<ChainGroup, RegionDef[]>> = {\n imgt: IMGT_REGIONS,\n kabat: KABAT_REGIONS,\n chothia: CHOTHIA_REGIONS,\n aho: AHO_REGIONS,\n};\n\nexport function getRegions(scheme: Scheme, chainGroup: ChainGroup): RegionDef[] {\n return SCHEME_REGIONS[scheme]?.[chainGroup] ?? IMGT_REGIONS.Heavy;\n}\n","/**\n * Main annotator: numbers an antibody sequence and returns structured results.\n */\n\nimport type {\n Scheme, ChainType, ChainGroup,\n NumberingResult, NumberingEntry, RegionAnnotation,\n} from './types';\nimport { alignSequence } from './alignment';\nimport { getRegions } from './data/regions';\n\nconst VALID_AAS = new Set('ACDEFGHIKLMNPQRSTVWY');\n\n/**\n * Extract and clean a single-letter amino acid sequence from various input formats.\n */\nexport function extractSequence(raw: string): string {\n if (!raw) return '';\n const s = raw.trim().replace(/[-.\\s]/g, '');\n return Array.from(s.toUpperCase()).filter(c => VALID_AAS.has(c)).join('');\n}\n\n/**\n * Number a single antibody sequence.\n *\n * @param sequence - Raw amino acid sequence (single-letter codes)\n * @param scheme - Numbering scheme: 'imgt', 'kabat', 'chothia', or 'aho'\n * @param chains - Which chain types to try: ['H', 'K', 'L'] by default\n * @returns Structured numbering result\n */\nexport function numberSequence(\n sequence: string,\n scheme: Scheme = 'imgt',\n chains: ChainType[] = ['H', 'K', 'L'],\n): NumberingResult {\n const seq = extractSequence(sequence);\n\n if (!seq) {\n return emptyResult('Empty or invalid sequence');\n }\n\n if (seq.length < 10) {\n return emptyResult('Sequence too short (minimum 10 residues)');\n }\n\n // Perform alignment\n const alignment = alignSequence(seq, scheme, chains);\n\n if (alignment.error && alignment.percentIdentity < 0.3) {\n return emptyResult(alignment.error);\n }\n\n // Determine chain group\n const chainGroup: ChainGroup = alignment.chainType === 'H' ? 'Heavy' : 'Light';\n\n // Build numbering detail and position names\n const numberingDetail: NumberingEntry[] = [];\n const posNames: string[] = [];\n const numberingMap: Record<string, number> = {};\n\n for (let i = 0; i < seq.length; i++) {\n const posCode = alignment.numbering[i];\n if (posCode !== '-') {\n posNames.push(posCode);\n numberingDetail.push({ position: posCode, aa: seq[i] });\n numberingMap[posCode] = i;\n }\n }\n\n // Build region annotations\n const regionDefs = getRegions(scheme, chainGroup);\n const annotations: RegionAnnotation[] = regionDefs.map(([name, start, end]) => ({\n id: `${scheme}-${chainGroup}-${name}`.toLowerCase(),\n name,\n description: `${name} (${scheme.toUpperCase()} ${start}-${end})`,\n start: String(start),\n end: String(end),\n visualType: 'region' as const,\n category: 'structure' as const,\n sourceScheme: scheme.toUpperCase(),\n autoGenerated: true,\n }));\n\n return {\n positionNames: posNames.join(', '),\n chainType: chainGroup,\n chainTypeCode: alignment.chainType,\n annotations,\n numberingDetail,\n numberingMap,\n percentIdentity: alignment.percentIdentity,\n error: alignment.error,\n numbering: alignment.numbering,\n };\n}\n\n/**\n * Number multiple sequences at once.\n */\nexport function numberSequences(\n sequences: string[],\n scheme: Scheme = 'imgt',\n chains: ChainType[] = ['H', 'K', 'L'],\n): NumberingResult[] {\n return sequences.map(seq => numberSequence(seq, scheme, chains));\n}\n\nfunction emptyResult(error: string): NumberingResult {\n return {\n positionNames: '',\n chainType: 'Heavy',\n chainTypeCode: '',\n annotations: [],\n numberingDetail: [],\n numberingMap: {},\n percentIdentity: 0,\n error,\n numbering: [],\n };\n}\n"],"names":["IMGT_H","IMGT_K","IMGT_L","CTERM_H","CTERM_K","CTERM_L","KABAT_H","KABAT_K","KABAT_L","MARTIN_H","MARTIN_K","MARTIN_L","AHO_H","AHO_K","AHO_L","getConsensusProfile","scheme","chain","imgt_H","imgt_K","imgt_L","kabat_H","kabat_K","kabat_L","chothia_H","chothia_K","chothia_L","aho_H","aho_K","aho_L","getCtermProfile","H","K","L","MATRIX","aaIndex","Map","i","AA_ORDER","set","blosum62Score","a","b","get","j","undefined","scorePosition","aa","consensusAAs","length","includes","best","caa","s","profileAlign","seq","profile","n","m","INF","M","Array","from","Float64Array","X","Y","trM","Uint8Array","trX","trY","isGap","GAP_EXTEND","GAP_OPEN","isGapPos","matchScore","mFromM","mFromX","mFromY","gapOpenAdj","gapExtAdj","xFromM","xFromX","delOpen","delExt","yFromM","yFromY","bestScore","bestI","bestJ","bestState","state","mat","skippedNonGap","k","penalty","alignment","ci","cj","curState","push","tr","reverse","positionCodes","fill","matchedPositions","totalProfilePositions","filter","p","usedProfilePositions","Set","seqIdx","profIdx","posNum","String","add","firstMatchedSeqIdx","lastMatchedSeqIdx","insertionCounters","si","prevPos","basePos","replace","count","insertionLetter","fromCharCode","computeIdentity","profileMap","pos","aas","matches","total","code","parseInt","isNaN","validateConserved","posToAA","cysPositions","findCTerminal","ctermProfile","motifLen","bestPos","start","Math","max","floor","score","IMGT_REGIONS","Heavy","Light","SCHEME_REGIONS","imgt","kabat","chothia","aho","VALID_AAS","extractSequence","raw","trim","toUpperCase","c","has","join","numberSequences","sequences","chains","map","sequence","emptyResult","numbering","percentIdentity","chainType","error","ctermPositions","idx","ctermH","ctermK","ctermL","ctermLight","lightChain","scfvDomainStart","abs","ctLen","isScfv","bestResult","bestIdentity","heavyResult","heavyIdentity","trimmedSeq","seqOffset","ctermIdx","ctermLen","ctermEnd","min","substring","domainStart","starts","firstAAs","slice","flat","bestLocalIdentity","bestOffset","subSeq","identity","result","fullNumbering","cdr1Indices","baseNum","validationError","chainResult","alignSequence","chainGroup","numberingDetail","posNames","numberingMap","posCode","position","regionDefs","getRegions","annotations","name","end","id","toLowerCase","description","visualType","category","sourceScheme","autoGenerated","positionNames","chainTypeCode","numberSequence"],"sourceRoot":""}