#!/usr/bin/env python # coding: utf-8 # # AbNumber Usage Examples # In[1]: from abnumber import Chain import pandas as pd pd.options.display.max_columns = 200 # ## Creating a chain # In[2]: seq = 'EVQLQQSGAELARPGASVKMSCKASGYTFTRYTMHWVKQRPGQGLEWIGYINPSRGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYSEDDERGHYCLDYWGQGTTLTVSSAKTTAPSVYPLA' chain = Chain(seq, scheme='imgt') chain # In[3]: chain.print(numbering=True) # In[4]: chain.seq # In[5]: chain.tail # In[6]: chain.cdr3_seq # In[7]: chain.print_tall() # ## Separate CDR definitions # In[8]: Chain(seq, scheme='imgt', cdr_definition='chothia') # In[9]: Chain(seq, scheme='imgt', cdr_definition='north') # ## Renumbering # In[10]: # Use Chothia numbering and CDR definitions chain.renumber('chothia').print_tall(6) # In[11]: # Keep IMGT numbering, use Chothia CDR definitions chain.renumber(cdr_definition='chothia').print_tall(6) # ## Chain properties # In[12]: chain.scheme # In[13]: chain.chain_type # In[14]: chain.is_heavy_chain() # In[15]: len(chain) # ## Chain indexing and slicing # In[16]: chain['112'] # In[17]: chain.raw[112] # In[18]: chain[:'30'] # In[19]: chain['120':] # In[20]: chain.raw[114:] # In[21]: chain.raw[-10:] # In[22]: chain.raw[-10:] # In[23]: chain['111A':'112A'].print_tall() # In[24]: for pos, aa in chain['111A':'112A']: print(pos, aa) # In[25]: for pos, aa in chain.raw[:10]: print(pos, aa) # ## Alignment # In[26]: seq2 = 'QVQLVQSGAELDRPGATVKMSCKASGYTTTRYTMHWVKQRPGQGLDWIGYINPSDRSYTNYNQKFKDKATLTTDKSSSTAYMQKTSLTSEDSAVYYCARYYDDERYDYLDRWGQGTTLTVSSAKTTAP' chain2 = Chain(seq2, scheme='imgt') chain2 # In[27]: alignment = chain.align(chain2) alignment # ## Alignment indexing and slicing # In[28]: aa, bb = alignment['112A'] print(aa, bb) # In[29]: aa, bb = alignment.raw[10] aa, bb # In[30]: for pos, (aa, bb) in alignment['108':'112A']: print(pos, aa, bb) # In[31]: for pos, (aa, bb) in alignment.raw[:10]: print(pos, aa, bb) # ## CDR grafting # In[32]: alignment # In[33]: chain.graft_cdrs_onto(chain2).print() # In[34]: chain2.graft_cdrs_onto(chain).print() # # Different numbering schemes # In[35]: from IPython.display import display, HTML # In[36]: EXAMPLES = [ 'EVQLQQSGAELARPGASVKMSCKASGYTFTSRRYTMHWVKQRPGQGLEWIGYINPSDERGYTNYNQKFKDKATLTTDKSSSTAYMQLSSLTSEDSAVYYCARYYSEDDERGHYCLDYWGQGTTLTVSSAKTTAPSVYPLA', 'EIVLTQSPATLSLSPGERATLSCRASKGVSTDLSGYSYLHWYQQKPGQAPRLLIYLGYASYLESGVPARFSGSGSGTDFTLTISSLEPEDFAVYYCQHSRDGTLPLTFGGGTKVEIK', 'QSVLTQPPSASGTPGQRVTISCSGSSSNIGSNTVHWYQQLPGTAPKLLIYSDNQRPSGVPDRFSGSKSGTSASLAISGLQSEDEADYYCAAWDDSLNGVFGGGTKLTVL' ] # In[37]: for chain_seq in EXAMPLES: for scheme, cdr_definition in [('imgt', 'imgt'), ('chothia','chothia'), ('kabat','kabat'), ('chothia','north'), ('aho','north')]: chain = Chain(chain_seq, scheme=scheme, cdr_definition=cdr_definition) scheme_label = scheme + ('-'+cdr_definition if cdr_definition != scheme else '') display(HTML(f'