@datagrok/bio 2.25.16 → 2.26.0
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.
- package/detectors.js +1 -7
- package/dist/242.js +1 -1
- package/dist/242.js.map +1 -1
- package/dist/282.js +2 -0
- package/dist/282.js.map +1 -0
- package/dist/284.js.map +1 -1
- package/dist/287.js +2 -0
- package/dist/287.js.map +1 -0
- package/dist/288.js +2 -0
- package/dist/288.js.map +1 -0
- package/dist/422.js +2 -0
- package/dist/422.js.map +1 -0
- package/dist/455.js +1 -1
- package/dist/455.js.map +1 -1
- package/dist/705.js +1 -1
- package/dist/705.js.map +1 -1
- package/dist/767.js +2 -0
- package/dist/767.js.map +1 -0
- package/dist/980.js.map +1 -1
- package/dist/package-test.js +5 -5
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/files/samples/antibodies.csv +494 -0
- package/package.json +3 -2
- package/projects/seq_space_demo.zip +0 -0
- package/src/package-api.ts +25 -0
- package/src/package.g.ts +22 -1
- package/src/package.ts +30 -1
- package/src/tests/detectors-tests.ts +7 -7
- package/src/utils/annotations/annotation-actions.ts +130 -0
- package/src/utils/annotations/annotation-manager-ui.ts +118 -0
- package/src/utils/annotations/annotation-manager.ts +163 -0
- package/src/utils/annotations/liability-scanner-ui.ts +88 -0
- package/src/utils/annotations/liability-scanner.ts +147 -0
- package/src/utils/annotations/numbering-ui.ts +450 -0
- package/src/utils/antibody-numbering (WIP)/alignment.ts +578 -0
- package/src/utils/antibody-numbering (WIP)/annotator.ts +120 -0
- package/src/utils/antibody-numbering (WIP)/data/blosum62.ts +55 -0
- package/src/utils/antibody-numbering (WIP)/data/consensus-aho.ts +155 -0
- package/src/utils/antibody-numbering (WIP)/data/consensus-imgt.ts +162 -0
- package/src/utils/antibody-numbering (WIP)/data/consensus-kabat.ts +157 -0
- package/src/utils/antibody-numbering (WIP)/data/consensus-martin.ts +152 -0
- package/src/utils/antibody-numbering (WIP)/data/consensus.ts +36 -0
- package/src/utils/antibody-numbering (WIP)/data/regions.ts +63 -0
- package/src/utils/antibody-numbering (WIP)/index.ts +31 -0
- package/src/utils/antibody-numbering (WIP)/testdata.ts +5356 -0
- package/src/utils/antibody-numbering (WIP)/types.ts +69 -0
- package/src/utils/context-menu.ts +42 -2
- package/src/utils/get-region-func-editor.ts +18 -2
- package/src/utils/get-region.ts +65 -1
- package/src/widgets/representations.ts +53 -2
- package/src/widgets/sequence-scrolling-widget.ts +28 -18
- package/test-console-output-1.log +505 -501
- package/test-record-1.mp4 +0 -0
- package/webpack.config.js +1 -22
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Martin (enhanced Chothia) consensus profiles.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const MARTIN_H: [number, string[]][] = [
|
|
6
|
+
[1, ['Q', 'E', 'D']], [2, ['V', 'Q']], [3, ['Q', 'K', 'H', 'S', 'T']], [4, ['L', 'V']],
|
|
7
|
+
[5, ['V', 'Q', 'L', 'E', 'K', 'T']], [6, ['E', 'Q', 'A']], [7, ['S', 'P', 'W']],
|
|
8
|
+
[8, ['G', 'E']], [9, ['G', 'A', 'P', 'S']], [10, ['G', 'E', 'D', 'V']],
|
|
9
|
+
[11, ['L', 'V']], [12, ['V', 'K', 'L']], [13, ['K', 'Q', 'R']], [14, ['P', 'A']],
|
|
10
|
+
[15, ['G', 'S', 'T']], [16, ['G', 'A', 'E', 'Q', 'R', 'S', 'D']], [17, ['S', 'T']],
|
|
11
|
+
[18, ['L', 'V']], [19, ['R', 'K', 'S', 'T']], [20, ['L', 'I', 'V', 'M']],
|
|
12
|
+
[21, ['S', 'T']], [22, ['C']], [23, ['A', 'K', 'T', 'V', 'S']],
|
|
13
|
+
[24, ['A', 'V', 'T', 'G', 'I']], [25, ['S', 'T', 'Y']],
|
|
14
|
+
[26, []], [27, []], [28, []], [29, []], [30, []], [31, []], [32, []],
|
|
15
|
+
[33, ['A', 'G', 'W', 'Y', 'D', 'L', 'S', 'T', 'V', 'F']],
|
|
16
|
+
[34, ['M', 'I', 'W', 'V', 'L']], [35, ['A', 'G', 'H', 'N', 'S', 'T', 'Y']],
|
|
17
|
+
[36, ['W']], [37, ['V', 'I', 'F']], [38, ['R', 'K']], [39, ['Q']],
|
|
18
|
+
[40, ['A', 'P', 'R', 'S', 'T', 'M', 'V']], [41, ['P', 'A', 'H']],
|
|
19
|
+
[42, ['G', 'E', 'S']], [43, ['K', 'Q', 'R', 'N']],
|
|
20
|
+
[44, ['G', 'A', 'R', 'S']], [45, ['L']], [46, ['E', 'Q']],
|
|
21
|
+
[47, ['W', 'Y', 'F', 'L']], [48, ['I', 'V', 'K', 'M']], [49, ['A', 'G', 'S']],
|
|
22
|
+
[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, []],
|
|
23
|
+
[54, ['S', 'I', 'T', 'D', 'G', 'R', 'N', 'L', 'A', 'Y', 'F', 'E']],
|
|
24
|
+
[55, ['G', 'S', 'R', 'D', 'W', 'A', 'Y', 'F', 'V', 'N', 'T', 'E', 'L', 'H']],
|
|
25
|
+
[56, ['S', 'E', 'D', 'I', 'R', 'G', 'Y', 'T', 'V', 'N', 'A', 'H', 'K']],
|
|
26
|
+
[57, ['T', 'A', 'I', 'K', 'N', 'P', 'S']],
|
|
27
|
+
[58, ['Y', 'N', 'K', 'D', 'E', 'F', 'G', 'H', 'R', 'S', 'T']], [59, ['Y', 'F']],
|
|
28
|
+
[60, ['A', 'N', 'S', 'P', 'T', 'V', 'G']], [61, ['D', 'E', 'Q', 'A', 'S', 'P']],
|
|
29
|
+
[62, ['S', 'K', 'A', 'W']], [63, ['F', 'V', 'L', 'A']], [64, ['K', 'Q', 'R', 'E']],
|
|
30
|
+
[65, ['G', 'S', 'D', 'N']], [66, ['R', 'K', 'Q']],
|
|
31
|
+
[67, ['F', 'V', 'A', 'L', 'I']], [68, ['T', 'S', 'I']],
|
|
32
|
+
[69, ['I', 'L', 'M', 'V', 'F']], [70, ['S', 'T', 'N']],
|
|
33
|
+
[71, ['R', 'V', 'A', 'K', 'L', 'P', 'T']], [72, ['D', 'N', 'E']],
|
|
34
|
+
[73, ['N', 'S', 'D', 'K', 'T']], [74, ['T', 'Q', 'S', 'I', 'M']],
|
|
35
|
+
[75, ['L', 'A', 'V', 'F']], [76, ['Y', 'S', 'F', 'H', 'T', 'V']],
|
|
36
|
+
[77, ['L', 'M']], [78, ['Q', 'E', 'K', 'D', 'T']],
|
|
37
|
+
[79, ['L', 'M', 'I', 'V', 'W']],
|
|
38
|
+
[80, ['S', 'N', 'D', 'T', 'R', 'A', 'H', 'K']], [81, ['S', 'N', 'R', 'T', 'A', 'K', 'G']],
|
|
39
|
+
[82, ['L', 'M', 'V', 'P']], [83, ['R', 'T', 'K']],
|
|
40
|
+
[84, ['A', 'S', 'T', 'V', 'P']], [85, ['E', 'A', 'D', 'G', 'S', 'V']],
|
|
41
|
+
[86, ['D']], [87, ['T', 'S']], [88, ['A', 'G']],
|
|
42
|
+
[89, ['V', 'T', 'I', 'L', 'M']], [90, ['Y']], [91, ['Y', 'F']], [92, ['C']],
|
|
43
|
+
[93, ['A', 'T', 'V']], [94, ['R', 'K', 'S', 'T', 'A', 'G']],
|
|
44
|
+
[95, []], [96, []], [97, []], [98, []], [99, []], [100, []], [101, []],
|
|
45
|
+
[102, ['Y', 'V', 'I', 'L', 'F', 'P', 'H', 'S']],
|
|
46
|
+
[103, ['W']], [104, ['G']], [105, ['Q', 'P', 'R', 'K', 'A', 'T']],
|
|
47
|
+
[106, ['G']], [107, ['T', 'V', 'A', 'I']], [108, ['L', 'T', 'M', 'S', 'Q', 'P']],
|
|
48
|
+
[109, ['V', 'L', 'I']], [110, ['T', 'I', 'V']], [111, ['V']],
|
|
49
|
+
[112, ['S', 'T']], [113, ['S', 'A']],
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
export const MARTIN_K: [number, string[]][] = [
|
|
53
|
+
[1, ['D', 'E', 'Q', 'N', 'A']], [2, ['I', 'V', 'L']], [3, ['V', 'Q', 'L', 'E', 'K']],
|
|
54
|
+
[4, ['M', 'L', 'V', 'I']], [5, ['T', 'S']], [6, ['Q']],
|
|
55
|
+
[7, ['S', 'T', 'A', 'I']], [8, ['P', 'Q', 'T', 'A', 'H']],
|
|
56
|
+
[9, ['S', 'G', 'L', 'A', 'D', 'K', 'F', 'P', 'V']], [10, ['S', 'T', 'F', 'I']],
|
|
57
|
+
[11, ['L', 'M', 'N', 'Q', 'V']], [12, ['T', 'S', 'A', 'P', 'Y']],
|
|
58
|
+
[13, ['V', 'L', 'A', 'T', 'M']], [14, ['T', 'S', 'A']],
|
|
59
|
+
[15, ['A', 'P', 'I', 'V', 'L']], [16, ['G']],
|
|
60
|
+
[17, ['E', 'Q', 'D', 'G', 'T']], [18, ['K', 'R', 'P', 'T', 'Q', 'S']],
|
|
61
|
+
[19, ['V', 'A', 'I']], [20, ['T', 'S']], [21, ['M', 'L', 'I', 'F']],
|
|
62
|
+
[22, ['S', 'T', 'N']], [23, ['C']],
|
|
63
|
+
[24, ['K', 'R', 'Q', 'S']], [25, ['S', 'A', 'T', 'C']], [26, ['S', 'T', 'G']],
|
|
64
|
+
[27, ['Q', 'G', 'E', 'S', 'K', 'H']], [28, ['S', 'N', 'D', 'E', 'R', 'T', 'G']],
|
|
65
|
+
[29, []], [30, []], [31, []], [32, []],
|
|
66
|
+
[33, ['L', 'M', 'I', 'V', 'F']],
|
|
67
|
+
[34, ['T', 'A', 'N', 'H', 'E', 'G', 'Q', 'Y', 'S', 'D']],
|
|
68
|
+
[35, ['W']], [36, ['Y', 'L', 'F']], [37, ['Q', 'L', 'R']],
|
|
69
|
+
[38, ['Q', 'H', 'E']], [39, ['K', 'R']],
|
|
70
|
+
[40, ['P', 'Q', 'S', 'T']], [41, ['G', 'E', 'D', 'H', 'N']],
|
|
71
|
+
[42, ['Q', 'K', 'S', 'T', 'G', 'E', 'R']], [43, ['P', 'A', 'S', 'T', 'V']],
|
|
72
|
+
[44, ['P', 'I', 'V']], [45, ['K', 'R', 'Q', 'E', 'I', 'T']],
|
|
73
|
+
[46, ['L', 'R', 'T', 'P', 'V', 'A']], [47, ['L', 'W']],
|
|
74
|
+
[48, ['I', 'V', 'M']], [49, ['Y', 'K', 'H', 'S', 'F']],
|
|
75
|
+
[50, ['W', 'G', 'L', 'K', 'N', 'A', 'D', 'Y', 'S', 'E', 'T', 'R', 'Q', 'F', 'V']],
|
|
76
|
+
[51, ['A', 'V', 'T', 'S', 'M', 'G', 'I']], [52, ['S', 'K', 'T', 'N']],
|
|
77
|
+
[53, ['T', 'S', 'K', 'N', 'I', 'D', 'R', 'Y', 'Q', 'F']], [54, ['R', 'L', 'S']],
|
|
78
|
+
[55, ['E', 'A', 'D', 'Q', 'F', 'R', 'Y', 'H', 'I', 'K', 'P', 'G', 'V']],
|
|
79
|
+
[56, ['S', 'T', 'D', 'P', 'A', 'E']], [57, ['G']], [58, ['V', 'I']],
|
|
80
|
+
[59, ['P', 'S', 'A']],
|
|
81
|
+
[60, ['D', 'S', 'A', 'V', 'K', 'G']], [61, ['R']], [62, ['F']],
|
|
82
|
+
[63, ['T', 'S', 'I', 'K', 'R']], [64, ['G', 'S', 'A']],
|
|
83
|
+
[65, ['S', 'G', 'R']], [66, ['G', 'R']], [67, ['S', 'Y']],
|
|
84
|
+
[68, ['G', 'R', 'A']], [69, ['T', 'R', 'S', 'Q']],
|
|
85
|
+
[70, ['D', 'E', 'Q', 'S', 'H', 'Y', 'A']], [71, ['F', 'Y']],
|
|
86
|
+
[72, ['T', 'S']], [73, ['L', 'F']], [74, ['T', 'K', 'N', 'S', 'R']],
|
|
87
|
+
[75, ['I', 'V']], [76, ['N', 'S', 'H', 'T', 'D']],
|
|
88
|
+
[77, ['S', 'R', 'P', 'N', 'G', 'D', 'T']], [78, ['V', 'L', 'M']],
|
|
89
|
+
[79, ['Q', 'E', 'K']], [80, ['A', 'P', 'E', 'S', 'T', 'Q', 'C', 'Y']],
|
|
90
|
+
[81, ['E', 'D']], [82, ['D']],
|
|
91
|
+
[83, ['L', 'F', 'V', 'T', 'A', 'I', 'S', 'M']], [84, ['A', 'G']],
|
|
92
|
+
[85, ['V', 'T', 'S', 'E', 'D', 'L', 'I', 'M']], [86, ['Y', 'F']],
|
|
93
|
+
[87, ['Y', 'F', 'H']], [88, ['C']],
|
|
94
|
+
[89, ['Q', 'W', 'F', 'L', 'H', 'M', 'G', 'A', 'K', 'S', 'V']],
|
|
95
|
+
[90, ['N', 'Q', 'H', 'G']],
|
|
96
|
+
[91, ['D', 'Y', 'G', 'F', 'I', 'S', 'W', 'R', 'T', 'A', 'N', 'H']],
|
|
97
|
+
[92, []], [93, []], [94, []], [95, []],
|
|
98
|
+
[96, ['L', 'Y', 'W', 'F', 'P', 'R', 'A', 'S', 'I', 'V', 'E', 'H', 'T']],
|
|
99
|
+
[97, ['T', 'V', 'I', 'A', 'S', 'F', 'L']], [98, ['F']],
|
|
100
|
+
[99, ['G']], [100, ['A', 'Q', 'S', 'G', 'P']], [101, ['G']],
|
|
101
|
+
[102, ['T']], [103, ['K', 'R', 'E']], [104, ['L', 'V']],
|
|
102
|
+
[105, ['E', 'V', 'D']], [106, ['L', 'I', 'V']], [107, ['K', 'R']],
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
export const MARTIN_L: [number, string[]][] = [
|
|
106
|
+
[1, ['Q', 'S']], [2, ['S', 'Y', 'P', 'A', 'L', 'F']], [3, ['A', 'V', 'E']],
|
|
107
|
+
[4, ['L', 'V']], [5, ['T']], [6, ['Q']], [7, ['P', 'E', 'S']],
|
|
108
|
+
[8, ['A', 'P', 'S', 'R']], [9, ['S', 'A']], [10, []],
|
|
109
|
+
[11, ['V', 'L', 'A']], [12, ['S', 'T']],
|
|
110
|
+
[13, ['G', 'V', 'A', 'T', 'K', 'E', 'F']], [14, ['S', 'A', 'T']],
|
|
111
|
+
[15, ['P', 'L']], [16, ['G']], [17, ['Q', 'E', 'K', 'A']],
|
|
112
|
+
[18, ['S', 'T', 'K', 'R']], [19, ['I', 'A', 'V']],
|
|
113
|
+
[20, ['T', 'R', 'S', 'K']], [21, ['I', 'L']], [22, ['S', 'T']], [23, ['C']],
|
|
114
|
+
[24, ['T', 'G', 'Q', 'S', 'A', 'N', 'R']], [25, ['G', 'S', 'L', 'R']],
|
|
115
|
+
[26, ['T', 'N', 'D', 'S']],
|
|
116
|
+
[27, ['Q', 'T', 'N', 'S', 'K', 'A', 'R']], [28, ['S', 'I', 'L', 'N', 'G', 'Q']],
|
|
117
|
+
[29, ['S', 'D', 'G', 'N', 'A', 'R', 'H']],
|
|
118
|
+
[30, []], [31, ['N', 'K', 'D', 'R', 'Y']],
|
|
119
|
+
[32, ['F', 'S', 'L', 'A', 'Y', 'T', 'D', 'G', 'N']],
|
|
120
|
+
[33, ['V', 'A', 'I']], [34, ['S', 'H', 'Q', 'C', 'N', 'Y', 'E']],
|
|
121
|
+
[35, ['W']], [36, ['Y', 'F', 'V']], [37, ['Q']],
|
|
122
|
+
[38, ['Q', 'H', 'E']], [39, ['H', 'K', 'R', 'L', 'F', 'V', 'Q']],
|
|
123
|
+
[40, ['P', 'A', 'S']], [41, ['G', 'D', 'L']],
|
|
124
|
+
[42, ['K', 'Q', 'T', 'R', 'H', 'S', 'A', 'M']], [43, ['A', 'S', 'L', 'P', 'G']],
|
|
125
|
+
[44, ['P', 'F']], [45, ['K', 'V', 'S', 'R', 'T', 'I']],
|
|
126
|
+
[46, ['L', 'V', 'G', 'Y', 'T']], [47, ['I', 'V', 'M', 'L']],
|
|
127
|
+
[48, ['I', 'V', 'L', 'M']], [49, ['F', 'Y', 'G', 'S', 'E']],
|
|
128
|
+
[50, ['D', 'A', 'N', 'E', 'Q', 'Y', 'G', 'V', 'R', 'L', 'K']],
|
|
129
|
+
[51, ['V', 'D', 'N', 'T', 'K']], [52, ['T', 'S', 'Q', 'N', 'D', 'K']],
|
|
130
|
+
[53, ['N', 'D', 'K', 'Q', 'E', 'S', 'H']], [54, ['R', 'T']],
|
|
131
|
+
[55, ['P', 'A', 'G']], [56, ['S', 'P', 'D']], [57, ['G']],
|
|
132
|
+
[58, ['I', 'V']], [59, ['S', 'P']],
|
|
133
|
+
[60, ['N', 'E', 'A', 'D']], [61, ['R']], [62, ['F']], [63, ['S']],
|
|
134
|
+
[64, ['G']], [65, ['S']], [66, ['K', 'N', 'P', 'L', 'I', 'S']],
|
|
135
|
+
[67, ['S', 'D', 'I']], [68, ['G', 'A']],
|
|
136
|
+
[69, ['N', 'T', 'D', 'S', 'A']], [70, ['T', 'K', 'S', 'R']],
|
|
137
|
+
[71, ['A', 'R']], [72, ['S', 'T', 'A', 'Y']], [73, ['L']],
|
|
138
|
+
[74, ['T', 'G', 'A', 'S']], [75, ['I', 'V']], [76, ['S', 'T']],
|
|
139
|
+
[77, ['G', 'R', 'S', 'N']], [78, ['L', 'V', 'T', 'A', 'I']],
|
|
140
|
+
[79, ['Q', 'E', 'R']], [80, ['A', 'S', 'P', 'T']],
|
|
141
|
+
[81, ['E', 'G', 'M', 'D']], [82, ['D']], [83, ['E']],
|
|
142
|
+
[84, ['A', 'G']], [85, ['D', 'I', 'E']], [86, ['Y']],
|
|
143
|
+
[87, ['Y', 'F', 'I']], [88, ['C']],
|
|
144
|
+
[89, ['A', 'Q', 'C', 'H', 'G', 'S']], [90, ['A', 'V', 'L', 'S', 'T', 'M']],
|
|
145
|
+
[91, ['Y', 'W', 'L', 'R', 'G']],
|
|
146
|
+
[92, []], [93, []], [94, []], [95, []],
|
|
147
|
+
[96, ['L', 'V', 'W', 'R', 'P', 'Y', 'S', 'F', 'A']],
|
|
148
|
+
[97, ['L', 'T', 'V', 'I', 'A', 'F', 'S']], [98, ['F']],
|
|
149
|
+
[99, ['G']], [100, ['G', 'T', 'S']], [101, ['G']],
|
|
150
|
+
[102, ['T']], [103, ['K', 'T', 'R', 'Q']], [104, ['V', 'L']],
|
|
151
|
+
[105, ['T']], [106, ['V']], [107, ['L', 'K']],
|
|
152
|
+
];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Central consensus profile registry.
|
|
3
|
+
* Maps (scheme, chainType) -> profile data.
|
|
4
|
+
*/
|
|
5
|
+
import type { Scheme, ChainType } from '../types';
|
|
6
|
+
import { IMGT_H, IMGT_K, IMGT_L, CTERM_H, CTERM_K, CTERM_L } from './consensus-imgt';
|
|
7
|
+
import { KABAT_H, KABAT_K, KABAT_L } from './consensus-kabat';
|
|
8
|
+
import { MARTIN_H, MARTIN_K, MARTIN_L } from './consensus-martin';
|
|
9
|
+
import { AHO_H, AHO_K, AHO_L } from './consensus-aho';
|
|
10
|
+
|
|
11
|
+
export type ProfileData = [number, string[]][];
|
|
12
|
+
|
|
13
|
+
/** Get the consensus profile for a given scheme and chain type */
|
|
14
|
+
export function getConsensusProfile(scheme: Scheme, chain: ChainType): ProfileData {
|
|
15
|
+
const key = `${scheme}_${chain}`;
|
|
16
|
+
const profiles: Record<string, ProfileData> = {
|
|
17
|
+
imgt_H: IMGT_H, imgt_K: IMGT_K, imgt_L: IMGT_L,
|
|
18
|
+
kabat_H: KABAT_H, kabat_K: KABAT_K, kabat_L: KABAT_L,
|
|
19
|
+
chothia_H: MARTIN_H, chothia_K: MARTIN_K, chothia_L: MARTIN_L,
|
|
20
|
+
aho_H: AHO_H, aho_K: AHO_K, aho_L: AHO_L,
|
|
21
|
+
};
|
|
22
|
+
return profiles[key] ?? IMGT_H;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Get the C-terminal finder profile for a chain type */
|
|
26
|
+
export function getCtermProfile(chain: ChainType): ProfileData {
|
|
27
|
+
const profiles: Record<ChainType, ProfileData> = {
|
|
28
|
+
H: CTERM_H, K: CTERM_K, L: CTERM_L,
|
|
29
|
+
};
|
|
30
|
+
return profiles[chain];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { IMGT_H, IMGT_K, IMGT_L, CTERM_H, CTERM_K, CTERM_L };
|
|
34
|
+
export { KABAT_H, KABAT_K, KABAT_L };
|
|
35
|
+
export { MARTIN_H, MARTIN_K, MARTIN_L };
|
|
36
|
+
export { AHO_H, AHO_K, AHO_L };
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Region definitions per scheme, keyed by chain group.
|
|
3
|
+
* Each region: [name, startPosition, endPosition].
|
|
4
|
+
* Mirrors the Python number_antibody.py definitions.
|
|
5
|
+
*/
|
|
6
|
+
import type { Scheme, ChainGroup } from '../types';
|
|
7
|
+
|
|
8
|
+
export type RegionDef = [name: string, start: number, end: number];
|
|
9
|
+
|
|
10
|
+
const IMGT_REGIONS: Record<ChainGroup, RegionDef[]> = {
|
|
11
|
+
Heavy: [
|
|
12
|
+
['FR1', 1, 26], ['CDR1', 27, 38], ['FR2', 39, 55],
|
|
13
|
+
['CDR2', 56, 65], ['FR3', 66, 104], ['CDR3', 105, 117], ['FR4', 118, 128],
|
|
14
|
+
],
|
|
15
|
+
Light: [
|
|
16
|
+
['FR1', 1, 26], ['CDR1', 27, 38], ['FR2', 39, 55],
|
|
17
|
+
['CDR2', 56, 65], ['FR3', 66, 104], ['CDR3', 105, 117], ['FR4', 118, 127],
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const KABAT_REGIONS: Record<ChainGroup, RegionDef[]> = {
|
|
22
|
+
Heavy: [
|
|
23
|
+
['FR1', 1, 30], ['CDR1', 31, 35], ['FR2', 36, 49],
|
|
24
|
+
['CDR2', 50, 65], ['FR3', 66, 94], ['CDR3', 95, 102], ['FR4', 103, 113],
|
|
25
|
+
],
|
|
26
|
+
Light: [
|
|
27
|
+
['FR1', 1, 23], ['CDR1', 24, 34], ['FR2', 35, 49],
|
|
28
|
+
['CDR2', 50, 56], ['FR3', 57, 88], ['CDR3', 89, 97], ['FR4', 98, 107],
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const CHOTHIA_REGIONS: Record<ChainGroup, RegionDef[]> = {
|
|
33
|
+
Heavy: [
|
|
34
|
+
['FR1', 1, 25], ['CDR1', 26, 32], ['FR2', 33, 51],
|
|
35
|
+
['CDR2', 52, 56], ['FR3', 57, 94], ['CDR3', 95, 102], ['FR4', 103, 113],
|
|
36
|
+
],
|
|
37
|
+
Light: [
|
|
38
|
+
['FR1', 1, 25], ['CDR1', 26, 32], ['FR2', 33, 49],
|
|
39
|
+
['CDR2', 50, 52], ['FR3', 53, 90], ['CDR3', 91, 96], ['FR4', 97, 107],
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const AHO_REGIONS: Record<ChainGroup, RegionDef[]> = {
|
|
44
|
+
Heavy: [
|
|
45
|
+
['FR1', 1, 24], ['CDR1', 25, 40], ['FR2', 41, 55],
|
|
46
|
+
['CDR2', 56, 78], ['FR3', 79, 108], ['CDR3', 109, 138], ['FR4', 139, 149],
|
|
47
|
+
],
|
|
48
|
+
Light: [
|
|
49
|
+
['FR1', 1, 24], ['CDR1', 25, 40], ['FR2', 41, 55],
|
|
50
|
+
['CDR2', 56, 78], ['FR3', 79, 108], ['CDR3', 109, 138], ['FR4', 139, 149],
|
|
51
|
+
],
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const SCHEME_REGIONS: Record<Scheme, Record<ChainGroup, RegionDef[]>> = {
|
|
55
|
+
imgt: IMGT_REGIONS,
|
|
56
|
+
kabat: KABAT_REGIONS,
|
|
57
|
+
chothia: CHOTHIA_REGIONS,
|
|
58
|
+
aho: AHO_REGIONS,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export function getRegions(scheme: Scheme, chainGroup: ChainGroup): RegionDef[] {
|
|
62
|
+
return SCHEME_REGIONS[scheme]?.[chainGroup] ?? IMGT_REGIONS.Heavy;
|
|
63
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* antibody-numbering - Browser-compatible antibody sequence numbering library.
|
|
3
|
+
*
|
|
4
|
+
* Assigns antibody numbering (IMGT/Kabat/Chothia/AHo) to amino acid sequences
|
|
5
|
+
* using profile-based alignment against consensus sequences.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { numberSequence } from 'antibody-numbering';
|
|
10
|
+
*
|
|
11
|
+
* const result = numberSequence(
|
|
12
|
+
* 'QVQLVQSGAEVKKPGASVKVSCKASGYTFTGYYMHWVRQAPGQGLEWMGWINPNSGGTNYAQKFQGRVTMTRDTSISTAYMELSRLRSDDTAVYYCAR',
|
|
13
|
+
* 'imgt'
|
|
14
|
+
* );
|
|
15
|
+
*
|
|
16
|
+
* console.log(result.chainType); // 'Heavy'
|
|
17
|
+
* console.log(result.numberingDetail); // [{ position: '1', aa: 'Q' }, ...]
|
|
18
|
+
* console.log(result.annotations); // [{ name: 'FR1', ... }, ...]
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
export { numberSequence, numberSequences, extractSequence } from './annotator';
|
|
23
|
+
export type {
|
|
24
|
+
Scheme,
|
|
25
|
+
ChainType,
|
|
26
|
+
ChainGroup,
|
|
27
|
+
NumberingResult,
|
|
28
|
+
NumberingEntry,
|
|
29
|
+
RegionAnnotation,
|
|
30
|
+
AlignmentResult,
|
|
31
|
+
} from './types';
|