From 5342484b77a9c851743ad2941c2808a2dd404633 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 27 Jun 2025 16:46:20 -0400 Subject: [PATCH 1/6] uncomment existing code --- bin/MakeDb.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/bin/MakeDb.py b/bin/MakeDb.py index 22fecbb..910ddd0 100755 --- a/bin/MakeDb.py +++ b/bin/MakeDb.py @@ -1056,23 +1056,23 @@ def getArgParser(): parser_ihmm.set_defaults(func=parseIHMM, validate='strict') # Subparser to normalize AIRR file with IMGT-numbering - # desc_number = dedent(''' - # Inserts IMGT numbering spacers into sequence_alignment, rebuilds the germline sequence - # in germline_alignment, and adjusts the values in the coordinate fields v_germline_start - # and v_germline_end accordingly. - # ''') - # parser_number = subparsers.add_parser('number', parents=[parser_parent], - # formatter_class=CommonHelpFormatter, add_help=False, - # help='Add IMGT-numbering to an AIRR Rearrangement TSV.', - # description=desc_number) - # group_number = parser_number.add_argument_group('aligner parsing arguments') - # group_number.add_argument('-i', nargs='+', action='store', dest='aligner_files', required=True, - # help='''AIRR Rearrangement TSV files.''') - # group_number.add_argument('-r', nargs='+', action='store', dest='repo', required=False, - # help='''List of folders and/or fasta files containing - # IMGT-numbered germline sequences corresponding to the - # set of germlines used for the alignment.''') - # parser_number.set_defaults(func=numberAIRR) + desc_number = dedent(''' + Inserts IMGT numbering spacers into sequence_alignment, rebuilds the germline sequence + in germline_alignment, and adjusts the values in the coordinate fields v_germline_start + and v_germline_end accordingly. + ''') + parser_number = subparsers.add_parser('number', parents=[parser_parent], + formatter_class=CommonHelpFormatter, add_help=False, + help='Add IMGT-numbering to an AIRR Rearrangement TSV.', + description=desc_number) + group_number = parser_number.add_argument_group('aligner parsing arguments') + group_number.add_argument('-i', nargs='+', action='store', dest='aligner_files', required=True, + help='''AIRR Rearrangement TSV files.''') + group_number.add_argument('-r', nargs='+', action='store', dest='repo', required=False, + help='''List of folders and/or fasta files containing + IMGT-numbered germline sequences corresponding to the + set of germlines used for the alignment.''') + parser_number.set_defaults(func=numberAIRR) return parser From 00f4a8a206a65b243eb07054fd05e6b9d3203f71 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 27 Jun 2025 16:46:29 -0400 Subject: [PATCH 2/6] add translations to igblast --- changeo/Applications.py | 1 + 1 file changed, 1 insertion(+) diff --git a/changeo/Applications.py b/changeo/Applications.py index 93b20ad..373d497 100644 --- a/changeo/Applications.py +++ b/changeo/Applications.py @@ -181,6 +181,7 @@ def runIgBLASTN(fasta, igdata, loci='ig', organism='human', vdb=None, ddb=None, '-germline_db_D', str(d_germ), '-germline_db_J', str(j_germ), '-outfmt', outfmt, + '-show_translation', '-domain_system', 'imgt'] # Add C-region arguments for igblastn v1.18.0 From 624d3db941892ccf07f568d534364b5c9c714758 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 27 Jun 2025 16:47:58 -0400 Subject: [PATCH 3/6] add numberAIRR log error --- bin/MakeDb.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/MakeDb.py b/bin/MakeDb.py index 910ddd0..a012954 100755 --- a/bin/MakeDb.py +++ b/bin/MakeDb.py @@ -783,6 +783,8 @@ def numberAIRR(aligner_file, repo=None, format=default_format, ('D_CALL', rec.d_call), ('J_CALL', rec.j_call), ('PRODUCTIVE', rec.functional)]) + if not imgt_dict: + log['ERROR'] = 'Could not add IMGT-numbering to sequence.' printLog(log, log_handle) # Print counts From d5c1a06b0301c00bb702cb0e457a24f066063b91 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Thu, 23 Oct 2025 22:57:09 -0400 Subject: [PATCH 4/6] work on makdb number --- bin/MakeDb.py | 29 ++++++++----- changeo/Alignment.py | 99 ++++++++++++++++++++++++++++++++++---------- changeo/IO.py | 6 +-- 3 files changed, 100 insertions(+), 34 deletions(-) diff --git a/bin/MakeDb.py b/bin/MakeDb.py index a012954..b268fca 100755 --- a/bin/MakeDb.py +++ b/bin/MakeDb.py @@ -144,7 +144,8 @@ def correctIMGTFields(receptor, references): imgt_dict = {'sequence_imgt': None, 'v_germ_start_imgt': None, 'v_germ_length_imgt': None, - 'germline_imgt': None} + 'germline_imgt': None, + 'alignment': None} # Check for necessary fields try: @@ -158,13 +159,14 @@ def correctIMGTFields(receptor, references): # Gap V region try: - gapped = gapV(receptor.sequence_imgt, + indels,gapped = gapV(receptor.sequence_imgt, receptor.v_germ_start_imgt, receptor.v_germ_length_imgt, receptor.v_call, references) except KeyError as e: - printWarning(e) + raise KeyError(e) + #printWarning(e) return None # Verify IMGT-gapped sequence and junction concur @@ -177,18 +179,18 @@ def correctIMGTFields(receptor, references): # Rebuild germline sequence receptor.setDict(gapped, parse=False) - __, germlines, __ = buildGermline(receptor, references) - # log, germlines, genes = buildGermline(receptor, references) - # print(log) + #__, germlines, __ = buildGermline(receptor, references) + log, germlines, __ = buildGermline(receptor, references) + #print(log) if germlines is not None: gapped['germline_imgt'] = germlines['full'] else: - return None + return None, log, None # Update return object imgt_dict.update(gapped) - return imgt_dict + return imgt_dict, None, indels def getSeqDict(seq_file): @@ -765,7 +767,7 @@ def numberAIRR(aligner_file, repo=None, format=default_format, printProgress(rec_count, result_count, 0.05, start_time=start_time) rec_count += 1 # Update IMGT fields - imgt_dict = correctIMGTFields(rec, reference_dict) + imgt_dict, error_log, indels = correctIMGTFields(rec, reference_dict) # Write records if imgt_dict is not None: pass_count += 1 @@ -783,8 +785,15 @@ def numberAIRR(aligner_file, repo=None, format=default_format, ('D_CALL', rec.d_call), ('J_CALL', rec.j_call), ('PRODUCTIVE', rec.functional)]) + if indels: + log['INDELS'] = 'Found %s indels in sequence that were removed from the alignment:' % len(indels) + ';'.join(['%s:%s:%s' % (p,b,t) for p,b,t in indels]) + log['ALIGNMENT'] = imgt_dict['alignment'] if not imgt_dict: - log['ERROR'] = 'Could not add IMGT-numbering to sequence.' + log['ERROR'] = error_log['ERROR'] + log['SEQUENCE'] = error_log['SEQUENCE'] + log['GERMLINE'] = error_log['GERMLINE'] + log['REGIONS'] = error_log['REGIONS'] + printLog(log, log_handle) # Print counts diff --git a/changeo/Alignment.py b/changeo/Alignment.py index 0f25051..fcbe500 100644 --- a/changeo/Alignment.py +++ b/changeo/Alignment.py @@ -8,9 +8,11 @@ # Imports import re from Bio.Seq import Seq +from Bio import Align # Presto and changeo imports from changeo.Gene import getVAllele, getJAllele +from presto.Sequence import getDNAScoreDict # Load regions # import yaml @@ -277,6 +279,9 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False) # Initialize imgt gapped sequence seq_imgt = '.' * (int(v_germ_start) - 1) + seq + # Initialize indels list + indels = [] + # Extract first V call if not asis_calls: vgene = getVAllele(v_call, action='first') @@ -287,30 +292,82 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False) try: #if vgene in references: vgap = references[vgene] - # Iterate over gaps in the germline segment - gaps = re.finditer(r'\.', vgap) - gapcount = int(v_germ_start) - 1 - for gap in gaps: - i = gap.start() - # Break if gap begins after V region - if i >= v_germ_length + gapcount: - break - # Insert gap into IMGT sequence - seq_imgt = seq_imgt[:i] + '.' + seq_imgt[i:] - # Update gap counter - gapcount += 1 - - imgt_dict['sequence_imgt'] = seq_imgt - # Update IMGT positioning information for V - imgt_dict['v_germ_start_imgt'] = 1 - imgt_dict['v_germ_length_imgt'] = v_germ_length + gapcount except KeyError as e: raise KeyError('%s was not found in the germline repository.' % vgene) - #else: - # printWarning('%s was not found in the germline repository. IMGT-gapped sequence cannot be determined.' % vgene) - - return imgt_dict + # Check for indels first + ungapped_reference = vgap.replace('.', '') + + #print('Inconsistent lengths between V germline and input sequence for %s.' % vgene) + #print(ungapped_reference) + #print(len(ungapped_reference), v_germ_length) + #print(seq_imgt) + #print(len(seq_imgt), v_germ_length) + + # Identify indels + score_dict=getDNAScoreDict(mask_score=(1, 1), gap_score=(1, 1)) + sub_matrix = Align.substitution_matrices.Array(data=score_dict) + gap_penalty = (2, 1) + pairwise_aligner = Align.PairwiseAligner(mode='local', + substitution_matrix=sub_matrix, + open_gap_score = -gap_penalty[0], + extend_gap_score = -gap_penalty[1]) + # Alignment of query to target (target, query) + pairwise_alignment = pairwise_aligner.align(ungapped_reference, seq_imgt[:v_germ_start+v_germ_length]) + + if pairwise_alignment and (pairwise_alignment[0][0].count('-') > 0 or pairwise_alignment[0][1].count('-') > 0): + #print(pairwise_alignment[0]) + #print(seq_imgt) + # Identify position of insertions: + indels = [] + # Identify position at which target has "-" + ref_pos = 0 + query_pos = 0 + for ref_base, query_base in zip(pairwise_alignment[0][0], pairwise_alignment[0][1]): + if ref_base != '-': + ref_pos += 1 + if query_base != '-': + query_pos += 1 + if ref_base == '-' and query_base != '-': + indels.append((ref_pos, query_base, "I")) + if ref_base != '-' and query_base == '-': + indels.append((ref_pos, ref_base, "D")) + #print(indels) + # Remove insertions in seq_imgt + offset = 0 + for indel_pos, indel_base, indel_type in indels: + if indel_type == "I": + seq_imgt = seq_imgt[:indel_pos + offset] + seq_imgt[indel_pos + offset + 1:] + offset -= 1 + if indel_type == "D": + pass + # We do not need to fill in deletions as these are already in the sequence + #print(seq_imgt) + else: + offset = 0 + + # Iterate over gaps in the germline segment + gaps = re.finditer(r'\.', vgap) + gapcount = int(v_germ_start) - 1 + for gap in gaps: + i = gap.start() + # Break if gap begins after V region + if i >= v_germ_length + gapcount: + break + # Insert gap into IMGT sequence + seq_imgt = seq_imgt[:i] + '.' + seq_imgt[i:] + # Update gap counter + gapcount += 1 + + # Assign IMGT gapped sequence + imgt_dict['sequence_imgt'] = seq_imgt + # Update IMGT positioning information for V + imgt_dict['v_germ_start_imgt'] = 1 + imgt_dict['v_germ_length_imgt'] = v_germ_length + gapcount + imgt_dict["alignment"] = pairwise_alignment[0] + + # Return indels if present + return (indels if indels else None), imgt_dict def inferJunction(seq, j_germ_start, j_germ_length, j_call, references, asis_calls=False, regions='default'): """ diff --git a/changeo/IO.py b/changeo/IO.py index 804938d..d5f31f7 100644 --- a/changeo/IO.py +++ b/changeo/IO.py @@ -1462,7 +1462,7 @@ def parseSections(self, sections): # Create IMGT-gapped sequence if ('v_call' in db and db['v_call']) and ('sequence_trim' in db and db['sequence_trim']): try: - imgt_dict = gapV(db['sequence_trim'], + _, imgt_dict = gapV(db['sequence_trim'], v_germ_start=db['v_germ_start_vdj'], v_germ_length=db['v_germ_length_vdj'], v_call=db['v_call'], @@ -1652,7 +1652,7 @@ def parseSections(self, sections): # Create IMGT-gapped sequence if ('v_call' in db and db['v_call']) and ('sequence_aa_trim' in db and db['sequence_aa_trim']): try: - gap = gapV(db['sequence_aa_trim'], + _, gap = gapV(db['sequence_aa_trim'], v_germ_start=db['v_germ_aa_start_vdj'], v_germ_length=db['v_germ_aa_length_vdj'], v_call=db['v_call'], @@ -2108,7 +2108,7 @@ def parseRecord(self, record): # Create IMGT-gapped sequence if 'v_call' in db and db['v_call'] and 'sequence_vdj' in db and db['sequence_vdj']: try: - imgt_dict = gapV(db['sequence_vdj'], + _, imgt_dict = gapV(db['sequence_vdj'], v_germ_start=db['v_germ_start_vdj'], v_germ_length=db['v_germ_length_vdj'], v_call=db['v_call'], From 20a50ae89d8b6535224f3149f2129f8fc1fb9e50 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Fri, 14 Nov 2025 12:20:27 -0500 Subject: [PATCH 5/6] work on makedb number --- bin/MakeDb.py | 31 ++++--- changeo/Alignment.py | 119 ++++++++++++++------------ changeo/Gene.py | 9 ++ changeo/Receptor.py | 3 +- tests/data/makedb_number_test.tsv | 7 ++ tests/data/makedb_number_test_out.tsv | 7 ++ tests/test_MakeDb.py | 60 +++++++++++++ 7 files changed, 166 insertions(+), 70 deletions(-) create mode 100644 tests/data/makedb_number_test.tsv create mode 100644 tests/data/makedb_number_test_out.tsv create mode 100644 tests/test_MakeDb.py diff --git a/bin/MakeDb.py b/bin/MakeDb.py index b268fca..6efc3b9 100755 --- a/bin/MakeDb.py +++ b/bin/MakeDb.py @@ -144,15 +144,16 @@ def correctIMGTFields(receptor, references): imgt_dict = {'sequence_imgt': None, 'v_germ_start_imgt': None, 'v_germ_length_imgt': None, - 'germline_imgt': None, - 'alignment': None} + 'v_call': None, + 'germline_imgt': None} # Check for necessary fields try: if not all([receptor.sequence_imgt, receptor.v_germ_start_imgt, receptor.v_germ_length_imgt, - receptor.v_call]): + receptor.v_call, + receptor.germline_imgt]): raise AttributeError except AttributeError: return None @@ -163,7 +164,9 @@ def correctIMGTFields(receptor, references): receptor.v_germ_start_imgt, receptor.v_germ_length_imgt, receptor.v_call, - references) + references, + remove_indels=True, + germline_alignment = receptor.germline_imgt) except KeyError as e: raise KeyError(e) #printWarning(e) @@ -181,7 +184,6 @@ def correctIMGTFields(receptor, references): receptor.setDict(gapped, parse=False) #__, germlines, __ = buildGermline(receptor, references) log, germlines, __ = buildGermline(receptor, references) - #print(log) if germlines is not None: gapped['germline_imgt'] = germlines['full'] else: @@ -190,7 +192,7 @@ def correctIMGTFields(receptor, references): # Update return object imgt_dict.update(gapped) - return imgt_dict, None, indels + return imgt_dict, log, indels def getSeqDict(seq_file): @@ -692,17 +694,19 @@ def parseIHMM(aligner_file, seq_file, repo, cellranger_file=None, validate='stri -def numberAIRR(aligner_file, repo=None, format=default_format, - out_file=None, out_args=default_out_args): +def numberAIRR(aligner_file, germline_reference=None, format=default_format, + out_file=None, out_args=default_out_args, + debug_mode=False): """ Inserts IMGT numbering into V fields Arguments: aligner_file (str): AIRR Rearrangement file from the alignment tool. - repo (str): folder with germline repertoire files. If None, do not updated alignment columns with IMGT gaps. + germline_reference (str): folder with germline repertoire files. If None, do not updated alignment columns with IMGT gaps. format (str): output format. out_file (str): output file name. Automatically generated from the input file if None. out_args (dict): common output argument dictionary from parseCommonArgs. + debug_mode (bool): if True, output debug information to log file. Returns: str: output file name. @@ -737,7 +741,7 @@ def numberAIRR(aligner_file, repo=None, format=default_format, printError(e) # Load references - reference_dict = readGermlines(repo) + reference_dict = readGermlines(germline_reference) # Check for IMGT-gaps in germlines if all('...' not in x for x in reference_dict.values()): @@ -768,6 +772,7 @@ def numberAIRR(aligner_file, repo=None, format=default_format, rec_count += 1 # Update IMGT fields imgt_dict, error_log, indels = correctIMGTFields(rec, reference_dict) + # Write records if imgt_dict is not None: pass_count += 1 @@ -786,10 +791,10 @@ def numberAIRR(aligner_file, repo=None, format=default_format, ('J_CALL', rec.j_call), ('PRODUCTIVE', rec.functional)]) if indels: - log['INDELS'] = 'Found %s indels in sequence that were removed from the alignment:' % len(indels) + ';'.join(['%s:%s:%s' % (p,b,t) for p,b,t in indels]) - log['ALIGNMENT'] = imgt_dict['alignment'] + log['INDELS'] = 'Found %s indels (I: insertion, D:deletion) that were removed from the sequence alignment to be consistent with IMGT positions:' % len(indels) + ','.join(['(%s:%s:%s)' % (p,b,t) for p,b,t in indels]) if not imgt_dict: log['ERROR'] = error_log['ERROR'] + if (not imgt_dict) or debug_mode: log['SEQUENCE'] = error_log['SEQUENCE'] log['GERMLINE'] = error_log['GERMLINE'] log['REGIONS'] = error_log['REGIONS'] @@ -797,7 +802,7 @@ def numberAIRR(aligner_file, repo=None, format=default_format, printLog(log, log_handle) # Print counts - printProgress(rec_count, result_count, 0.05, start_time=start_time) + #printProgress(rec_count, result_count, 0.05, start_time=start_time) log = OrderedDict() log['OUTPUT'] = os.path.basename(pass_handle.name) log['RECORDS'] = rec_count diff --git a/changeo/Alignment.py b/changeo/Alignment.py index fcbe500..a6897db 100644 --- a/changeo/Alignment.py +++ b/changeo/Alignment.py @@ -252,8 +252,50 @@ def alignmentPositions(alignment): return result +def find_indels(sequence_alignment, germline_alignment): + """ + Identify indels between a sequence alignment and a germline alignment. + + Arguments: + sequence_alignment (str): Aligned sequence. + germline_alignment (str): Aligned germline sequence. + Returns: + list: List of indels as tuples (position, base, type). + """ + indels = [] + ref_pos = 0 + query_pos = 0 + for ref_base, query_base in zip(germline_alignment, sequence_alignment): + if ref_base != '-': + ref_pos += 1 + if query_base != '-': + query_pos += 1 + if ref_base == '-' and query_base != '-': + indels.append((ref_pos, query_base, "I")) + if ref_base != '-' and query_base == '-': + indels.append((ref_pos, ref_base, "D")) + return indels + +def remove_insertions(sequence_alignment, indels): + """ + Remove insertions from a sequence alignment based on identified indels. -def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False): + Arguments: + sequence_alignment (str): Aligned sequence. + indels (list): List of indels as tuples (position, base, type). + + Returns: + str: Sequence alignment with insertions removed. + """ + seq_imgt = sequence_alignment + offset = 0 + for indel_pos, indel_base, indel_type in indels: + if indel_type == "I": + seq_imgt = seq_imgt[:indel_pos + offset] + seq_imgt[indel_pos + offset + 1:] + offset -= 1 + return seq_imgt + +def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False, remove_indels=False, germline_alignment=None): """ Construction IMGT-gapped V segment sequences. @@ -277,10 +319,8 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False) 'v_germ_length_imgt': None} # Initialize imgt gapped sequence - seq_imgt = '.' * (int(v_germ_start) - 1) + seq - - # Initialize indels list - indels = [] + seq_imgt = seq + #print("\n" + seq_imgt) # Extract first V call if not asis_calls: @@ -295,58 +335,24 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False) except KeyError as e: raise KeyError('%s was not found in the germline repository.' % vgene) - # Check for indels first - ungapped_reference = vgap.replace('.', '') - - #print('Inconsistent lengths between V germline and input sequence for %s.' % vgene) - #print(ungapped_reference) - #print(len(ungapped_reference), v_germ_length) - #print(seq_imgt) - #print(len(seq_imgt), v_germ_length) - - # Identify indels - score_dict=getDNAScoreDict(mask_score=(1, 1), gap_score=(1, 1)) - sub_matrix = Align.substitution_matrices.Array(data=score_dict) - gap_penalty = (2, 1) - pairwise_aligner = Align.PairwiseAligner(mode='local', - substitution_matrix=sub_matrix, - open_gap_score = -gap_penalty[0], - extend_gap_score = -gap_penalty[1]) - # Alignment of query to target (target, query) - pairwise_alignment = pairwise_aligner.align(ungapped_reference, seq_imgt[:v_germ_start+v_germ_length]) - - if pairwise_alignment and (pairwise_alignment[0][0].count('-') > 0 or pairwise_alignment[0][1].count('-') > 0): - #print(pairwise_alignment[0]) - #print(seq_imgt) - # Identify position of insertions: - indels = [] - # Identify position at which target has "-" - ref_pos = 0 - query_pos = 0 - for ref_base, query_base in zip(pairwise_alignment[0][0], pairwise_alignment[0][1]): - if ref_base != '-': - ref_pos += 1 - if query_base != '-': - query_pos += 1 - if ref_base == '-' and query_base != '-': - indels.append((ref_pos, query_base, "I")) - if ref_base != '-' and query_base == '-': - indels.append((ref_pos, ref_base, "D")) - #print(indels) - # Remove insertions in seq_imgt - offset = 0 - for indel_pos, indel_base, indel_type in indels: - if indel_type == "I": - seq_imgt = seq_imgt[:indel_pos + offset] + seq_imgt[indel_pos + offset + 1:] - offset -= 1 - if indel_type == "D": - pass - # We do not need to fill in deletions as these are already in the sequence - #print(seq_imgt) - else: - offset = 0 + # We need to check for indels first + # If aligned germline is provided use that to identify indels + # Otherwise perform pairwise alignment with reference + indels = [] + if remove_indels: + if not germline_alignment: + raise ValueError('Aligned germline sequence must be provided when remove_indels is True.') + + ungapped_reference = germline_alignment + #print(ungapped_reference) + + if seq_imgt.count('-') > 0 or ungapped_reference.count('-') > 0: + indels = find_indels(seq, ungapped_reference) + seq_imgt = remove_insertions(seq, indels) # Iterate over gaps in the germline segment + seq_imgt = '.' * (int(v_germ_start) - 1) + seq_imgt + gaps = re.finditer(r'\.', vgap) gapcount = int(v_germ_start) - 1 for gap in gaps: @@ -359,12 +365,13 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False) # Update gap counter gapcount += 1 + + # Assign IMGT gapped sequence imgt_dict['sequence_imgt'] = seq_imgt # Update IMGT positioning information for V imgt_dict['v_germ_start_imgt'] = 1 imgt_dict['v_germ_length_imgt'] = v_germ_length + gapcount - imgt_dict["alignment"] = pairwise_alignment[0] # Return indels if present return (indels if indels else None), imgt_dict diff --git a/changeo/Gene.py b/changeo/Gene.py index b8bb1e3..c4ad335 100644 --- a/changeo/Gene.py +++ b/changeo/Gene.py @@ -8,6 +8,7 @@ # Imports import re from collections import OrderedDict +from Bio.Seq import Seq # Presto and changeo imports from changeo.Defaults import v_attr, d_attr, j_attr, seq_attr @@ -294,6 +295,13 @@ def getDGermline(receptor, references, d_field=d_attr, amino_acid=False): elif dgene in references: # Define D germline sequence dseq = references[dgene] + # Handle D gene inversions + if receptor.d_germ_start > receptor.d_germ_end: + dlen = receptor.d_germ_start - receptor.d_germ_end + 1 + reverse_complement = Seq(dseq).reverse_complement() + dseq = str(reverse_complement) + dstart = receptor.d_germ_end -1 + germ_dseq = dseq[dstart:(dstart + dlen)] else: germ_dseq = None @@ -502,6 +510,7 @@ def buildGermline(receptor, references, seq_field=seq_attr, v_field=v_attr, if germ_dseq is None: log['ERROR'] = 'Allele %s is not in the provided germline database.' % dgene return log, None, None + log['D_GENE'] = germ_dseq # Build J segment germline sequence jgene, germ_jseq = getJGermline(receptor, references, j_field=j_field, amino_acid=amino_acid) diff --git a/changeo/Receptor.py b/changeo/Receptor.py index b5c249b..b6dd17e 100755 --- a/changeo/Receptor.py +++ b/changeo/Receptor.py @@ -1390,7 +1390,8 @@ def d_germ_end(self): """ Position of the last nucleotide in the D germline sequence alignment """ - try: return self.d_germ_start + self.d_germ_length - 1 + try: + return self.d_germ_start + self.d_germ_length - 1 except TypeError: return None @property diff --git a/tests/data/makedb_number_test.tsv b/tests/data/makedb_number_test.tsv new file mode 100644 index 0000000..cff3465 --- /dev/null +++ b/tests/data/makedb_number_test.tsv @@ -0,0 +1,7 @@ +sequence_id sequence sequence_aa locus stop_codon vj_in_frame v_frameshift productive rev_comp complete_vdj d_frame v_call d_call j_call c_call sequence_alignment germline_alignment sequence_alignment_aa germline_alignment_aa v_alignment_start v_alignment_end d_alignment_start d_alignment_end j_alignment_start j_alignment_end c_alignment_start c_alignment_end v_sequence_alignment v_sequence_alignment_aa v_germline_alignment v_germline_alignment_aa d_sequence_alignment d_sequence_alignment_aa d_germline_alignment d_germline_alignment_aa j_sequence_alignment j_sequence_alignment_aa j_germline_alignment j_germline_alignment_aa c_sequence_alignment c_sequence_alignment_aa c_germline_alignment c_germline_alignment_aa fwr1 fwr1_aa cdr1 cdr1_aa fwr2 fwr2_aa cdr2 cdr2_aa fwr3 fwr3_aa fwr4 fwr4_aa cdr3 cdr3_aa junction junction_length junction_aa junction_aa_length v_score d_score j_score c_score v_cigar d_cigar j_cigar c_cigar v_support d_support j_support c_support v_identity d_identity j_identity c_identity v_sequence_start v_sequence_end v_germline_start v_germline_end d_sequence_start d_sequence_end d_germline_start d_germline_end j_sequence_start j_sequence_end j_germline_start j_germline_end c_sequence_start c_sequence_end c_germline_start c_germline_end fwr1_start fwr1_end cdr1_start cdr1_end fwr2_start fwr2_end cdr2_start cdr2_end fwr3_start fwr3_end fwr4_start fwr4_end cdr3_start cdr3_end np1 np1_length np2 np2_length +TGACTAGAGAGTAATC-1_contig_2 GATGCTTTCTGAGAGTCATGGATCTCATGTGCAAGAAAATGAAGCACCTGTGGTTCTTCCTCCTGCTGGTGGCGGCTCCCAGATGGGTCCTGTCCCAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTCACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGAGGCGACACCTACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAGCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA QLQLQESGPGLVKPSETLSLTCTVSGGSISSSHYWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCAKVGWDSGNDYWFGPWGQGILVTVSSASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG IGH F T F T F T IGHV4-39*08 IGHD5-12*01,IGHD5-18*02 IGHJ5*02 IGHG1*01,IGHG1*02 CAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTC---ACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGAGGCGACACCTACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAG CAGCTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTAGTTACTACTGGGGCTGGATCCGCCAGCCCCCAGGGAAGGGGCTGGAGTGGATTGGGAGTATCTATTATAGTGGGAGCACCTACTACAACCCGTCCCTCAAGAGTCGAGTCACCATATCCGTAGACACGTCCAAGAACCAGTTCTCCCTGAAGCTGAGCTCTGTGACCGCCGCAGACACGGCTGTGTATTACTGTGCGANNNNNNNNNNNNATAGTGGCTACGATTACTGGTTCGACCCCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG QLQLQESGPGLVKPSETLSLTCTVSGGSISSSH-YWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCAKVGWDSGNDYWFGPWGQGILVTVSS QLQLQESGPGLVKPSETLSLTCTVSGGSISSSSYYWGWIRQPPGKGLEWIGSIYYSGSTYYNPSLKSRVTISVDTSKNQFSLKLSSVTAADTAVYYCAXXXXXSGYDYWFDPWGQGTLVTVSS 1 295 308 322 323 370 370 552 CAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTC---ACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGAGGCGACACCTACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGA QLQLQESGPGLVKPSETLSLTCTVSGGSISSSH-YWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCA CAGCTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTAGTTACTACTGGGGCTGGATCCGCCAGCCCCCAGGGAAGGGGCTGGAGTGGATTGGGAGTATCTATTATAGTGGGAGCACCTACTACAACCCGTCCCTCAAGAGTCGAGTCACCATATCCGTAGACACGTCCAAGAACCAGTTCTCCCTGAAGCTGAGCTCTGTGACCGCCGCAGACACGGCTGTGTATTACTGTGCGA QLQLQESGPGLVKPSETLSLTCTVSGGSISSSSYYWGWIRQPPGKGLEWIGSIYYSGSTYYNPSLKSRVTISVDTSKNQFSLKLSSVTAADTAVYYCA ATAGTGGCAACGATT SGND ATAGTGGCTACGATT SGYD ACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAG WFGPWGQGILVTVSS ACTGGTTCGACCCCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG WFDPWGQGTLVTVSS GCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA ASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG GCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA ASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG CAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCT QLQLQESGPGLVKPSETLSLTCTVS GGTGGCTCCATCAGCAGTAGTCACTAC GGSISSSHY TGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAAT WAWIRQPPGKGLEWIGN ATGTATTATAGAGGCGACACC MYYRGDT TACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGT YYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYC GCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCC AKVGWDSGNDYWFGP TGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGG 51 CAKVGWDSGNDYWFGPW 17 377.341 23.760 75.672 363.264 95S97M3D195M257S4N 399S6N15M230S2N 414S3N48M182S 461S183M807N 2.938e-106 2.870e-02 1.270e-17 1.478e-102 91.525 93.333 93.750 100.000 96 387 1 295 400 414 7 21 415 462 4 51 462 644 1 183 96 170 171 197 198 248 249 269 270 383 384 428 AAGTGGGGTGGG 12 0 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T F T IGHV2-5*01 IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 IGHM*01,IGHM*03 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG 51 CAHIPLSYLPFPHFDYW 17 466.153 10.301 87.208 143.222 82S298M143S3N 399S20N5M119S6N 407S3N45M71S 451S72M1284N 4.367e-133 2.810e+02 3.460e-21 2.072e-36 100.000 100.000 100.000 100.000 83 380 1 298 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T F T IGHV2-5*01 IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 IGHM*01,IGHM*03 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG 51 CAHIPLSYLPFPHFDYW 17 466.153 10.301 87.208 143.222 82S298M143S3N 399S20N5M119S6N 407S3N45M71S 451S72M1284N 4.367e-133 2.810e+02 3.460e-21 2.072e-36 100.000 100.000 100.000 100.000 83 380 1 298 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T F T IGHV2-5*01 IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 IGHM*01,IGHM*03 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG 51 CAHIPLSYLPFPHFDYW 17 466.153 10.301 87.208 143.222 82S298M143S3N 399S20N5M119S6N 407S3N45M71S 451S72M1284N 4.367e-133 2.810e+02 3.460e-21 2.072e-36 100.000 100.000 100.000 100.000 83 380 1 298 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T F T IGHV2-5*01 IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 IGHM*01,IGHM*03 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG 51 CAHIPLSYLPFPHFDYW 17 466.153 10.301 87.208 143.222 82S298M143S3N 399S20N5M119S6N 407S3N45M71S 451S72M1284N 4.367e-133 2.810e+02 3.460e-21 2.072e-36 100.000 100.000 100.000 100.000 83 380 1 298 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +ACGGCCACAAACAACA-1_contig_2 AGCTCTGAGAGAGGAGCCCAGCCCTGGGATTTTCAGGTGTTTTCATTTGGTGATCAGGACTGAACAGAGAGAACTCACCATGGAGTTTGGGCTGAGCTGGCTTTTTCTTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGATTCTCCACGGGACCGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAILHGTDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T F T IGHV3-23*01,IGHV3-23D*01 IGHD3-3*01,IGHD3-3*02,IGHD5-12*01 IGHJ4*02 IGHM*01,IGHM*03 GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGATTCTCCACGGGACCGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGANNCTCCANNNNNNNGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAILHGTDYWGQGTLVTVSS EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAXLXXXDYWGQGTLVTVSS 1 292 295 299 307 346 346 417 GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGA EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCA GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGA EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCA CTCCA L CTCCA L GACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG DYWGQGTLVTVSS GACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG DYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCT EVQLLESGGGLVQPGGSLRLSCAAS GGATTCACCTTTAGCAGCTATGCC GFTFSSYA ATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCT MSWVRQAPGKGLEWVSA ATTAGTGGTAGTGGTGGTAGCACA ISGSGGST TACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGT YYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYC GCGATTCTCCACGGGACCGACTAC AILHGTDY TGTGCGATTCTCCACGGGACCGACTACTGG 30 CAILHGTDYW 10 456.805 10.301 77.595 143.222 136S292M125S4N 430S13N5M118S13N 442S8N40M71S 481S72M1284N 3.020e-130 2.975e+02 2.869e-18 2.194e-36 100.000 100.000 100.000 100.000 137 428 1 292 431 435 18 14 443 482 9 48 482 553 1 72 137 211 212 235 236 286 287 310 311 424 425 448 TT 2 CGGGACC 7 diff --git a/tests/data/makedb_number_test_out.tsv b/tests/data/makedb_number_test_out.tsv new file mode 100644 index 0000000..d79beac --- /dev/null +++ b/tests/data/makedb_number_test_out.tsv @@ -0,0 +1,7 @@ +sequence_id sequence rev_comp productive v_call d_call j_call sequence_alignment germline_alignment junction junction_aa v_cigar d_cigar j_cigar sequence_aa locus stop_codon vj_in_frame v_frameshift complete_vdj d_frame c_call sequence_alignment_aa germline_alignment_aa v_alignment_start v_alignment_end d_alignment_start d_alignment_end j_alignment_start j_alignment_end c_alignment_start c_alignment_end v_sequence_alignment v_sequence_alignment_aa v_germline_alignment v_germline_alignment_aa d_sequence_alignment d_sequence_alignment_aa d_germline_alignment d_germline_alignment_aa j_sequence_alignment j_sequence_alignment_aa j_germline_alignment j_germline_alignment_aa c_sequence_alignment c_sequence_alignment_aa c_germline_alignment c_germline_alignment_aa fwr1 fwr1_aa cdr1 cdr1_aa fwr2 fwr2_aa cdr2 cdr2_aa fwr3 fwr3_aa fwr4 fwr4_aa cdr3 cdr3_aa junction_length junction_aa_length v_score d_score j_score c_score c_cigar v_support d_support j_support c_support v_identity d_identity j_identity c_identity v_sequence_start v_sequence_end v_germline_start v_germline_end d_sequence_start d_sequence_end d_germline_start d_germline_end j_sequence_start j_sequence_end j_germline_start j_germline_end c_sequence_start c_sequence_end c_germline_start c_germline_end fwr1_start fwr1_end cdr1_start cdr1_end fwr2_start fwr2_end cdr2_start cdr2_end fwr3_start fwr3_end fwr4_start fwr4_end cdr3_start cdr3_end np1 np1_length np2 np2_length +TGACTAGAGAGTAATC-1_contig_2 GATGCTTTCTGAGAGTCATGGATCTCATGTGCAAGAAAATGAAGCACCTGTGGTTCTTCCTCCTGCTGGTGGCGGCTCCCAGATGGGTCCTGTCCCAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTCACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGAGGCGACACCTACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAGCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA F T IGHD5-12*01,IGHD5-18*02 IGHJ5*02 CAGCTGCAGCTGCAGGAGTCGGGCCCA...GGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGC......AGTAGTC---ACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGA.........GGCGACACCTACTACAGCGGGTCCCTCAAG...AGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAG CAGCTGCAGCTGCAGGAGTCGGGCCCA...GGACTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGC......AGTAGTAGTTACTACTGGGGCTGGATCCGCCAGCCCCCAGGGAAGGGGCTGGAGTGGATTGGGAGTATCTATTATAGT.........GGGAGCACCTACTACAACCCGTCCCTCAAG...AGTCGAGTCACCATATCCGTAGACACGTCCAAGAACCAGTTCTCCCTGAAGCTGAGCTCTGTGACCGCCGCAGACACGGCTGTGTATTACTGTGCGANNNNNNNNNNNNATAGTGGCTACGATTACTGGTTCGACCCCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCCTGG CAKVGWDSGNDYWFGPW 95S97M3D195M257S4N 399S6N15M230S2N 414S3N48M182S QLQLQESGPGLVKPSETLSLTCTVSGGSISSSHYWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCAKVGWDSGNDYWFGPWGQGILVTVSSASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG IGH F T F T IGHG1*01,IGHG1*02 QLQLQESGPGLVKPSETLSLTCTVSGGSISSSH-YWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCAKVGWDSGNDYWFGPWGQGILVTVSS QLQLQESGPGLVKPSETLSLTCTVSGGSISSSSYYWGWIRQPPGKGLEWIGSIYYSGSTYYNPSLKSRVTISVDTSKNQFSLKLSSVTAADTAVYYCAXXXXXSGYDYWFDPWGQGTLVTVSS 1 295 308 322 323 370 370 552 CAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTC---ACTACTGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAATATGTATTATAGAGGCGACACCTACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGTGCGA QLQLQESGPGLVKPSETLSLTCTVSGGSISSSH-YWAWIRQPPGKGLEWIGNMYYRGDTYYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYCA CAGCTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCTGGTGGCTCCATCAGCAGTAGTAGTTACTACTGGGGCTGGATCCGCCAGCCCCCAGGGAAGGGGCTGGAGTGGATTGGGAGTATCTATTATAGTGGGAGCACCTACTACAACCCGTCCCTCAAGAGTCGAGTCACCATATCCGTAGACACGTCCAAGAACCAGTTCTCCCTGAAGCTGAGCTCTGTGACCGCCGCAGACACGGCTGTGTATTACTGTGCGA QLQLQESGPGLVKPSETLSLTCTVSGGSISSSSYYWGWIRQPPGKGLEWIGSIYYSGSTYYNPSLKSRVTISVDTSKNQFSLKLSSVTAADTAVYYCA ATAGTGGCAACGATT SGND ATAGTGGCTACGATT SGYD ACTGGTTCGGCCCCTGGGGCCAGGGAATCCTGGTCACCGTCTCGTCAG WFGPWGQGILVTVSS ACTGGTTCGACCCCTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG WFDPWGQGTLVTVSS GCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA ASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG GCCTCCACCAAGGGCCCATCGGTCTTCCCCCTGGCACCCTCCTCCAAGAGCACCTCTGGGGGCACAGCGGCCCTGGGCTGCCTGGTCAAGGACTACTTCCCCGAACCGGTGACGGTGTCGTGGAACTCAGGCGCCCTGACCAGCGGCGTGCACACCTTCCCGGCTGTCCTACAGTCCTCAGGA ASTKGPSVFPLAPSSKSTSGGTAALGCLVKDYFPEPVTVSWNSGALTSGVHTFPAVLQSSG CAGCTGCAGCTGCAGGAGTCGGGCCCAGGGCTGGTGAAGCCTTCGGAGACCCTGTCCCTCACGTGCACTGTCTCT QLQLQESGPGLVKPSETLSLTCTVS GGTGGCTCCATCAGCAGTAGTCACTAC GGSISSSHY TGGGCCTGGATCCGCCAGCCCCCAGGGAAGGGCCTGGAGTGGATTGGAAAT WAWIRQPPGKGLEWIGN ATGTATTATAGAGGCGACACC MYYRGDT TACTACAGCGGGTCCCTCAAGAGTCGACTCACCATATCCGAAGAATCGTCCAAGAACCAGTTCTCACTGAGGCTGAGCTCTGTGACCGCCGCAGATACGGCTGTATATTACTGT YYSGSLKSRLTISEESSKNQFSLRLSSVTAADTAVYYC GCGAAAGTGGGGTGGGATAGTGGCAACGATTACTGGTTCGGCCCC AKVGWDSGNDYWFGP 51 17 377.341 23.76 75.672 363.264 461S183M807N 2.938e-106 0.0287 1.27e-17 1.478e-102 91.525 93.333 93.75 100.0 96 387 1 316 400 414 7 21 415 462 4 51 462 644 1 183 96 170 171 197 198 248 249 269 270 383 384 428 AAGTGGGGTGGG 12 0 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG F T IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG CAHIPLSYLPFPHFDYW 82S298M143S3N 399S20N5M119S6N 407S3N45M71S QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T IGHM*01,IGHM*03 QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY 51 17 466.153 10.301 87.208 143.222 451S72M1284N 4.367e-133 281.0 3.46e-21 2.072e-36 100.0 100.0 100.0 100.0 83 380 1 319 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG F T IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG CAHIPLSYLPFPHFDYW 82S298M143S3N 399S20N5M119S6N 407S3N45M71S QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T IGHM*01,IGHM*03 QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY 51 17 466.153 10.301 87.208 143.222 451S72M1284N 4.367e-133 281.0 3.46e-21 2.072e-36 100.0 100.0 100.0 100.0 83 380 1 319 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG F T IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG CAHIPLSYLPFPHFDYW 82S298M143S3N 399S20N5M119S6N 407S3N45M71S QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T IGHM*01,IGHM*03 QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY 51 17 466.153 10.301 87.208 143.222 451S72M1284N 4.367e-133 281.0 3.46e-21 2.072e-36 100.0 100.0 100.0 100.0 83 380 1 319 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +TGACTAGAGCTGCAAG-1_contig_1 TGGGGAGTGACTCCTGTGCCCCACCATGGACACACTTTGCTCCACGCTCCTGCTGCTGACCATCCCTTCATGGGTCTTGTCCCAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG F T IGHD2/OR15-2a*01,IGHD2/OR15-2b*01 IGHJ4*02 CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CAGATCACCTTGAAGGAGTCTGGTCCT...ACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGC......ACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAAT.........GATGATAAGCGCTACAGCCCATCTCTGAAG...AGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACANNNNNNNNNNNNNNNNNNNCTTTCNNNACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTACTGG CAHIPLSYLPFPHFDYW 82S298M143S3N 399S20N5M119S6N 407S3N45M71S QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T IGHM*01,IGHM*03 QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHIPLSYLPFPHFDYWGQGTLVTVSS QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAHXXXXXXXFXXFDYWGQGTLVTVSS 1 298 318 322 326 370 370 441 CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCTGGGTTCTCACTCAGCACTAGTGGAGTGGGTGTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTCATTTATTGGAATGATGATAAGCGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGTGCACACA QITLKESGPTLVKPTQTLTLTCTFSGFSLSTSGVGVGWIRQPPGKALEWLALIYWNDDKRYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYCAH CTTTC F CTTTC F ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS ACTTTGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG FDYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV CAGATCACCTTGAAGGAGTCTGGTCCTACGCTGGTGAAACCCACACAGACCCTCACGCTGACCTGCACCTTCTCT QITLKESGPTLVKPTQTLTLTCTFS GGGTTCTCACTCAGCACTAGTGGAGTGGGT GFSLSTSGVG GTGGGCTGGATCCGTCAGCCCCCAGGAAAGGCCCTGGAGTGGCTTGCACTC VGWIRQPPGKALEWLAL ATTTATTGGAATGATGATAAG IYWNDDK CGCTACAGCCCATCTCTGAAGAGCAGGCTCACCATCACCAAGGACACCTCCAAAAACCAGGTGGTCCTTACAATGACCAACATGGACCCTGTGGACACAGCCACATATTACTGT RYSPSLKSRLTITKDTSKNQVVLTMTNMDPVDTATYYC GCACACATTCCCCTATCCTATCTTCCCTTTCCCCACTTTGACTAC AHIPLSYLPFPHFDY 51 17 466.153 10.301 87.208 143.222 451S72M1284N 4.367e-133 281.0 3.46e-21 2.072e-36 100.0 100.0 100.0 100.0 83 380 1 319 400 404 21 25 408 452 4 48 452 523 1 72 83 157 158 187 188 238 239 259 260 373 374 418 TTCCCCTATCCTATCTTCC 19 CCC 3 +ACGGCCACAAACAACA-1_contig_2 AGCTCTGAGAGAGGAGCCCAGCCCTGGGATTTTCAGGTGTTTTCATTTGGTGATCAGGACTGAACAGAGAGAACTCACCATGGAGTTTGGGCTGAGCTGGCTTTTTCTTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGATTCTCCACGGGACCGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAGGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG F T IGHD3-3*01,IGHD3-3*02,IGHD5-12*01 IGHJ4*02 GAGGTGCAGCTGTTGGAGTCTGGGGGA...GGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTT............AGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGT......GGTGGTAGCACATACTACGCAGACTCCGTGAAG...GGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGATTCTCCACGGGACCGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG GAGGTGCAGCTGTTGGAGTCTGGGGGA...GGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTT............AGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGT......GGTGGTAGCACATACTACGCAGACTCCGTGAAG...GGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGANNCTCCANNNNNNNGACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG TGTGCGATTCTCCACGGGACCGACTACTGG CAILHGTDYW 136S292M125S4N 430S13N5M118S13N 442S8N40M71S EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAILHGTDYWGQGTLVTVSSGSASAPTLFPLVSCENSPSDTSSV IGH F T F T IGHM*01,IGHM*03 EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAILHGTDYWGQGTLVTVSS EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCAXLXXXDYWGQGTLVTVSS 1 292 295 299 307 346 346 417 GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGA EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCA GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAGCTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCTATTAGTGGTAGTGGTGGTAGCACATACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGTGCGA EVQLLESGGGLVQPGGSLRLSCAASGFTFSSYAMSWVRQAPGKGLEWVSAISGSGGSTYYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYCA CTCCA L CTCCA L GACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG DYWGQGTLVTVSS GACTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG DYWGQGTLVTVSS GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GGGAGTGCATCCGCCCCAACCCTTTTCCCCCTCGTCTCCTGTGAGAATTCCCCGTCGGATACGAGCAGCGTG GSASAPTLFPLVSCENSPSDTSSV GAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCCCTGAGACTCTCCTGTGCAGCCTCT EVQLLESGGGLVQPGGSLRLSCAAS GGATTCACCTTTAGCAGCTATGCC GFTFSSYA ATGAGCTGGGTCCGCCAGGCTCCAGGGAAGGGGCTGGAGTGGGTCTCAGCT MSWVRQAPGKGLEWVSA ATTAGTGGTAGTGGTGGTAGCACA ISGSGGST TACTACGCAGACTCCGTGAAGGGCCGGTTCACCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTATATTACTGT YYADSVKGRFTISRDNSKNTLYLQMNSLRAEDTAVYYC GCGATTCTCCACGGGACCGACTAC AILHGTDY 30 10 456.805 10.301 77.595 143.222 481S72M1284N 3.02e-130 297.5 2.869e-18 2.194e-36 100.0 100.0 100.0 100.0 137 428 1 316 431 435 18 14 443 482 9 48 482 553 1 72 137 211 212 235 236 286 287 310 311 424 425 448 TT 2 CGGGACC 7 diff --git a/tests/test_MakeDb.py b/tests/test_MakeDb.py new file mode 100644 index 0000000..99b7a59 --- /dev/null +++ b/tests/test_MakeDb.py @@ -0,0 +1,60 @@ +""" +Unit tests for MakeDb +""" + +# Info +__author__ = 'Gisela Gabernet' +from changeo import __version__, __date__ + +# Imports +import os +import sys +import time +import unittest +import airr + +# Paths +test_path = os.path.dirname(os.path.realpath(__file__)) +data_path = os.path.join(test_path, 'data') + +# Import script +sys.path.append(os.path.join(test_path, os.pardir, 'bin')) +import MakeDb + +class Test_MakeDb(unittest.TestCase): + def setUp(self): + print('-> %s()' % self._testMethodName) + self.start = time.time() + + self.testdata_indels = os.path.join(data_path, 'makedb_number_test.tsv') + + # Download reference data running wget command + os.system('wget -c https://github.com/nf-core/test-datasets/raw/airrflow/database-cache/imgtdb_base.zip') + os.system('unzip -o imgtdb_base.zip -d ' + data_path) + os.system('rm imgtdb_base.zip') + + + def tearDown(self): + t = time.time() - self.start + print("<- %s() %.3f" % (self._testMethodName, t)) + + def test_numberAIRR(self): + """Test IMGT numbering insertion""" + out_file = os.path.join(data_path, 'makedb_number_test_out.tsv') + MakeDb.numberAIRR(self.testdata_indels, + germline_reference=[os.path.join(data_path, 'imgtdb_base/human/vdj')], + out_file=out_file, debug_mode=True) + self.assertTrue(os.path.isfile(out_file)) + + out_tab = airr.load_rearrangement(out_file) + self.assertTrue(out_tab.shape[0] == 6) + + #TODO: potentially add more tests. + + #os.remove(out_file) + os.system('rm -r ' + os.path.join(data_path, 'imgtdb_base')) + + +if __name__ == '__main__': + unittest.main() + From cebf8dd99b0b648a32ddef8c510ab9cee05f98e7 Mon Sep 17 00:00:00 2001 From: Gisela Gabernet Date: Mon, 17 Nov 2025 16:35:33 -0500 Subject: [PATCH 6/6] work on indel removal --- bin/MakeDb.py | 4 ++-- changeo/Alignment.py | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/bin/MakeDb.py b/bin/MakeDb.py index 6efc3b9..83e1ff0 100755 --- a/bin/MakeDb.py +++ b/bin/MakeDb.py @@ -791,7 +791,7 @@ def numberAIRR(aligner_file, germline_reference=None, format=default_format, ('J_CALL', rec.j_call), ('PRODUCTIVE', rec.functional)]) if indels: - log['INDELS'] = 'Found %s indels (I: insertion, D:deletion) that were removed from the sequence alignment to be consistent with IMGT positions:' % len(indels) + ','.join(['(%s:%s:%s)' % (p,b,t) for p,b,t in indels]) + log['INDELS'] = 'Found %s indels (I:insertion, D:deletion). The insertions were removed from the sequence alignment to be consistent with IMGT positions:' % len(indels) + ','.join(['(%s%s:%s)' % (p,b,t) for p,b,t in indels]) if not imgt_dict: log['ERROR'] = error_log['ERROR'] if (not imgt_dict) or debug_mode: @@ -1084,7 +1084,7 @@ def getArgParser(): group_number = parser_number.add_argument_group('aligner parsing arguments') group_number.add_argument('-i', nargs='+', action='store', dest='aligner_files', required=True, help='''AIRR Rearrangement TSV files.''') - group_number.add_argument('-r', nargs='+', action='store', dest='repo', required=False, + group_number.add_argument('-g', nargs='+', action='store', dest='germline_reference', required=False, help='''List of folders and/or fasta files containing IMGT-numbered germline sequences corresponding to the set of germlines used for the alignment.''') diff --git a/changeo/Alignment.py b/changeo/Alignment.py index a6897db..4a02232 100644 --- a/changeo/Alignment.py +++ b/changeo/Alignment.py @@ -263,17 +263,16 @@ def find_indels(sequence_alignment, germline_alignment): list: List of indels as tuples (position, base, type). """ indels = [] - ref_pos = 0 - query_pos = 0 + ref_pos = 1 + query_pos = 1 for ref_base, query_base in zip(germline_alignment, sequence_alignment): - if ref_base != '-': - ref_pos += 1 - if query_base != '-': - query_pos += 1 if ref_base == '-' and query_base != '-': indels.append((ref_pos, query_base, "I")) - if ref_base != '-' and query_base == '-': + elif ref_base != '-' and query_base == '-': indels.append((ref_pos, ref_base, "D")) + ref_pos += 1 + query_pos += 1 + return indels def remove_insertions(sequence_alignment, indels): @@ -282,13 +281,13 @@ def remove_insertions(sequence_alignment, indels): Arguments: sequence_alignment (str): Aligned sequence. - indels (list): List of indels as tuples (position, base, type). + indels (list): List of indels as tuples (position, base, type). The indel type can be I (insertion) or D (deletion). Returns: str: Sequence alignment with insertions removed. """ seq_imgt = sequence_alignment - offset = 0 + offset = -1 # Offset starts with -1 since positions are 1-based, and python indexing is 0-based for indel_pos, indel_base, indel_type in indels: if indel_type == "I": seq_imgt = seq_imgt[:indel_pos + offset] + seq_imgt[indel_pos + offset + 1:] @@ -316,7 +315,8 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False, # Initialize return object imgt_dict = {'sequence_imgt': None, 'v_germ_start_imgt': None, - 'v_germ_length_imgt': None} + 'v_germ_length_imgt': None, + 'v_call': None} # Initialize imgt gapped sequence seq_imgt = seq @@ -372,6 +372,7 @@ def gapV(seq, v_germ_start, v_germ_length, v_call, references, asis_calls=False, # Update IMGT positioning information for V imgt_dict['v_germ_start_imgt'] = 1 imgt_dict['v_germ_length_imgt'] = v_germ_length + gapcount + imgt_dict['v_call'] = v_call # Return indels if present return (indels if indels else None), imgt_dict