Skip to content

Commit 6948b7a

Browse files
committed
Support multi-letter insertion codes
1 parent 6f0f685 commit 6948b7a

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

abnumber/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.4.2'
1+
__version__ = '0.4.3'

abnumber/chain.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -212,18 +212,23 @@ def batch(cls, seq_dict: dict, scheme: str, cdr_definition=None, assign_germline
212212
warnings.warn('Use multiple_domains=True to allow parsing ScFvs and other sequences with multiple antibody domains')
213213
errors[name] = f'Found {len(results)} antibody domains: "{sequence}"'
214214
else:
215-
found_chains = [Chain(
216-
sequence=None,
217-
aa_dict=aa_dict,
218-
name=name,
219-
scheme=scheme,
220-
chain_type=chain_type,
221-
cdr_definition=cdr_definition,
222-
tail=tail,
223-
species=species,
224-
v_gene=v_gene,
225-
j_gene=j_gene
226-
) for aa_dict, chain_type, tail, species, v_gene, j_gene in results]
215+
found_chains = []
216+
for aa_dict, chain_type, tail, species, v_gene, j_gene in results:
217+
try:
218+
found_chains.append(Chain(
219+
sequence=None,
220+
aa_dict=aa_dict,
221+
name=name,
222+
scheme=scheme,
223+
chain_type=chain_type,
224+
cdr_definition=cdr_definition,
225+
tail=tail,
226+
species=species,
227+
v_gene=v_gene,
228+
j_gene=j_gene
229+
))
230+
except Exception as e:
231+
errors[name] = f'Unexpected error creating Chain: {e}'
227232
chains[name] = found_chains if multiple_domains else found_chains[0]
228233
return chains, errors
229234

abnumber/position.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,12 @@ def chain_type_prefix(self):
8888
raise NotImplementedError(f'Unknown chain type "{self.chain_type}"')
8989

9090
def _sort_key(self):
91-
letter_ord = ord(self.letter) if self.letter else 0
91+
letter_ord = 0
92+
remaining_letters = self.letter
93+
while remaining_letters:
94+
letter_ord *= 256
95+
letter_ord += ord(remaining_letters[0])
96+
remaining_letters = remaining_letters[1:]
9297
if self.scheme == 'imgt':
9398
if self.number in [33, 61, 112]:
9499
# position 112 is sorted in reverse

0 commit comments

Comments
 (0)