WO2012048340A2 - High-throughput immune sequencing - Google Patents

High-throughput immune sequencing

Info

Publication number
WO2012048340A2
WO2012048340A2 PCT/US2011/055801 US2011055801W WO2012048340A2 WO 2012048340 A2 WO2012048340 A2 WO 2012048340A2 US 2011055801 W US2011055801 W US 2011055801W WO 2012048340 A2 WO2012048340 A2 WO 2012048340A2
Authority
WO
Grant status
Application
Patent type
Prior art keywords
vdj
μΐ
method
gt
pcr
Prior art date
Application number
PCT/US2011/055801
Other languages
French (fr)
Other versions
WO2012048340A3 (en )
Inventor
George M. Church
Francois Vigneault
Uri Laserson
Ido Bachelet
Original Assignee
President And Fellows Of Harvard College
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date

Links

Classifications

    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q1/00Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions
    • C12Q1/68Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions involving nucleic acids
    • C12Q1/6869Methods for sequencing
    • C12Q1/6874Methods for sequencing involving nucleic acid arrays, e.g. sequencing by hybridisation
    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07KPEPTIDES
    • C07K16/00Immunoglobulins [IGs], e.g. monoclonal or polyclonal antibodies
    • CCHEMISTRY; METALLURGY
    • C07ORGANIC CHEMISTRY
    • C07KPEPTIDES
    • C07K16/00Immunoglobulins [IGs], e.g. monoclonal or polyclonal antibodies
    • C07K16/06Immunoglobulins [IGs], e.g. monoclonal or polyclonal antibodies from serum
    • C07K16/065Purification, fragmentation
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12NMICROORGANISMS OR ENZYMES; COMPOSITIONS THEREOF; PROPAGATING, PRESERVING OR MAINTAINING MICROORGANISMS; MUTATION OR GENETIC ENGINEERING; CULTURE MEDIA
    • C12N15/00Mutation or genetic engineering; DNA or RNA concerning genetic engineering, vectors, e.g. plasmids, or their isolation, preparation or purification; Use of hosts therefor
    • C12N15/09Recombinant DNA-technology
    • C12N15/10Processes for the isolation, preparation or purification of DNA or RNA
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q1/00Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions
    • C12Q1/68Measuring or testing processes involving enzymes, nucleic acids or microorganisms; Compositions therefor; Processes of preparing such compositions involving nucleic acids
    • C12Q1/6876Nucleic acid products used in the analysis of nucleic acids, e.g. primers or probes
    • C12Q1/6883Nucleic acid products used in the analysis of nucleic acids, e.g. primers or probes for diseases caused by alterations of genetic material
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q2535/00Reactions characterised by the assay type for determining the identity of a nucleotide base
    • CCHEMISTRY; METALLURGY
    • C12BIOCHEMISTRY; BEER; SPIRITS; WINE; VINEGAR; MICROBIOLOGY; ENZYMOLOGY; MUTATION OR GENETIC ENGINEERING
    • C12QMEASURING OR TESTING PROCESSES INVOLVING ENZYMES, NUCLEIC ACIDS OR MICROORGANISMS; COMPOSITIONS OR TEST PAPERS THEREFOR; PROCESSES OF PREPARING SUCH COMPOSITIONS; CONDITION-RESPONSIVE CONTROL IN MICROBIOLOGICAL OR ENZYMOLOGICAL PROCESSES
    • C12Q2600/00Oligonucleotides characterized by their use
    • C12Q2600/158Expression markers

Abstract

Methods and compositions for determining and/or monitoring the immune state of an individual are provided.

Description

HIGH-THROUGHPUT IMMUNE SEQUENCING

RELATED APPLICATION DATA

[001] This application claims priority to U.S. Provisional Patent Application No. 61/391,337, filed on October 8, 2010 and is hereby incorporated herein by reference in its entirety for all purposes.

STATEMENT OF GOVERNMENT INTERESTS

[002] This invention was made with government support under HG003170 awarded by the National Institutes of Health. The Government has certain rights in the invention.

FIELD

[003] The present invention relates to methods and compositions for diagnostics and therapeutics.

BACKGROUND

[004] The function of the adaptive immune system is largely mediated by lymphocytes (B and T cells) that express a diverse repertoire of immune receptors against virtually any foreign substance (Abbas et al., Cellular and Molecular Immunology, Edn. 6th. (Saunders

Elsevier, Philadelphia; 2007); Murphy et al., Janeway's Immunobiology, Edn. 7th.

(Garland Science, New York; 2008); Paul, Fundamental Immunology, Edn. 6th. (Wolters

Kluwer/Lippincott Williams & Wilkins, Philadelphia; 2008)). In order to generate the repertoire of antibodies necessary for antigen recognition, each lymphocyte independently constructs a unique receptor through the process of VDJ recombination. Id. Each cell randomly selects a single V, D, and J gene segment through genetic recombination, introducing additional non-germline-encoded nucleotides at the junctions (Figure 1).

This process creates antibody diversity, the majority of which is encoded in the heavy chain complementarity determining region 3 (CDR3) (Rock et al. (1994,) J Exp. Med. 179:323 ; Xu and Davis (2000) Immunity 13:37). The complexity and dynamics of a single human immune repertoire have yet to be deeply probed, and the ability to track the repertoire dynamically has not been demonstrated in any organism.

SUMMARY

[005] Characterizing the diversity and dynamics of the immune repertoire or "VDJ-ome" has significant implications in understanding the immune system, particularly in the context of personalized diagnostics and therapeutic discovery. Accordingly, the present invention is directed in part to methods and compositions that enable personalized clinical diagnostics and therapeutics utilizing the unique nucleic acid sequence information contained in an individual immune system. Toward this goal, high-throughput, high- resolution methods and compositions for profiling the antibody repertoire of a single individual are provided. For example, embodiments of the present invention include the use of high-throughput sequencing technology to dynamically track the nature and extent of antibodies produced by an individual as a result of an immune reaction, to clone full antibodies of paired light and heavy chains from millions of single cells in parallel, and to select for high-affinity antibodies against multiple antigens in a single reaction.

[006] In certain exemplary embodiments, methods for determining an immune state of an individual are provided. The methods include the steps of obtaining nucleic acid sequences encoding lymphocyte receptors from the biological sample, and performing high-throughput sequencing of the amplified nucleic acid sequences to determine a plurality of sequences representing the immune state of the biological sample. In certain aspects, the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy. In certain aspects, the biological sample is obtained from an individual. In other aspects, an immune state of the individual is determined. In still other aspects, the methods further include the step of amplifying the nucleic acid sequences encoding lymphocyte receptors prior to the step of high-throughput sequencing, optionally using primers specific to heavy chain or light chain nucleic acid sequences. In yet other aspects, the methods include the step of obtaining lymphocytes (e.g., T cells, B cells or a combination thereof) from the biological sample prior to the step of purifying. According to one aspect, an individual's T cell receptor usage is correlated with the individual's MHC type to diagnose certain diseases or conditions. In certain aspects, the nucleic acid sequences encode one or more of V regions (heavy chain or light chain), D regions (heavy chain or light chain), J regions (heavy chain or light chain) and combinations thereof. In other aspects, the nucleic acid sequences are DNA (e.g., genomic DNA) or RNA (e.g., mRNA). In still other aspects, the methods include the step of comparing the immune state of the individual to a control sample to diagnose a disease or a disorder such as, e.g., an infection, an autoimmune disorder, a cellular proliferative disorder and any combination thereof. In other aspects, the plurality of sequences includes at least one common nucleic acid sequence. In certain exemplary embodiments, methods for monitoring the effect of an agent on an immune state of a biological sample are provided. The methods include the steps of isolating lymphocytes from the first biological sample, purifying a first set of nucleic acid sequences encoding lymphocyte receptors, performing high-throughput sequencing of the purified first set of nucleic acid sequences to provide a first reference library, contacting a second biological sample with an agent, isolating lymphocytes from the second biological sample, purifying a second set of nucleic acid sequences encoding lymphocyte receptors, performing high-throughput sequencing of the purified second set of nucleic acid sequences to provide a second reference library, and comparing the sequences of the first reference library and the second reference library to monitor the affect of an agent on an immune state of the biological sample. In certain aspects, the agent is selected from the group consisting of an antigen, a vaccine, a drug, a small molecule, a biologic and any combination thereof. In other aspects, the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy. In other aspects, the biological sample is obtained from an individual. In still other aspects, an immune state of the individual is determined. In yet other aspects, the individual is afflicted with a disease or disorder selected from the group consisting of an infection, an autoimmune disorder, a cellular proliferative disorder and any combination thereof. In certain aspects, efficacy of the agent for treating a disease or a disorder is determined. In other aspects, a prognosis for treating a disease or a disorder is determined. In other aspects, the sequencing steps are performed simultaneously or at separate times. In certain aspects, multiple samples are obtained over a time course and, optionally, the steps of isolating, purifying and performing high-throughput sequencing are performed for each of the multiple samples obtained over the time course. In certain exemplary embodiments, methods for monitoring an immune response of a biological sample are provided. The methods include the steps of obtaining a first biological sample at a first point in time, isolating lymphocytes from the first biological sample, purifying a first set of nucleic acid sequences encoding lymphocyte receptors, performing high-throughput sequencing of the purified first set of nucleic acid sequences to provide a first reference library, obtaining a second biological sample at a second point in time, isolating lymphocytes from the second biological sample, purifying a second set of nucleic acid sequences encoding lymphocyte receptors, performing high-throughput sequencing of the purified second set of nucleic acid sequences to provide a second reference library, and comparing the sequences of the first reference library and the second reference library to track an immune response in a biological sample. In certain aspects, the immune response is against an agent selected from the group consisting of an antigen, a vaccine, a drug, a small molecule, a biologic and any combination thereof. In other aspects, wherein the sequencing steps are performed simultaneously or at separate times. In yet other aspects, multiple samples are obtained over a time course and, optionally, the steps of isolating, purifying and performing high-throughput sequencing are performed for each of the multiple samples obtained over the time course. In still other aspects, a disease or disorder diagnosis is determined. In other aspects, the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy. In still other aspects, the biological sample is obtained from an individual. In other aspects, the immune state of the individual is determined.

[009] Further features and advantages of certain embodiments of the present invention will become more fully apparent in the following description of the embodiments and drawings thereof, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[010] The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee. The foregoing and other features and advantages of the present invention will be more fully understood from the following detailed description of illustrative embodiments taken in conjunction with the accompanying drawings in which:

[011] Figure 1 depicts an overview of VDJ recombination and experimental design. An antibody contains a heavy chain and a light chain, where a unique V, D, and J segment are ligated together from a set of germline-encoded genes.

[012] Figures 2Λ-2Ε depict technical reproducibility and immune diversity of certain methods described herein. (A) The number of unique clones (top) and corresponding reads

(bottom) shared between two sequencing replicate runs (SRI and SR2) and an independent technical replicate run (TR1). A small number of shared unique clones accounted for the majority of reads. (B) Day 1 scatter plot of SRI versus TR1 of clone frequencies demonstrated strong correlation and reproducibility of the sampling approach described herein. (C) For multiple sample sizes, bootstrap distributions were sampled by computing the Pearson correlation between 50 pairs of independently drawn samples.

This showed that 105 reads were sufficient to achieve high correlations among independent samples. (D) Clone frequency abundance distributions from diversity replicate 1 (DR1) and all time points from SR1+SR2+TR1. Clone frequencies spanned multiple orders of magnitude and were power-law distributed with approximately inverse square scaling. (E) Unique sequences were observed and estimates of the expressed human heavy chain diversity in 1 mL blood samples were made using the Chaol and ACE non-parametric estimators. Numbers were computed using clone counts (post- clustering, error-corrected) as well as unique CDR3 junction sequences (unprocessed, non-clustered) (top). Estimates of the total expressed human heavy chain diversity in blood using multiple non-parametric estimators and the Arstila method (Arstila et al. (1999) Science 286:958) (bottom).

[013] Figures 3A-3C depict static repertoire analysis. (A) Distribution of all functional V and J segments observed in replicate runs across all time points shows highly non-uniform usage of gene segments. Circle sizes are proportional to read counts. (B) The CDR3 junction length distribution of all reads in SR1+SR2+TR1 (light) and all Ig heavy chain junctions in IMGT/LIGM (dark) showed large variability in CDR3 loop size. The sawtooth pattern reflected in-frame junctions. (C) Representative examples of CDR3 pseudo-spectratypes for various V-J combinations at multiple time points. The 16 amino acid peak was annotated in all spectratypes. Annotated numbers showed expansions of clones identified in Figure 4B, which confirmed the utility of the spectratype method for identifying candidates of interest.

[014] Figures 4A-4D depict dynamic repertoire analysis. (A) The time series of all clones in

SR1 +SR2+TR1 revealed significant fluctuations of the repertoire through time. A handful of clones showed significantly higher expression, while the extent of the fluctuations is shown on a logarithmic scale (inset). The appearance of many gradually rising clones from day -14 to day 0 was due to the lack of sampling resolution among these time points. (B) Self-organizing map (SOM) clustering of clone time series, where each cluster was located at a constant map position, and colors represent clone expression levels. Groups of clusters with similar dynamic behavior were selected and the corresponding clones are plotted as time series. Time series were colored based on the most common isotype observed at the time of peak expression. Annotations referred to specific clones of interest corresponding to specific spectratype peaks in Figure 3C. (C) Dynamics of the global isotype distribution indicated potential class switching. Thick lines represented the mean of 6 replicate runs (shown as thin lines) with one standard deviation. (D) Specific isotype distributions for selected annoted clones; stacked bar charts represented the isotype distribution at a given time point, while the black line represents the clone frequency time series. Numbers referred to maximum clone frequency, with the corresponding number of reads. Isotype color scheme is consistent among panels B, C, and D.

[015] Figure 5 schematically depicts high throughput immune sequencing and analysis of immune and antibody repertoire.

[016] Figures 6A-6C graphically depict FACS sorting analysis of selected sequences of Figure 4.

[017] Figures 7A-7C graphically depict quartz crystal microbalance (QCM) analysis.

[018] Figure 8 depicts a graph showing ROC curves for the VDJ alignment algorithm described herein using IMGT/V-QUEST results as a reference. As expected, V region alignments were the most reliable, followed by J, followed by D.

[019] Figure 9 depicts scatter plots showing correlation of expression levels among replicates SRI, SR2, TRl, and OR3. Points in red are zero-valued. Barcode 1 (-14 d) was significantly lost in the preparation of replicate TRl. Note that OR3 consistently showed worse correlation. As it was produced with a freshly mixed primer set, without intending to be bound by scientific theory, this indicated that the protocol described herein was highly sensitive to the primer concentrations. [020] Figure 10 graphically depicts coefficients of variation (CV) computed for various replicate comparisons. Higher clone frequencies showed smaller CV, consistent with the higher reproducibility of high-expression clones. CV values of 0.5 were attained at frequencies of 10"4 to 10"3, indicating limits to the ability to accurately quantitate clone frequency before the onset of Poisson noise.

[021] Figure 11 graphically depicts clone frequency rank accumulation for replicate DRl and the various time points of SR1+SR2+TR1.

[022] Figure 12A-12D depict rarefaction curves using sampling without replacement. The final values (computed on the full data sets) are summarized herein. (A) Chao 1 , linear and logarithmic axis. (B) ACE, linear and logarithmic axis. (C) Number of unique sequences discovered, linear and logarithmic axis. (D) Estimator value versus number of reads. Lack of positive correlation indicates that estimator values are independent of the sample sizes, and thus are sampled sufficiently.

[023] Figures 13A-13B depict CDR3 pseudo-spectratypes for various V-J combinations at multiple time points for all the clones selected from Figure 4B.

[024] Figure 14 depicts replicate plots of time series of randomly selected clones. Each panel contains 10 randomly selected clones, plotted using data from SRI, SR2, and TR1, separately. Unique clones are plotted in the same color. Clones qualitatively tracked one another from separate replicates, showing high reproducibility of time series between replicates.

[025] Figures 15A-15B depict k-means clustering of clone time series. (A) Clustering of all clones into 100 clusters using the Euclidean distance metric. (B) Similar clustering of all clones observed in at least two time points. Curves represent cluster means; their thickness is proportional to cluster size. [026] Figures 16A-16C depict isotype distributions of the most highly expressed clones at days 1 (A), 7 (B), and 21 (C). Stacked bar charts represent the isotype distribution at a given time point, while the black line represents the clone frequency time series. Numbers refer to maximum clone frequency, with the corresponding number of reads. IgA; green, IgG; red, IgM; blue.

[027] Figures 17A-17B depict Collier de Perles (Ruiz and Lefranc (2002) Immunogenetics 53 :857) representation of the anti-digoxin IMGT/LIGM entry (AR161172; top) and of the corresponding sequencing read found in a subject (FXQ8H8O01CY52L; bottom).

[028] Figure 18 graphically depicts the raw high quality read length distribution of a single run of 454 GS FLX sequencing. The most significant peak occurred at the expected size of 420 bp.

[029] Figures 19A-19B depict (A) distribution of cophenetic distances for single and complete linkage hierarchical clustering on sequences from a V-J combination with a small number of reads; and (B) number of clusters obtained as a function of distance at which the linkage tree was cut. Both plots show rapid descents to 4.5 edits, followed by shoulders. This indicated 4.5 edits as the proper distance to clip the linkage tree to define clones.

[030] Figures 20A-20B depict (A) distribution of log(fold change) for each transition in time series that were positive at all 8 time points; and (B) correlation between the standard deviation of the log(fold change) and the duration of the transition.

[031] Figure 21 depicts a first example alignment for hepatitis. Query: FXQ8H8O01DXEUI rank=0514859 x=1493.0 y=2520.0 length=408; Target: 155621 | anti-hepatitis B virus (HBV) surface antigen (HBsAg) (human); Model: affme:local:dna2dna; Raw score: 1740; Query range: 8 -> 398; Target range: 27 -> 423; aln_summary: FXQ8H8O01DXEUI 408 8 398 + 155621 423 27 423 + 1740 390 372 95.38. [032] Figure 22 depicts a second example alignment for hepatitis. Query: FX4D8HT02FMIIW rank=0345098 x=2189.0 y=2486.0 length=408; Target: 155621 | anti-hepatitis B virus (HBV) surface antigen (HBsAg) (human); Model: affine: local :dna2dna; Raw score: 1743; Query range: 5 -> 404; Target range: 24 -> 423; aln_summary: FX4D8HT02FMIIW 408 5 404 + 155621 423 24 423 + 1743 399 371 92.

[033] Figure 23 depicts a junction-only alignment. Query: FXQ8H8O01CY52L [translate^ )];

Target: AR161 172 | anti-digoxin; Model: protein2dna: local; Raw score: 58; Query range:

0 -> 9; Target range: 237 -> 264; aln_summary: FXQ8H8O01 CY52L 9 0 9 . AR161172 282 237 264 + 58 9 9 100.00.

[034] Figure 24 depicts a full-read alignment. Query: FXQ8H8O01 CY52L; Target: AR161172

1 anti-digoxin; Model: coding2coding; Raw score: 512; Query range: 73 -> 355; Target range: 0 -> 282; aln_summary: FXQ8H8O01CY52L 390 73 355 + AR161172 282 0 282 + 512 94 93 98.94.

[035] Figure 25 depicts an overview of an experimental design according to certain aspects of the invention. Lymphocyte total RNA was extracted from blood samples collected at multiple time points following the vaccination of a human individual. A multiplex set of gene-specific primers were used to amplify the immunoglobulin heavy chain from B cell RNA, and processed into 454-compatible sequencing libraries. The sequences were aligned and clustered for repertoire analysis.

[036] Figure 26 shows a table depicting read sequencing distribution and analysis.

[037] Figure 27 schematically depicts exemplary chain coupling methods.

[038] Figure 28 schematically depicts exemplary cell insulation methods.

[039] Figure 29 schematically depicts exemplary methods for coupling heavy and light chains. [040] Figure 30 schematically depicts exemplary methods for multiplex affinity selections.

[041] Figure 31 depicts an immune cell presenting an antibody containing a heavy chain and a light chain.

[042] Figure 32 schematically depicts a method of optimizing cross-linking PCR.

[043] Figure 33 schematically depicts a method of optimizing cell insulation.

[044] Figure 34 schematically depicts a method of characterizing cross-contamination.

[045] Figure 35 schematically depicts a method of characterizing cross-contamination using a TaqMan assay.

[046] Figure 36 schematically depicts generation of an antibody-antigen lookup table for influenza virus.

[047] Figure 37 schematically depicts antibodies coupled to antigens.

[048] Figure 38 schematically depicts a comparison of libraries against libraries for combinatorial selection of replicating antigen-antibody pairs (Bowley et al. (2009) Proc. Natl. Acad. Sci. USA 106(5): 1380).

[049] Figure 39 schematically depicts exemplary bead emulsion capture methods.

[050] Figure 40 schematically depicts small oligonucleotide transfection of single cells.

[051] Figure 41 schematically depicts SOE-PCR.

[052] Figure 42 schematically depicts SOE-PCR USER ligation. [053] Figure 43 schematically depicts SOE-PCR restriction ligation.

[054] Figure 44 schematically depicts 3x SOE-PCR.

[055] Figure 45 graphically depicts heavy and light chain distributions.

[056] Figure 46 depicts histograms of read lengths of light chains.

[057] Figure 47 depicts the distribution of junctions.

[058] Figure 48 depicts a clone time series.

[059] Figure 49 depicts a time series for both heavy and light chains using unique junctions.

[060] Figure 50 depicts a re-plot time series of highly expressed heavy and light chain junctions.

[061] Figure 51 depicts a gel showing Y adapter ligation.

[062] Figure 52 depicts a diagnostic gel showing PCR efficiency.

[063] Figure 53 depicts a gel showing a test pippin preparation with control sample number 8. [064] Figure 54 depicts samples run on a pippin preparation.

[065] Figure 55 depicts imaging data showing clonality of beads. All three assays demonstrated clonality, so emulsion of a human genomic library worked well, even when using a hydrocycler (which is a major time saving and technically facile solution). Top row: 20x white light, 200% zoom. Middle row: 20x, Cy5, Cy3, FITC color align. Bottom row: 20x, 200% zoom, Cy5, Cy3, FITC color align. [066] Figure 56 depicts imaging data of a single cell post lysis and PCR with VDJ capturing beads.

[067] Figure 57 depicts imaging data of PCR with VDJ capturing beads.

[068] Figure 58 depicts a gel showing individual primer testing. Lanes from left to right: 1,100 bp ladder; 2, full; 3, full-2; 4, Jl; 5, J2; 6, J3; 7, V30; 8, V29; 9, V28; 10, V27.

[069] Figure 59 depicts gels showing individual primer testing.

[070] Figure 60 depicts a gel showing combined Illumina primer overlap testing.

[071] Figure 61 depicts a gel showing an assembly.

[072] Figure 62 depicts a gel showing cDNA and coriel DNA.

[073] Figure 63 depicts an SDS PAGE gel. 200 volts, ran for 45 minutes.

[074] Figure 64 depicts an SDS PAGE gel. 200 volts, ran for 30 minutes.

[075] Figure 65 depicts an SDS PAGE gel. Ran for 35 minutes, blue staining.

[076] Figure 66 depicts neutralization assays.

[077] Figure 67 graphically depicts neutralization results.

[078] Figure 68 depicts a diagnostic gel used to confirm PCR efficiency.

[079] Figure 69 depicts a diagnostic gel used to confirm efficiency of blunting and ampure beads. [080] Figure 70 depicts a diagnostic gel used to confirm AMPure efficiency.

[081] Figure 71 depicts a diagnostic gel used to confirm combined reaction efficiency.

[082] Figure 72 depicts a diagnostic gel used to confirm PCR efficiency using primers that amplify the final product.

[083] Figure 73 depicts gels pre-pippin extraction (left panel) and post-pippin extraction (right panel).

[084] Figure 74 depicts a diagnostic gel used to confirm PCR efficiency. [085] Figure 75 depicts a diagnostic gel used to confirm ligation efficiency. [086] Figure 76 depicts pippin test gels.

DETAILED DESCRIPTION

[087] In certain exemplary embodiments, a set of technologies and analytical tools to efficiently survey the information recorded in the immune system, therefore enabling personalized clinical diagnostics and/or therapeutics, are provided. Certain aspects of the invention utilize next-generation sequencing in order to screen large amounts of antibody coding sequences from millions of single cells in a single reaction, in contrast to one cell per well assays typically performed in the art. Certain aspects of the invention are directed to sequencing and identifying portions of antibody coding sequences. Other aspects of the invention are directed to methods for expressing complex antibody libraries e.g., for use with functional screens and/or evolution analyses against a library of antigens or proteins. In certain aspects, the methods and compositions described herein can be used for biomarker identification for development of diagnostic or screening assays against infectious diseases, cellular proliferative disorders such as cancer, allergies and/or autoimmune disorders. In other aspects, the methods and compositions described herein can be used for the discovery and development of therapeutics, using, e.g., monoclonal, multi-pooled monoclonal, polyclonal, fragment, full and/or partial antibody sequence(s).

[088] Certain additional exemplary embodiments utilize the characterization of the diversity and dynamics of the immune repertoire according to the methods described herein to identify vaccine targets and neutralizing antibodies. Such characterization on an individual level is useful in methods of diagnosis and/or prognosis of autoimmunity and/or allergic diseases. The characterization methods described herein are further useful to create databases of antigen/antibody affinities which are useful for predicting antibody specificity from sequence and for diagnosis of diseases or conditions characterized by certain antigen/antibody affinities. The characterization methods described herein are still further useful in methods of determining transplant rejection and histo- incompatibility based on analysis of the components of the immune repertoire of an individual at a single point in time or at various points in time. Antibodies characterized according to the methods described herein are useful in methods to extract and identify certain immune effectors and antigens from a sample or subject.

[089] In certain exemplary embodiments, methods for determining the genetic state of a plurality of individual immune cells (e.g., lymphocytes) at a given point in time (e.g., a "snapshot" of a collection of individual immune cells) are provided. In certain aspects, the identity of heavy and/or light chains (i.e., an immune receptor nucleic acid sequence) for each of a plurality of receptors will be ascertained at one or more given points in time. A collection of immune cell identities is also referred to herein as an "immune repertoire" or a "VDJ-ome."

[090] Embodiments of the characterization methods described herein enable the identification, creation and/or use of rapid response antibodies in diagnostic, therapeutic or research methods. Such rapid response antibodies are expressed quickly, typically within hours, as a result of an immune challenge. According to aspects of the present invention, the rapid response antibodies can be characterized in their breadth of affinity against targets or antigens and their ability to stimulate other required host immune functions, Rapid response antibodies identified by the methods described herein can be used as an initial therapeutic agent to rapidly assist the immune system in responding to a disease or other condition while the immune system develops additional antibodies.

[091] Embodiments of the present invention further include the use of human IGHV3-23- derived sequences or human IGHVl -69-derived sequences identified using high- throughput sequencing in functionally-used antibodies. For purposes of the present invention, derived sequences include the sequence itself, as well as any fragments or mutants thereof.

[092] Major factors in the failure of monoclonal antibody development have been the lack of transition from animal model to human as well as limited capacity of screening sufficient amount of antibody candidates in order to allow efficient discovery of therapeutics. The methods and compositions described herein solve these issues by allowing screening of the immune repertoire or immune response directly from one or more humans, therefore producing antibody candidates that are fully human (i.e., not humanized antibodies), thus avoiding the risks of immunogenicity. In certain aspects, the methods and compositions described herein are not limited in their throughput, allowing screening of an unlimited amount of antibody coding sequences simultaneously, which would not be possible using classical immunological methods.

[093] Since the methods and compositions described herein enable a large amount of sequences to be screened per sample, efficient investigation of the immune reaction in an individual can be performed. For example, the presence of one or more natural immune reaction(s) or specific antibody sequences made by the patient can be used as a diagnostic screen on a subject, e.g., a patient having a current or previous infection. The methods and compositions described herein allow for the instantaneous determination of antibody sequences in an individual at any point in time (e.g., because the RNA and/or DNA coding for the antibody protein is sequenced), instead of having to conduct complex and non-multiplexable protein sequence determination. An overview of certain methods described herein is shown in Figure 5. An application of the methods according to certain aspects of the invention is depicted in Figure 25.

[094] According to certain aspects, methods of characterizing components of an immune response in an individual using high-throughput sequencing methods described herein enable selection of specific antibody sequences, including IgA isotype antibodies, useful in diagnosing a disease or condition, or therapeutically treating a disease or condition. The methods described herein enable methods of comparing immune reaction components in an individual at different points in time (time-series information) which is further useful in assigning function to identified antibodies. Such methods include the identification of antibodies useful in diagnostic or therapeutic methods, and include the identification of human-derived single domain antibodies (nanobodies) which are useful as affinity reagents, for example, as diagnostic or therapeutic biomarkers. The methods describe herein also allow the identification of human-derived sequences using high- throughput sequencing which can then be formatted into different affinity molecules, such as diabodies, nanobodies, doubles scFv and other components defined below as being an antibody.

[095] According to alternate aspects, once the methods described herein are used to identify the components in an individual resulting from an immune response (referred to herein as an immune repertoire), the components can be cloned and expressed to create antibody libraries using either cell-free expression systems or cloning into expression vectors for in-cell expression. The antibodies can then be tested or screened for their ability to bind to antigens, their affinity and/or neutralization ability. In addition, once the methods described herein are used to identify the components in an individual resulting from an immune response, the components can be cloned followed by gene synthesis of selected antibodies based on functional information and then expressed to create antibody libraries using either cell-free expression systems or cloning into expression vectors for in-cell expression. The antibodies can then be tested or screened for their ability to bind to antigens, their affinity and/or neutralization ability. According to certain aspects, the antibodies resulting from the immune response that are identified by the methods described herein can be synthesized using parallel synthesis assembly from oligonucleotides or gene fragment derived standard oligonucleotide synthesis chemistry, from on chip printing synthesis, or any other method known to those skilled in the art.

[096] According to an additional aspect, the antibodies identified by the high-throughput methods described herein are cloned directly into surface-display technologies including yeast, phage, bacterial, mammalian, ribosomal, mRNA display and the like and then screened for functional specificity or affinity or neutralization ability. An additional aspect of this embodiment includes the antibodies being cloned directly into surface- display technologies and then evolved by directed evolution approaches known to those skilled in the art and optionally, characterizing the directed evolution approaches at various points in time, at any step or at any cycle using high-throughput sequencing to identify the state of enrichment, level of diversity, etc. Such directed evolution methods can be performed with a single antigen, multiple antigens, or a large library of antigens in a single reaction.

[097] As used herein, the terms "subject," "individual" and "host" are intended to include living organisms such as mammals. Examples of subjects and hosts include, but are not limited to, horses, cows, camels, sheep, pigs, goats, dogs, cats, rabbits, guinea pigs, rats, mice (e.g., humanized mice), gerbils, non-human primates (e.g., macaques), humans and the like, non-mammals, including, e.g., non-mammalian vertebrates, such as birds (e.g., chickens or ducks) fish (e.g., sharks) or frogs (e.g., Xenopus), and non-mammalian invertebrates, as well as transgenic species thereof.

[098] In certain aspects, a subject refers to a single organism (e.g., human). In certain aspects, or a group of individuals composing a small cohort having either a common immune factor to study and/or disease, and/or a cohort of individuals without the disease (e.g., negative/normal control) are provided. A subject from whom samples are obtained can either be inflicted with a disease and/or disorder (e.g., one or more allergies, infections, cancers or autoimmune disorders or the like) or be injected with an agent (e.g., one or more of a vaccine, an antigen of interest, a drug, a small molecule, a biologic or the like) to stimulate an immune challenge, and be compared against a negative control subject which is not affected by the disease and/or not contacted with the agent.

[099] In certain aspects, one or more biological samples are isolated from one or more subjects.

As used herein, a "biological sample" may be a single cell or many cells. A biological sample may comprise a single cell type or a combination of two or more cell types. A biological sample further includes a collection of cells that perform a similar function such as those found, for example, in a tissue. As used herein, a tissue includes, but is not limited to, epithelial tissue (e.g., skin, the lining of glands, bowel, skin and organs such as the liver, lung, kidney), endothelium (e.g., the lining of blood and lymphatic vessels), mesothelium (e.g., the lining of pleural, peritoneal and pericardial spaces), mesenchyme (e.g., cells filling the spaces between the organs, including fat, muscle, bone, cartilage and tendon cells), blood cells (e.g., red and white blood cells), neurons, germ cells (e.g., spermatozoa, oocytes), amniotic fluid cells, placenta, stem cells and the like. A tissue sample includes microscopic samples as well as macroscopic samples. In certain aspects, a biological sample is peripheral blood. In other aspects, a biological sample is a fluid such as saliva, synovial fluid, or the like. In still other aspects, a biological sample is from one or more cell cultures, tissue sections and/or biopsies.

[0100] In certain exemplary embodiments, an immune cell (e.g., a lymphocyte) fraction is isolated from a biological sample using any technique known to one of ordinary skill in the art. In certain aspects, a lymphocyte fraction is isolated using ficoll centrifugation. In other aspects, a lymphocyte fraction is immobilized on a substrate or a support (e.g., a substrate that binds one or more of B cells and/or T cells). The support can be simple square grids, checkerboard (e.g., offset) grids, hexagonal arrays and the like. Suitable supports include, but are not limited to, slides, beads, chips, particles, strands, gels, sheets, tubing, spheres, containers, capillaries, pads, slices, films, culture dishes, plates (e.g., 96-well, 48-well, 24-well, 12-well, eight- well, six- well, four-well, single-well and the like), cell surfaces (e.g., S. aureus cells) and the like. In various embodiments, a solid support may be biological, non-biological, organic, inorganic, or any combination thereof.

[0101] In certain exemplary embodiments, beads and bead-based arrays are provided. As used herein, the term "bead" refers to a discrete particle that may be spherical (e.g., microspheres) or have an irregular shape. Beads may be as small as approximately 0.1 μιη in diameter or as large approximately several millimeters in diameter. Beads may comprise a variety of materials including, but not limited to, paramagnetic materials, ceramic, plastic, glass, polystyrene, methylstyrene, acrylic polymers, titanium, latex, sepharose, cellulose, nylon and the like.

[0102] In accordance with certain examples, a support (e.g., a bead) may have functional groups attached to its surface which can be used to bind one or more reagents described herein to the bead. One or more reagents can be attached to a support (e.g., a bead) by hybridization, covalent attachment, magnetic attachment, affinity attachment and the like. For example, a support (e.g., a bead) can be coated with a secondary antibody for use with a primary antibody. In another example, a support (e.g., a bead) may be coated with glycidyl ether (epoxy) reactive groups and/or p-toluenesulphonyl (tosyl) reactive groups for use with a primary antibody. Beads coated with a variety of substrates are commercially available (Dynabeads, Invitrogen). Supports (e.g., beads) may also be functionalized using, for example, solid-phase chemistries known in the art (see, e.g., U.S. Pat. No. 5,919,523).

[0103] As used herein, the term "attach" refers to both covalent interactions and noncovalent interactions. A covalent interaction is a chemical linkage between two atoms or radicals formed by the sharing of a pair of electrons (i.e., a single bond), two pairs of electrons

(i.e., a double bond) or three pairs of electrons (i.e., a triple bond). Covalent interactions are also known in the art as electron pair interactions or electron pair bonds. Noncovalent interactions include, but are not limited to, van der Waals interactions, hydrogen bonds, weak chemical bonds (i.e., via short-range noncovalent forces), hydrophobic interactions, ionic bonds and the like. A review of noncovalent interactions can be found in Alberts et al., in Molecular Biology of the Cell, 3d edition, Garland Publishing, 1994. In certain exemplary embodiments, nucleic acid sequences (e.g., DNA and/or RNA) are extracted from immune cells (e.g., lymphocytes, e.g., B cells and/or T cells). In certain aspects, nucleic acid sequences (e.g., DNA and/or RNA) are extracted from one or more enriched fractions immune cells (e.g., lymphocytes, e.g., B cells and/or T cells). In other aspects, nucleic acid sequences (e.g., DNA and/or RNA) are extracted from samples that have not been enriched for immune cells. In certain aspects, specific subsets of cell populations are preliminarily enriched, e.g., using FACS or paramagnetic beads, therefore allowing enrichment of a memory B cell versus plasma cell fraction, which can be useful to increase the quality of the data for downstream use, e.g., for use in prognosing, diagnosing and the like. In certain aspects, at least 25, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1,000, 2,000, 3,000, 4,000, 5,000, 6,000, 7,000, 8,000, 9,000, 10,000, 15,000, 20,000, 25,000, 30,000, 35,000, 40,000, 45,000, 50,000, 55,000, 60,000, 65,000, 70,000, 75,000, 80,000, 85,000, 90,000, 95,000, 100,000, 150,000, 200,000, 250,000, 300,000, 450,000, 500,000, 550,000, 600,000, 650,000, 700,000, 750,000, 800,000, 850,000, 900,000, 950,000, 1,000,000, 1,500,000, 2,000,000, 2,500,000, 3,000,000, 3,500,000, 4,000,000, 4,500,000, 5,000,000, 5,500,000, 6,000,000, 6,500,000, 7,000,000, 7,500,000, 8,000,000, 8,500,000, 9,000,000, 9,500,000, 10,000,000, 20,000,000, 30,000,000, 40,000,000, 50,000,000, 60,000,000, 70,000,000, 80,000,000, 90,000,000, 100,000,000, 200,000,000, 300,000,000, 400,000,000, 500,000,000, 600,000,000, 700,000,000, 800,000,000, 900,000,000, 1,000,000,000, 2,000,000,000, 3,000,000,000, 4,000,000,000, 5,000,000,000, 6,000,000,000, 7,000,000,000, 8,000,000,000, 9,000,000,000, 10,000,000,000, 15,000,000,000, 20,000,000,000, 30,000,000,000, 40,000,000,000, 50,000,000,000, 60,000,000,000, 70,000,000,000, 80,000,000,000, 90,000,000,000, 100,000,000,000, 200,000,000,000, 300,000,000,000, 400,000,000,000, 500,000,000,000, 600,000,000,000, 700,000,000,000, 800,000,000,000, 900,000,000,000, 1,000,000,000,000, 2,000,000,000,000, 3,000,000,000,000, 4,000,000,000,000, 5,000,000,000,000, 6,000,000,000,000, 7,000,000,000,000, 8,000,000,000,000, 9,000,000,000,000, 10,000,000,000,000 or more different nucleic acid sequences (e.g., DNA (e.g., genomic) and/or RNA (e.g., mRNA)) or any values in between and/or range(s) defined by the above numbers or ranges in between or overlapping are extracted from immune cells.

[0105] In certain exemplary embodiments, non-specific primers, degenerate primers, or specific primers (e.g., primers that hybridize to J and/or C-regions for the heavy and/or light chains of B or T cells) are used to amplify nucleic acid sequences (e.g., DNA and/or RNA). In certain aspects, cDNA (if using mRNA) or DNA (if using genomic DNA) is amplified by PCR using primer sets that hybridize to the antibody coding gene of the heavy and light chains of B cells and/or T cells. In certain aspects, the one set of primers hybridizes to V regions and another set of primers hybridizes to the C regions. In other aspects, certain primer sets hybridize to other locations on the V region or upstream in the leaders region (which is favorable for RNA sample, allowing amplification of properly spliced RNA converted cDNA and not of DNA), while other primer sets hybridize downstream of the C-region, and/or to the J region.

[0106] In certain aspects, a segment spanning the CDR3 region is amplified using primers that hybridize to either side of the CDR3 region. The further apart the primers are on the VD J segments, the more antibody sequence will be recovered and sequenced, thus adding additional immune state information (e.g., information regarding CDR1, CDR2 and

CDR3 regions and/or hypermutation(s) across the antibody coding segments). Because there are many V, D, J and C regions, degenerate primers can be designed that hybridize to many segments, or a single primer sequence can be used for each of these segments in order to amplify representatively the repertoire of the subject (e.g., via multiplex PCR).

In other aspects, amplification of a very specific unique set of VDJ combination is performed using one set of primers. In certain aspects, pull down-assays can be used to enrich immune cell nucleic acid sequences (e.g., RNA and/or DNA). In certain aspects, a pull-down assay using either RNA or DNA probe complementary to some part of the VDJ segments of interests is performed. In certain aspects, labels are used to enrich immune cell nucleic acid sequences (e.g., RNA and/or DNA) (e.g., fluorophores for FACS sorting, biotin with streptavidin, covalently coated beads, and the like). Targeted enrichment strategies can also be used such as the use of molecular inversion probes, or by the use of array hybridization. As used herein, the term "hybridization" refers to the process in which two single- stranded polynucleotides bind non-covalently to form a stable double-stranded polynucleotide. The term "hybridization" may also refer to triple-stranded hybridization. The resulting (usually) double-stranded polynucleotide is a "hybrid" or "duplex." "Hybridization conditions" will typically include salt concentrations of less than about 1 M, more usually less than about 500 mM and even more usually less than about 200 mM. Hybridization temperatures can be as low as 5 °C, but are typically greater than 22 °C, more typically greater than about 30 °C, and often in excess of about 37 °C. Hybridizations are usually performed under stringent conditions, i.e., conditions under which a probe will hybridize to its target subsequence. Stringent conditions are sequence-dependent and are different in different circumstances. Longer fragments may require higher hybridization temperatures for specific hybridization. As other factors may affect the stringency of hybridization, including base composition and length of the complementary strands, presence of organic solvents and extent of base mismatching, the combination of parameters is more important than the absolute measure of any one alone. Generally, stringent conditions are selected to be about 5 °C lower than the Tm for the specific sequence at s defined ionic strength and pH. Exemplary stringent conditions include salt concentration of at least 0.01 M to no more than 1 M Na ion concentration (or other salts) at a pH 7.0 to 8.3 and a temperature of at least 25 °C. For example, conditions of 5XSSPE (750 mM NaCl, 50 mM Na phosphate, 5 mM EDTA, pH 7.4) and a temperature of 25-30 °C are suitable for allele-specific probe hybridizations. For stringent conditions, see for example, Sambrook, Fritsche and Maniatis, Molecular Cloning A Laboratory Manual, 2nd Ed. Cold Spring Harbor Press (1989) and Anderson Nucleic Acid Hybridization, 1st Ed., BIOS Scientific Publishers Limited (1999). "Hybridizing specifically to" or "specifically hybridizing to" or like expressions refer to the binding, duplexing, or hybridizing of a molecule substantially to or only to a particular nucleotide sequence or sequences under stringent conditions when that sequence is present in a complex mixture (e.g., total cellular) DNA or RNA.

[0108] In certain exemplary embodiments, methods for amplifying nucleic acid sequences are provided. Exemplary methods for amplifying nucleic acids include the polymerase chain reaction (PCR) (see, e.g., Mullis et al. (1986) Cold Spring Harb. Symp. Quant. Biol. 51 Pt 1 :263 and Cleary et al. (2004) Nature Methods 1 :241 ; and U.S. Patent Nos. 4,683,195 and 4,683,202), anchor PCR, RACE PCR, ligation chain reaction (LCR) (see, e.g., Landegran et al. (1988) Science 241 :1077-1080; and Nakazawa et al. (1994) Proc. Natl. Acad. Sci. U.S.A. 91 :360-364), self sustained sequence replication (Guatelli et al. (1990) Proc. Natl. Acad. Sci. U.S.A. 87:1874), transcriptional amplification system (Kwoh et al. (1989) Proc. Natl. Acad. Sci. U.S.A. 86: 1 173), Q-Beta Replicase (Lizardi et al. (1988) BioTechnology 6: 1 197), recursive PCR (Jaffe et al. (2000) J. Biol. Chem. 275:2619; and Williams et al. (2002) J. Biol. Chem. 277:7790), the amplification methods described in U.S. Patent Nos. 6,391 ,544, 6,365,375, 6,294,323, 6,261,797, 6,124,090 and 5,612,199, isothermal amplification (e.g., rolling circle amplification (RCA), hyperbranched rolling circle amplification (HRCA), strand displacement amplification (SDA), helicase- dependent amplification (HDA), PWGA) or any other nucleic acid amplification method using techniques well known to those of skill in the art.

[0109] "Polymerase chain reaction," or "PCR," refers to a reaction for the in vitro amplification of specific DNA sequences by the simultaneous primer extension of complementary strands of DNA. In other words, PCR is a reaction for making multiple copies or replicates of a target nucleic acid flanked by primer binding sites, such reaction comprising one or more repetitions of the following steps: (i) denaturing the target nucleic acid, (ii) annealing primers to the primer binding sites, and (iii) extending the primers by a nucleic acid polymerase in the presence of nucleoside triphosphates. Usually, the reaction is cycled through different temperatures optimized for each step in a thermal cycler instrument. Particular temperatures, durations at each step, and rates of change between steps depend on many factors well-known to those of ordinary skill in the art, e.g., exemplified by the references: McPherson et al., editors, PCR: A Practical Approach and PCR2: A Practical Approach (IRL Press, Oxford, 1991 and 1995, respectively). For example, in a conventional PCR using Taq DNA polymerase, a double stranded target nucleic acid may be denatured at a temperature greater than 90 °C, primers annealed at a temperature in the range 50-75 °C, and primers extended at a temperature in the range 72-78 °C. The term "PCR" encompasses derivative forms of the reaction, including but not limited to, RT-PCR, real-time PCR, nested PCR, quantitative PCR, multiplexed PCR, assembly PCR and the like. Reaction volumes range from a few hundred nanoliters, e.g., 200 nL, to a few hundred microliters, e.g., 200 microliters. "Reverse transcription PCR," or "RT- PCR," means a PCR that is preceded by a reverse transcription reaction that converts a target RNA to a complementary single stranded DNA, which is then amplified, e.g., Tecott et al., U.S. Patent No. 5,168,038. "Real-time PCR" means a PCR for which the amount of reaction product, i.e., amplicon, is monitored as the reaction proceeds. There are many forms of real-time PCR that differ mainly in the detection chemistries used for monitoring the reaction product, e.g., Gelfand et al., U.S. Patent No. 5,210,015 ("Taqman"); Wittwer et al, U.S. Patent Nos. 6,174,670 and 6,569,627 (intercalating dyes); Tyagi et al., U.S. Patent No. 5,925,517 (molecular beacons). Detection chemistries for real-time PCR are reviewed in Mackay et al., Nucleic Acids Research, 30: 1292-1305 (2002). "Nested PCR" means a two-stage PCR wherein the amplicon of a first PCR becomes the sample for a second PCR using a new set of primers, at least one of which binds to an interior location of the first amplicon. As used herein, "initial primers" in reference to a nested amplification reaction mean the primers used to generate a first amplicon, and "secondary primers" mean the one or more primers used to generate a second, or nested, amplicon. "Multiplexed PCR" means a PCR wherein multiple target sequences (or a single target sequence and one or more reference sequences) are simultaneously carried out in the same reaction mixture, e.g. Bernard et al. (1999) Anal. Biochem., 273 :221-228 (two-color real-time PCR). Usually, distinct sets of primers are employed for each sequence being amplified. "Quantitative PCR" means a PCR designed to measure the abundance of one or more specific target sequences in a sample or specimen. Techniques for quantitative PCR are well-known to those of ordinary skill in the art, as exemplified in the following references: Freeman et al., Biotechniques, 26: 112- 126 (1999); Becker-Andre et al, Nucleic Acids Research, 17:9437-9447 (1989); Zimmerman et al., Biotechniques, 21 :268-279 (1996); Diviacco et al., Gene, 122:3013- 3020 (1992); Becker-Andre et al., Nucleic Acids Research, 17:9437-9446 (1989); and the like. In certain exemplary embodiments, methods of determining the sequence identities of nucleic acid sequences are provided. Determination of the sequence of a nucleic acid sequence of interest (e.g., immune cell nucleic acid sequences) can be performed using variety of sequencing methods known in the art including, but not limited to, sequencing by hybridization (SBH), sequencing by ligation (SBL), quantitative incremental fluorescent nucleotide addition sequencing (QIFNAS), stepwise ligation and cleavage, fluorescence resonance energy transfer (FRET), molecular beacons, TaqMan reporter probe digestion, pyrosequencing, fluorescent in situ sequencing (FISSEQ), FISSEQ beads (U.S. Pat. No. 7,425,431), wobble sequencing (PCT US05/27695), multiplex sequencing (U.S. Serial No. 12/027,039, filed February 6, 2008; Porreca et al (2007) Nat. Methods 4:931), polymerized colony (POLONY) sequencing (U.S. Patent Nos. 6,432,360, 6,485,944 and 6,511,803, and PCT/US05/06425); nanogrid rolling circle sequencing (ROLONY) (U.S. Serial No. 12/120,541, filed May 14, 2008), allele-specific oligo ligation assays (e.g., oligo ligation assay (OLA), single template molecule OLA using a ligated linear probe and a rolling circle amplification (RCA) readout, ligated padlock probes, and/or single template molecule OLA using a ligated circular padlock probe and a rolling circle amplification (RCA) readout) and the like. High-throughput sequencing methods, e.g., on cyclic array sequencing using platforms such as Roche 454, Illumina Solexa, ABI-SOLiD, ION Torrents, Complete Genomics, Pacific Bioscience, Helicos, Polonator platforms (Worldwide Web Site: Polonator.org), and the like, can also be utilized. High-throughput sequencing methods are described in U.S. Serial No. 61/162,913, filed March 24, 2009. A variety of light-based sequencing technologies are known in the art (Landegren et al. (1998) Genome Res. 8:769-76; Kwok (2000) Pharmocogenomics 1 :95-100; and Shi (2001) Clin. Chem. 47: 164-172).

[0112] In certain exemplary embodiments, enriched VDJ segments are transformed so that they can be compatible with next-generation high-throughput sequencing technologies. In certain aspects, compatible sequencing adapters are ligated or added using PCR and primers with overhang on the VDJ segments. In other aspects, the adapter is bar-coded so that many samples can be pooled together and sequenced on a single instrument run. According to one aspect, samples belonging to the same research study are processed as much as possible in the same manner at the same time to achieve high degree of correlation and maximize quality of the data obtained. Ideally, read length should be sufficient to enable the identification of each V, D, and J, segment originated from each unique molecule. Use of bar-coding can also be used to achieve remapping of short segments to their original starting molecule (PMID: 20081835).

[0113] In certain exemplary embodiments, sequencing data are aligned against known or expected V, D and J segments using personal database, NCBI databases, IMGT databases or the like to aid in the identification of V, D and J segments. In this manner, V and J segments can be identified, allowing the extraction of the central junctional region of the

V with D and D with J segments, composing the CDR3 region. All the sequencing reads

(e.g., millions), can be binned according to their V and J usage, and clustered for their unique CDR3 using various clustering algorithms described herein. This will allow grouping of highly similar VDJ segments into VDJ clones, which likely encode for the same or a highly similar antibody. Each read (or unique VDJ segments sequenced) and/or each VDJ clone (or highly similar VDJ segments from a same cluster group) can then be analyzed for biological relevancy (e.g., for a disease, disorder and/or immune response).

[0114] Clone frequency can be plotted to examine reproducibility among experiments and/or to identify unique or relevant VDJ clones of different expression across different samples or cohorts. In the case of time course study, clone frequency can be plotted in a time course plot to identify the dynamic of expression of the antibody expressed in the subject (Figure 4A). This allows for zoning on potential antibody sequences that are part of the immune response against the immune challenge that represents potential therapeutic or relevant biomarkers against the immune challenge (Figure 4B). In the case of static analysis research for a disease (for example various samples from a cohort having a disease against a cohort not having the disease), comparative clustering of which sequence has been made and at which frequency in one cohort against another can reveal therapeutics or biomarker candidates. Further study of the divergence of an antibody sequence (such as somatic hyper-mutation accumulation) of VDJ reads or clones can also be used to reveal potential candidates of interest as well as other biological information that can be derived from the data such as isotype distribution of the antibodies (such as IgA, IgD, IgE, IgG and IgM), which can be used to focus on a specific type of antibody or pseudo- spectratyping, for example.

[0115] In certain exemplary embodiments, methods of determining and/or analyzing an immune state of an individual include the step obtaining immune cells from a biological sample are provided. As used herein, the term "immune cell" is intended to include, but is not limited to, a cell that is of hematopoietic origin and that plays a role in the immune response. Immune cells include, but are not limited to, lymphocytes, such as B cells and T cells; natural killer cells; and myeloid cells, such as monocytes, macrophages, eosinophils, mast cells, basophils, and granulocytes.

[0116] The term "antigen presenting cell" includes professional antigen presenting cells (e.g., B lymphocytes, monocytes, dendritic cells, and Langerhans cells) as well as other antigen presenting cells (e.g., keratinocytes, endothelial cells, astrocytes, fibroblasts, and oligodendrocytes).

[0117] As used herein, the term "immune response" includes, but is not limited to, T cell- mediated and/or B cell-mediated immune responses that are influenced by modulation of T cell costimulation. Exemplary immune responses include B cell responses (e.g., antibody production) T cell responses (e.g., cytokine production, and cellular cytotoxicity) and activation of cytokine responsive cells, e.g., macrophages. As used herein, the term "down-modulation" with reference to the immune response includes a diminution in any one or more immune responses, while the term "up-modulation" with reference to the immune response includes an increase in any one or more immune responses. It will be understood that up-modulation of one type of immune response may lead to a corresponding down-modulation in another type of immune response. For example, up-modulation of the production of certain cytokines (e.g., IL-10) can lead to down-modulation of cellular immune responses.

[0118] As used herein, the term "antibody" refers to immunoglobulin molecules and immunologically active portions of immunoglobulin molecules, i.e., molecules that contain an antigen binding site which specifically binds (immunoreacts with) an antigen.

The term "antibody" is understood in its full general term to include components in the immune chain including an antibody, immunoglobulin, B cell receptor, antibody heavy chain, antibody light chain, T cell receptor (TCR), TCR alpha chain, TCR beta chain,

TCR gamma chain, TCR delta chain or any variations or modification of antibody chains and further including scFV, Fab, Fab2, Fab3, Bis-scFv, minibody, triabody, diabody, tetrabody, nanobody and any and all various isotype variants of antibodies including IgG,

IgA, IgD, IgM and IgE. Examples of immunologically active portions of immunoglobulin molecules include F(ab) and F(ab')2 fragments which can be generated by treating the antibody with an enzyme such as pepsin. In certain exemplary embodiments, polyclonal and monoclonal antibodies are provided that bind one or more immune cell antigens. The terms "monoclonal antibody" and "monoclonal antibody composition," as used herein, refer to a population of antibody molecules that contains only one species of an antigen binding site capable of immunoreacting with a particular epitope of an immune cell antigen. A monoclonal antibody composition thus typically displays a single binding affinity for a particular immune cell antigen with which it immunoreacts.

[0119] In certain exemplary embodiments, screening assays for identifying immune system modulators, i.e., candidate or test compounds or agents (e.g., antibodies, peptides, cyclic peptides, peptidomimetics, small molecules, small organic molecules, or other drugs) are provided. The test compounds described herein can be obtained using any of the numerous approaches in combinatorial library methods known in the art, including: biological libraries; spatially addressable parallel solid phase or solution phase libraries; synthetic library methods requiring deconvolution; the "one-bead one-compound" library method; and synthetic library methods using affinity chromatography selection. The biological library approach is limited to peptide libraries, while the other four approaches are applicable to peptide, non-peptide oligomer or small molecule libraries of compounds (Lam, K. S. (1997) Anticancer Drug Des. 12:145).

[0120] In certain exemplary embodiments, one or more agents or pharmaceutically acceptable salts thereof described herein are provided in a pharmaceutically acceptable carrier. As used herein, the language "pharmaceutically acceptable carrier" is intended to include any and all solvents, dispersion media, coatings, antibacterial and antifungal agents, isotonic and absorption delaying agents, and the like, compatible with pharmaceutical administration. The use of such media and agents for pharmaceutically active substances is well known in the art. Except insofar as any conventional media or agent is incompatible with the active compound, use thereof in the compositions is contemplated.

Supplementary active compounds can also be incorporated into the compositions.

Pharmaceutically acceptable carriers and their formulations are known to those skilled in the art and described, for example, in Remington's Pharmaceutical Sciences, (19th edition), ed. A. Gennaro, 1995, Mack Publishing Company, Easton, PA. [0121] In certain exemplary embodiments, pharmaceutical formulations of one or more agents described herein or pharmaceutically acceptable salts thereof, are administered by intravenous injection, intraperitoneal injection, oral administration or by other parenteral routes (e.g. intradermal, subcutaneous, oral (e.g., inhalation), transdermal (topical), transmucosal, and rectal administration), or by intrathecal and intraventricular injections into the CNS, in an admixture with a pharmaceutically acceptable carrier adapted for the route of administration.

[0122] Solutions or suspensions used for parenteral, intradermal, subcutaneous or central nervous system application can include the following components: a sterile diluent such as water for injection, saline solution, fixed oils, polyethylene glycols, glycerin, propylene glycol or other synthetic solvents; antibacterial agents such as benzyl alcohol or methyl parabens; antioxidants such as ascorbic acid or sodium bisulfite; chelating agents such as ethylenediaminetetraacetic acid; buffers such as acetates, citrates or phosphates and agents for the adjustment of tonicity such as sodium chloride or dextrose. pH can be adjusted with acids or bases, such as hydrochloric acid or sodium hydroxide. The parenteral preparation can be enclosed in ampoules, disposable syringes or multiple dose vials made of glass or plastic.

[0123] Methods well known in the art for making formulations are found, for example, in

Remington's Pharmaceutical Sciences (19th edition), ed. A. Gennaro, 1995, Mack

Publishing Company, Easton, PA. Compositions intended for oral use may be prepared in solid or liquid forms according to any method known to the art for the manufacture of pharmaceutical compositions. The compositions may optionally contain sweetening, flavoring, coloring, perfuming, and/or preserving agents in order to provide a more palatable preparation. Solid dosage forms for oral administration include capsules, tablets, pills, powders, and granules. In such solid forms, the active compound is admixed with at least one inert pharmaceutically acceptable carrier or excipient. These may include, for example, inert diluents, such as calcium carbonate, sodium carbonate, lactose, sucrose, starch, calcium phosphate, sodium phosphate, or kaolin. Binding agents, buffering agents, and/or lubricating agents (e.g., magnesium stearate) may also be used. Tablets and pills can additionally be prepared with enteric coatings.

[0124] Pharmaceutical compositions suitable for injectable use include sterile aqueous solutions (where water soluble) or dispersions and sterile powders for the extemporaneous preparation of sterile injectable solutions or dispersion. For intravenous administration, suitable carriers include physiological saline, bacteriostatic water, C EMOPHOR EL™ (BASF, Parsippany, NJ) or phosphate buffered saline (PBS). In all cases, the composition must be sterile and should be fluid to the extent that easy syringability exists. It must be stable under the conditions of manufacture and storage and must be preserved against the contaminating action of microorganisms such as bacteria and fungi. The carrier can be a solvent or dispersion medium containing, for example, water, ethanol, polyol (for example, glycerol, propylene glycol, and liquid polyethylene glycol, and the like), and suitable mixtures thereof. The proper fluidity can be maintained, for example, by the use of a coating such as lecithin, by the maintenance of the required particle size in the case of dispersion and by the use of surfactants. Prevention of the action of microorganisms can be achieved by various antibacterial and antifungal agents, for example, parabens, chlorobutanol, phenol, ascorbic acid, thimerosal, and the like. In certain exemplary embodiments, isotonic agents, for example, sugars, polyalcohols such as mannitol, sorbitol, and/or sodium chloride, will be included in the composition. Prolonged absorption of the injectable compositions can be brought about by including in the composition an agent which delays absorption, for example, aluminum monostearate and gelatin.

[0125] Sterile, injectable solutions can be prepared by incorporating agents described herein or pharmaceutically acceptable salts thereof in the required amount in an appropriate solvent with one or a combination of ingredients enumerated above, as required, followed by filtered sterilization. Generally, dispersions are prepared by incorporating the active compound into a sterile vehicle which contains a basic dispersion medium and the required other ingredients from those enumerated above. In the case of sterile powders for the preparation of sterile injectable solutions, exemplary methods of preparation are vacuum drying and freeze-drying which yields a powder of the active ingredient plus any additional desired ingredient from a previously sterile-filtered solution thereof.

[0126] Oral compositions generally include an inert diluent or an edible carrier. They can be enclosed in gelatin capsules or compressed into tablets. For the purpose of oral therapeutic administration, the active compound can be incorporated with excipients and used in the form of tablets, troches, or capsules. Oral compositions can also be prepared using a fluid carrier for use as a mouthwash, wherein the compound in the fluid carrier is applied orally and swished and expectorated or swallowed. Pharmaceutically compatible binding agents, and/or adjuvant materials can be included as part of the composition. The tablets, pills, capsules, troches and the like can contain any of the following ingredients, or compounds of a similar nature: A binder such as microcrystalline cellulose, gum tragacanth or gelatin; an excipient such as starch or lactose, a disintegrating agent such as alginic, acid, Primogel, or corn starch; a lubricant such as magnesium stearate or Sterotes; a glidant: such as colloidal silicon dioxide; a sweetening agent such as sucrose or saccharin; or a flavoring agent such as peppermint, methyl salicylate, or orange flavoring.

[0127] In one embodiment, one or more agents described herein or pharmaceutically acceptable salts thereof are prepared with carriers that will protect the compound against rapid elimination from the body, such as a controlled release formulation, including implants and microencapsulated delivery systems. Biodegradable, biocompatible polymers can be used, such as ethylene vinyl acetate, polyanhydrides, polyglycolic acid, collagen, polyorthoesters, and polylactic acid. Methods for preparation of such formulations will be apparent to those skilled in the art. The materials can also be obtained commercially from Alza Corporation and Nova Pharmaceuticals, Inc. Liposomal suspensions (including liposomes targeted to infected cells with monoclonal antibodies to viral antigens) can also be used as pharmaceutically acceptable carriers. These may be prepared according to methods known to those skilled in the art, for example, as described in U.S. Patent No. 4,522,811. [0128] Nasal compositions generally include nasal sprays and inhalants. Nasal sprays and inhalants can contain one or more active components and excipients such as preservatives, viscosity modifiers, emulsifiers, buffering agents and the like. Nasal sprays may be applied to the nasal cavity for local and/or systemic use. Nasal sprays may be dispensed by a non-pressurized dispenser suitable for delivery of a metered dose of the active component. Nasal inhalants are intended for delivery to the lungs by oral inhalation for local and/or systemic use. Nasal inhalants may be dispensed by a closed container system for delivery of a metered dose of one or more active components.

[0129] In one embodiment, nasal inhalants are used with an aerosol. This is accomplished by preparing an aqueous aerosol, liposomal preparation or solid particles containing the compound. A non-aqueous (e.g., fluorocarbon propellant) suspension could be used. Sonic nebulizers may be used to minimize exposing the agent to shear, which can result in degradation of the compound.

[0130] Ordinarily, an aqueous aerosol is made by formulating an aqueous solution or suspension of the agent together with conventional pharmaceutically acceptable carriers and stabilizers. The carriers and stabilizers vary with the requirements of the particular compound, but typically include nonionic surfactants (T weens, Pluronics, or polyethylene glycol), innocuous proteins like serum albumin, sorbitan esters, oleic acid, lecithin, amino acids such as glycine, buffers, salts, sugars or sugar alcohols. Aerosols generally are prepared from isotonic solutions.

[0131] Systemic administration can also be by transmucosal or transdermal means. For transmucosal or transdermal administration, penetrants appropriate to the barrier to be permeated are used in the formulation. Such penetrants are generally known in the art, and include, for example, for transmucosal administration, detergents, bile salts, and fusidic acid derivatives. Transmucosal administration can be accomplished through the use of nasal sprays or suppositories. For transdermal administration, the active compounds are formulated into ointments, salves, gels, or creams as generally known in the art.

[0132] One or more agents described herein or pharmaceutically acceptable salts thereof can also be prepared in the form of suppositories (e.g., with conventional suppository bases such as cocoa butter and other glycerides) or retention enemas for rectal delivery.

[0133] In one embodiment, one or more agents described herein or pharmaceutically acceptable salts thereof are prepared with carriers that will protect them against rapid elimination from the body, such as a controlled release formulation, including implants and microencapsulated delivery systems. Biodegradable, biocompatible polymers can be used, such as ethylene vinyl acetate, polyanhydrides, polyglycolic acid, collagen, polyorthoesters, and polylactic acid. Methods for preparation of such formulations will be apparent to those skilled in the art. The materials can also be obtained commercially from Alza Corporation and Nova Pharmaceuticals, Inc. Liposomal suspensions (including liposomes targeted to infected cells with monoclonal antibodies to viral antigens) can also be used as pharmaceutically acceptable carriers. These can be prepared according to methods known to those skilled in the art, for example, as described in U.S. Patent No. 4,522,81 1.

[0134] It is especially advantageous to formulate oral, parenteral or CNS direct delivery compositions in dosage unit form for ease of administration and uniformity of dosage. Dosage unit form as used herein refers to physically discrete units suited as unitary dosages for the subject to be treated; each unit containing a predetermined quantity of active compound calculated to produce the desired therapeutic effect in association with the required pharmaceutical carrier. The specification for the dosage unit forms of the invention are dictated by and directly dependent on the unique characteristics of the active compound and the particular therapeutic effect to be achieved, and the limitations inherent in the art of compounding such an active compound for the treatment of individuals. [0135] Toxicity and therapeutic efficacy of one or more agents described herein or pharmaceutically acceptable salts thereof can be determined by standard pharmaceutical procedures in cell cultures, experimental animals or in an individual, e.g., in a human. The dose ratio between toxic and therapeutic effects is the therapeutic index and it can be expressed as the ratio LD50/ED50. Compounds which exhibit large therapeutic indices are preferred. While compounds that exhibit toxic side effects may be used, care should be taken to design a delivery system that targets such compounds to the site of affected tissue in order to minimize potential damage to uninfected cells and, thereby, reduce side effects.

[0136] Data obtained from monitoring the immune state of an individual can be used in formulating a range of dosage for use in the individual (e.g., personalized medicine). The dosage typically will lie within a range of circulating concentrations that include the ED50 with little or no toxicity. The dosage may vary within this range depending upon the dosage form employed and the route of administration utilized. For any compound used in the method of the invention, the therapeutically effective dose can be estimated initially from cell culture assays. A dose may be formulated in animal models to achieve a circulating plasma concentration range that includes the IC50 (i.e., the concentration of the test compound which achieves a half-maximal inhibition of symptoms) as determined in cell culture. Such information can be used to more accurately determine useful doses in humans. Levels in plasma may be measured, for example, by high performance liquid chromatography.

[0137] Monitoring the influence of a pharmaceutical composition on the immune response of an individual can be applied not only in basic drug screening, but also in clinical trials. For example, the effectiveness of a pharmaceutical composition determined by a screening assay as described herein to alter the immune response of a subject can be monitored in clinical trials. [0138] In certain exemplary embodiments, a method for monitoring the effectiveness of treatment of a subject with an agent described herein including the steps of (i) obtaining a pre-administration sample from a subject prior to administration of the agent; (ii) detecting the level of expression of one or more immune system nucleic acid sequences in the preadministration sample; (iii) obtaining one or more post-administration samples from the subject; (iv) detecting the level of one or more immune system nucleic acid sequences in the post-administration samples; (v) comparing the level of expression of one or more immune system nucleic acid sequences in the pre-administration sample with the level of expression of one or more immune system nucleic acid sequences in the post administration sample or samples; and (vi) altering the administration of the agent to the subject accordingly, is provided. According to such an embodiment, altered expression levels of one or more immune system nucleic acid sequences may be used as an indicator of the effectiveness of an agent, even in the absence of an observable phenotypic response.

[0139] In certain exemplary embodiments, a method for diagnosing, prognosing, monitoring, treating, ameliorating and/or preventing in a subject a disease, disorder, symptom and/or condition is provided. Subjects at risk for a disease and/or disorder described herein can be identified by, for example, by any or a combination of diagnostic or prognostic assays as described herein. Administration of a prophylactic agent can occur prior to the manifestation of symptoms characteristic of a disease or disorder, such that the disease or disorder is prevented or, alternatively, delayed in its progression. Depending on the type disease or disorder, one or more agents or pharmaceutically acceptable salts thereof can be used for treating the subject. The appropriate agent can be determined based on screening assays described herein.

[0140] In certain exemplary embodiments, methods of prognosing, diagnosing and/or monitoring one or more disorders or diseases associated with an infectious agent are provided. Infectious agents include, but are not limited to, viruses, bacteria, fungi, parasites, infectious proteins and the like. [0141] Viruses include, but are not limited to, DNA or RNA animal viruses. As used herein, RNA viruses include, but are not limited to, virus families such as Picornaviridae (e.g., polioviruses), Reoviridae (e.g., rotaviruses), Togaviridae (e.g., encephalitis viruses, yellow fever virus, rubella virus), Orthomyxoviridae (e.g., influenza viruses), Paramyxoviridae (e.g., respiratory syncytial virus, measles virus, mumps virus, parainfluenza virus), Rhabdoviridae (e.g., rabies virus), Coronaviridae, Bunyaviridae, Flaviviridae, Filoviridae, Arenaviridae, Bunyaviridae and Retroviridae (e.g., human T cell lymphotropic viruses (HTLV), human immunodeficiency viruses (HIV)). As used herein, DNA viruses include, but are not limited to, virus families such as Papovaviridae (e.g., papilloma viruses), Adenoviridae (e.g., adenovirus), Herpesviridae (e.g., herpes simplex viruses), and Poxviridae (e.g., variola viruses).

[0142] Bacteria include, but are not limited to, gram positive bacteria, gram negative bacteria, acid-fast bacteria and the like.

[0143] As used herein, gram positive bacteria include, but are not limited to, Actinomedurae, Actinomyces israelii, Bacillus anthracis, Bacillus cereus, Clostridium botulinum, Clostridium difficile, Clostridium perfringens, Clostridium tetani, Corynebacterium, Enterococcus faecalis, Listeria monocytogenes, Nocardia, Propionibacterium acnes, Staphylococcus aureus, Staphylococcus epiderm, Streptococcus mutans, Streptococcus pneumoniae and the like.

[0144] As used herein, gram negative bacteria include, but are not limited to, Afipia felis,

Bacteriodes, Bartonella bacilliformis, Bortadella pertussis, Borrelia burgdorferi,

Borrelia recurrentis, Brucella, Calymmatobacterium granulomatis, Campylobacter,

Escherichia coli, Francisella tularensis, Gardnerella vaginalis, Haemophilius aegyptius,

Haemophilius ducreyi, Haemophilius influenziae, Heliobacter pylori, Legionella pneumophila, Leptospira interrogans, Neisseria meningitidia, Porphyromonas gingivalis,

Providencia sturti, Pseudomonas aeruginosa, Salmonella enteridis, Salmonella typhi,

Serratia marcescens, Shigella boydii, Streptobacillus moniliformis, Streptococcus pyogenes, Treponema pallidum, Vibrio cholerae, Yersinia enterocolitica, Yersinia pestis and the like.

[0145] As used herein, acid-fast bacteria include, but are not limited to, Myobacterium avium, Myobacterium leprae, Myobacterium tuberculosis and the like.

[0146] As used herein, other bacteria not falling into the other three categories include, but are not limited to, Bartonella henselae, Chlamydia psittaci, Chlamydia trachomatis, Coxiella burnetii, Mycoplasma pneumoniae, Rickettsia akari, Rickettsia prowazekii, Rickettsia rickettsii, Rickettsia tsutsugamushi, Rickettsia typhi, Ureaplasma urealyticum, Diplococcus pneumoniae, Ehrlichia chafensis, Enterococcus faecium, Meningococci and the like.

[0147] As used herein, fungi include, but are not limited to, Aspergilli, Candidae, Candida albicans, Coccidioides immitis, Cryptococci, and combinations thereof.

[0148] As used herein, parasitic microbes include, but are not limited to, Balantidium coli, Cryptosporidium parvum, Cyclospora cayatanensis, Encephalitozoa, Entamoeba histolytica, Enter ocytozoon bieneusi, Giardia lamblia, Leishmaniae, Plasmodii, Toxoplasma gondii, Trypanosomae, trapezoidal amoeba and the like.

[0149] As used herein, parasites include worms (e.g., helminthes), particularly parasitic worms including, but not limited to, Nematoda (roundworms, e.g., whipworms, hookworms, pinworms, ascarids, filarids and the like), Cestoda (e.g., tapeworms)

[0150] As used herein, infectious proteins include prions. Disorders caused by prions include, but are not limited to, human disorders such as Creutzfeldt- Jakob disease (CJD) (including, e.g., iatrogenic Creutzfeldt- Jakob disease (iCJD), variant Creutzfeldt- Jakob disease (vCJD), familial Creutzfeldt-Jakob disease (fCJD), and sporadic Creutzfeldt- Jakob disease (sCJD)), Gerstmann-Straussler-Scheinker syndrome (GSS), fatal familial insomnia (fFi), sporadic fatal insomnia (sFI), kuru, and the like, as well as disorders in animals such as scrapie (sheep and goats), bovine spongiform encephalopathy (BSE) (cattle), transmissible mink encephalopathy (TME) (mink), chronic wasting disease (CWD) (elk, mule deer), feline spongiform encephalopathy (cats), exotic ungulate encephalopathy (EUE) (nyala, oryx, greater kudu), spongiform encephalopathy of the ostrich and the like.

[0151] In certain exemplary embodiments, methods of prognosing, diagnosing and/or monitoring one or more cellular proliferative disorders are provided. Cellular proliferative disorders are intended to include disorders associated with rapid proliferation. As used herein, the term "cellular proliferative disorder" includes disorders characterized by undesirable or inappropriate proliferation of one or more subset(s) of cells in a multicellular organism. The term "cancer" refers to various types of malignant neoplasms, most of which can invade surrounding tissues, and may metastasize to different sites (see, for example, PDR Medical Dictionary 1st edition (1995), incorporated herein by reference in its entirety for all purposes). The terms "neoplasm" and "tumor" refer to an abnormal tissue that grows by cellular proliferation more rapidly than normal. Id. Such abnormal tissue shows partial or complete lack of structural organization and functional coordination with the normal tissue which may be either benign (i.e., benign tumor) or malignant (i.e., malignant tumor).

[0152] The language "treatment of cellular proliferative disorders" is intended to include the prevention of the induction, onset, establishment or growth of neoplasms in a subject or a reduction in the growth of pre-existing neoplasms in a subject. The language also can describe inhibition of the invasion of neoplastic cells into neighboring tissues or the metastasis of a neoplasm from one site to another. Examples of the types of neoplasms intended to be encompassed by the present invention include but are not limited to those neoplasms associated with cancers of the breast, skin, bone, prostate, ovaries, uterus, cervix, liver, lung, brain, larynx, gallbladder, pancreas, rectum, parathyroid, thyroid, adrenal gland, immune system, neural tissue, head and neck, colon, stomach, bronchi, and/or kidneys.

[0153] Cellular proliferative disorders can further include disorders associated with hyperproliferation of vascular smooth muscle cells such as proliferative cardiovascular disorders, e.g., atherosclerosis and restenosis. Cellular proliferation disorders can also include disorders such as proliferative skin disorders, e.g., X-linked ichthyosis, psoriasis, atopic dermatitis, allergic contact dermatitis, epidermolytic hyperkeratosis, and seborrheic dermatitis. Cellular proliferative disorders can further include disorders such as autosomal dominant polycystic kidney disease (ADPKD), mastocystosis, and cellular proliferation disorders caused by infectious agents such as viruses.

[0154] In certain exemplary embodiments, methods of prognosing, diagnosing and/or monitoring one or more autoimmune disorders are provided. As used herein, the term "autoimmune disorder" is a disease or disorder caused by a subject producing an inappropriate immune response against its own tissues. As used herein, an autoimmune disorder includes, but is not limited to, disorders such as Addison's disease, alopecia areata, ankylosing spondylitis, antiphospholipid sundrome, autoimmune hemolytic anemia, autoimmune hepatitis, autoimmune inner ear disease (AIED), autoimmune lymphoproliferative syndrome (ALPS), autoimmune thrombocytopenic purpura (ATP), Balo disease, Bechet disease, bullous pemphigoid, cardiomyopathy, celiac sprue-dermatitis herpetiformis, chronic fatigue immune dysfunction syndrome (CFIDS), chronic inflammatory demyelinating polyneuropathy, cicatricial pemphigoid, cold agglutinin disease, CREST syndrome, Crohn's disease, Degos disease, dermatomyositis, dermatomyositis-juvenile, discoid lupus, essential mixed cryoglobulinemia, fibromyalgia-fibromyositis, Graves disease, Guillain-Barre, Hashimoto thyroiditis, idiopathic pulmonary fibrosis, idiopathic thrombocytopenia purpura (ITP), IgA nephropathy, insulin-dependent diabetes, juvenile arthritis, lichen planus, lupus, Meniere disease, mixed connective tissue disease, multiple sclerosis, myasthemia gravis, pemphigus vulgaris, pernicious anemia, polyarteritis nodosa, polychondritis, polyglandular syndromes, polymyalgia rheumatica, polymyositis and dermatomyositis, primary agammaglobulinemia, primary biliary cirrhosis, psoriasis, Raynaud phenomenon, Reiter syndrome, rheumatic fever, rheumatoid arthritis, sarcoidosis, scleroderma, Sjogren syndrome, stiff-person syndrome, Takayasu arthritis, temporal arteritis/giant cell arteritis, ulcerative colitis, vasculitis, vitiligo, Wegener granulomatosis and the like (See the American Autoimmune Related Diseases Association, Inc. website: aarda.org).

[0155] In certain exemplary embodiments, the nature and characteristics of symptoms, conditions, diseases and/or disorders are reduced by the methods of the present invention compared to the nature and characteristics of symptoms, conditions, diseases and/or disorders observed in a patient or a sample (e.g., a test sample or a sample taken from a subject prior to, during or after treatment). In certain aspects, the nature and characteristics of symptoms, conditions and diseases and/or disorder phenotypes are reduced by about 5%, 10%, 15%, 20%, 25%, 30%, 35%, 40%, 45%, 50%, 55%, 60%, 65%, 70%, 75%, 80%, 85%, 90%, 91%, 92%, 93%, 94%, 95%, 96%, 97%, 98%, 99%, 99.9% or more, or any range(s) in between.

[0156] In certain exemplary embodiments, a method for modulating, ameliorating, preventing and/or treating diseases, symptoms and/or disorders as described herein includes the step of administering a therapeutically effective amount of an agent to a subject. As defined herein, a therapeutically effective amount of agent (i.e., an effective dosage) ranges from about 0.0001 to 30 mg/kg body weight, from about 0.001 to 25 mg/kg body weight, from about 0.01 to 20 mg/kg body weight, from about 0.1 to 15 mg/kg body weight ,or from about 1 to 10 mg/kg, 2 to 9 mg/kg, 3 to 8 mg/kg, 4 to 7 mg/kg, or 5 to 6 mg/kg body weight. The skilled artisan will appreciate that certain factors may influence the dosage required to effectively treat a subject, including but not limited to the severity of the disease or disorder, previous treatments, the general health and/or age of the subject, and other diseases present. Moreover, treatment of a subject with a therapeutically effective amount of one or agents or pharmaceutically acceptable salts thereof can include a single treatment or, in certain exemplary embodiments, can include a series of treatments. It will also be appreciated that the effective dosage of agent used for treatment may increase or decrease over the course of a particular treatment. Changes in dosage may result from the results of diagnostic assays as described herein. The pharmaceutical compositions can be included in a container, pack, or dispenser together with instructions for administration.

[0157] Embodiments of the present invention are still further directed to methods of pairing heavy and light chains by matching their relative clone frequencies or by matching their similar time series. Further embodiments include pairing heavy and light chains at the single cell level simultaneously in many cells in parallel in a single reaction medium. Such methods include high-throughput sequencing of components resulting from an immune reaction using methods for insulating cells including in-cell biochemistry on formaldehyde cross-linked/permeabilized cells, emulsion encapsulated cells, agarose- bead encapsulated cells, liposome transfection of single cells, small oligonucleotide- transfection of single cells including locked nucleic acids or fluorescent probes, and the like. Such methods reduce cross contamination and incorrect pairings. Methods of pairing heavy and light chains described herein utilize enzymatic methods including SOE-PCR which may result in incorporation of scFv liner sequences, direct ligation which may result in incorporation of scFv linker sequence and may also include bimolecular or trimolecular ligations, USER cloning, bead capture such as by either amplification onto beads or hybridization onto beads or capture by pre-annealed oligonucleotides with immune chain-specific complementary sequences.

[0158] Embodiments of the present invention are even still further directed to methods of obtaining full immune chain molecules by hybridization using CDR3 information. Such an embodiment includes the use of short-read sequencing technologies to select CDR3 sequences and using these CDR3 sequences to hybridize to a full immune chain molecule using complementary oligonucleotides. [0159] Embodiments of the present invention still further include methods for reducing cross- contamination or incorrect pairing of heavy and light chains by bead-attached exonucleases and methods for monitoring cross-contamination or incorrect pairing of heavy and light chains by real-time PCR. The same or similar methods for pairing of heavy and light chains described herein can also be extended to the screening of antibody libraries against antigen libraries. According to one aspect, large and complex libraries of affinity reagents such as antibodies, nanobodies and the like are screened against large and complex libraries of antigen targets in a single reaction, followed by coupling DNA coding for the antibody sequence to the DNA coding for the antigen sequence.

[0160] Embodiments of the invention include the use of computer software to automate design and/or analysis of nucleic acid sequences. Such software may be used in conjunction with individuals performing polynucleotide synthesis by hand or in a semi-automated fashion or combined with an automated synthesis system. In at least some embodiments, the gene/oligonucleotide design/analysis software is implemented in a program written in the JAVA programming language. The program may be compiled into an executable that may then be run from a command prompt in the WINDOWS XP operating system. Exemplary software code is set forth as Appendix D. Unless specifically set forth in the claims, the invention is not limited to implementations using the same algorithms, organizational structure or other specific features of the exemplary software code. The invention is similarly not limited to implementation using a specific programming language, operating system environment or hardware platform.

[0161] It is to be understood that the embodiments of the present invention which have been described are merely illustrative of some of the applications of the principles of the present invention. Numerous modifications may be made by those skilled in the art based upon the teachings presented herein without departing from the true spirit and scope of the invention. The contents of all references, patents and published patent applications cited throughout this application are hereby incorporated by reference in their entirety for all purposes. [0162] The following examples are set forth as being representative of the present invention. These examples are not to be construed as limiting the scope of the invention as these and other equivalent embodiments will be apparent in view of the present disclosure, tables, figures, appendices and accompanying claims.

EXAMPLE I

Tracking Human Immune Response Dynamics Through VDJ Sequencing

[0163] Peripheral blood samples were drawn from a subject at -14 days prior to vaccination, approximately one hour after vaccination (day 0), and 1, 3, 7, 14, 21, and 28 days post- vaccination. For each sample, total RNA was extracted from peripheral blood leukocytes, from which cDNA and bar-coded 454 sequencing libraries were generated using primers specific for the entire VH region (Figure IB). B cell mRNA was analyzed to avoid cross- priming the germline DNA, to avoid non-functional receptor rearrangements, to benefit from possible clonal expansion of antigen-specific cells, and to take advantage of higher mRNA copy-numbers in antibody-expressing cells. The Roche 454 sequencing platform was used, as it provided read-lengths long enough to cover the entire VH region.

[0164] Through the course of 7 runs of 454 GS FLX sequencing, approximately 5.5 million size- filtered reads were obtained that were subsequently aligned to the reference IMGT database (Worldwide Web Site: imgt.cines.fr/) (Lefranc et al. (2009) Nucleic Acids Res. 37:D1006). To do so, the V, then J, and finally D regions were identified, as their decreasing length allowed for the most reliable identification. The novel algorithm described herein selected the few best matches by comparing word frequencies and scores them using dynamic programming alignment (Durbin, R., Eddy, S.R., Krogh, A. & Mitchison, G. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. (Cambridge Univ. Press, Cambridge; 1998)). To define clones, the algorithm then partitioned the reads according to their V-J usage and clusters their CDR3 junctions using agglomerative hierarchical clustering with edit distance as the metric (Gan, G., Ma, C. & Wu, J. Data Clustering : Theory, Algorithms, and Applications.

(SIAM American Statistical Association, Philadelphia, PA, Alexandria, VA; 2007)). While V and J region matches were generally unambiguous, D region identifications were not focused on as the algorithms often produced ambiguous alignments due to the short length of the D regions along with the highly mutated nature of the CDR3 (Figure 8). A total of 4,027,253 reads successfully passed this process (including bar-code identification), from which the immunoglobulin isotype was identified by searching for the corresponding primer sequences at the constant region end of the read (Figure 26).

[0165] Since the potential human repertoire diversity is estimated to be quite significant (up to 1014 by some estimates) (Davis et al. (1988) Nature 334:395), the technical feasibility and reproducibility of the methods described herein established as follows. A library of all time points was sequenced twice (sequencing replicates SRI and SR2), and a completely independent third library prepared from the same RNA samples was sequenced once (technical replicate TR1). Among these three sequencing runs, 477,1 18 unique clones were identified where only 3% were shared between the three runs and 14% were observed in at least two runs (Figure 2A). However, those shared clones accounted for 59% and 71% of all reads respectively, indicating that the highly expressed clones are actually sampled significantly between replicate runs. This was further validated by a strong correlation between technical replicate samples, confirming technical reproducibility of the approach described herein (Figures 2B and 9). Furthermore, resampling of the data showed that 105 reads were sufficient to obtain high correlations between replicates (Figure 2C). By computing coefficients of variation (CV), it was determined that reliable quantification of clone frequencies as low as 10"4 could be obtained, though this number was dependent on a given sample's sequencing depth (Figure 10).

[0166] Methods developed to assess ecological population structures exist. (Magurran, A.E.

Measuring Biological Diversity. (Blackwell Pub., Maiden, Ma.; 2004)). Rank-abundance and clone-size distribution plots showed that the clonal structure follows a power law distribution with an exponent of 1.97 across >2 decades (Figures 2D and 11). Without intending to be bound by scientific theory, this could reflect the evolutionary selection pressures experienced by the cells during the processes of differentiation and affinity maturation (Caldarelli et al. (2002) Phys. Rev. Lett. 89:258702; Bianconi and Barabasi (2001) Europhysics Letters 54:436). To estimate the total VH repertoire diversity in a typical 1 mL blood sample, the Chaol and ACE non-parametric species richness estimators were used (Magurran, Supra). A full sequencing run was also committed to a single time point (run DR1 ; day -14) to obtain a more reliable estimate. Inflection points and convexity were observed in almost all re-sampled estimator curves, indicating that the samples were sufficient to make reliable estimates (Figures 12A-12D). It was determined that a 1 mL blood sample contained approximately 100,000-500,000 unique heavy chain clones, depending on the blood sample and estimator used (Figure 2E). Finally, as only considering immunoglobulin heavy chains were considered, and without intending to be bound by scientific theory, it is expected the actual diversity will be at least an order of magnitude greater when paired with light chains. These data demonstrate that adequate sampling of the human repertoire diversity can be achieved in a single 1 mL blood draw, indicating the potential utility of such an approach as a personalized clinical diagnostic tool to identify current or previous pathogen exposure (Lerner et al. (1991) Proc. Natl. Acad. Sci. USA 88:9705). A large database of specificity-annotated antibody sequences will be generated. Next the characteristics of the static immune repertoire were assessed. Overall, V and J usage was highly non-uniform (Figure 3A). The most frequently observed V segments were IGHV3-23 (11.4% of all reads), IGHV4-59 (8.5%), IGHV3-30-3 (7.3%) while the most frequent J segments were IGHJ4 (35.1%) and IGHJ6 (18.9%), consistent with previous studies (Boyd, Supra; Brezinschek et al. (1995) J. Immunol. 155: 190; Glanville et al. (2009) Proc. Natl. Acad. Sci. USA (106:20216). The distribution of CDR3 junction lengths was then analyzed (Figure 3B). The two-sided, 95th percentile of the observed CDR3 lengths was 33 nucleotides (nt) to 75 nt, with median length of 54 nt (with longest observed junction at 146 nt), which shows similarity to the T cell receptor CDR3 size distribution (Freeman et al., Supra) and IMGT/LIGM data (Lefranc, Supra). In an attempt to compare with traditional low-resolution methods for analyzing immune repertoires, pseudo-spectratype plots were also generated in which receptor-length diversity is used as a surrogate for overall diversity (Figure 3C and Figures 13A-13B) (Pannetier et al. (1993) Proc. Natl. Acad. Sci. USA 90:4319). Finally, the immunoglobulin isotype distribution was analyzed, and it was observed that IgM antibodies were the most abundant (37% of all reads), followed by IgA (36%), IgG (23%), IgD (4%), and IgE (0.01%). Though expressed mRNA levels in circulating B cells were measured, these numbers were still consistent with the subject's age and expected plasma protein titers (Lefranc, M.-P. & Lefranc, G.E. The Immunoglobulin Factsbook. (Academic Press, San Diego; 2001)). Altogether, these results show the first in-depth profile of the expressed immunoglobulin heavy chain repertoire in an individual human. While the above analyses were focused on establishing reproducibility and profiling the static VDJ-ome, it was of great interest to survey the dynamic fluctuations of the immune repertoire. In the hope of capturing at least one immunological event, responses were induced to multiple immune challenges by vaccinating the subject against three pathogens for which his medical history suggests he should have immune memory: influenza (3 strains), hepatitis A, and hepatitis B. The clone frequencies were tracked through time to produce almost 500,000 time series over the eight time points, revealing the high complexity of the repertoire dynamics (Figure 4A). By randomly selecting clones across technical replicate runs, strong correlations were qualitatively observed at varying levels of expression, which further confirmed the reproducibility of the approach described herein (Figure 14). Initial clustering of the time series using a k-means algorithm showed that the most populated clusters were of ephemeral clones of various expression levels observed in each individual time point. However, after removing such single time point clones, the resulting clusters exhibited a vast array of dynamic behaviors (Figures 15 A- 15B). Traditionally, attempts to characterize responses to immune challenges are performed by sorting for cells with certain surface markers, allowing the generation of antigen-specific antibodies by analyzing the heavy and light chains of single cells (Paul, Supra; Wrammert et al. (2008) Nature 453:667). In contrast to this approach, an attempt to identify antigen- specific lymphocytes without prior knowledge of specific antigens or cell-activation states and without using functional assays was performed. In an attempt to identify clones specific to the immune challenges, a self-organizing map (SOM) clustering method was used (Kohonen, T. Self-Organizing Maps, Edn. 2nd. (Springer, Berlin ; New York; 1997); Eichler et al. (2003) Bioinformatics 19:2321). This revealed groups of clones at days 7 and 21 that exhibited the typically expected activation patterns of antibody-secreting cells (ASC) and memory B cells (Figure 4B) (Abbas et al., Supra; Murphy et al., Supra; Wrammert et al., Supra). These clones also corresponded to the major peaks observed in the computed pseudo-spectratypes (identified by the numbers associated with each peak in Figure 3C). Surprisingly, the most dynamic and highly expressed clones (by orders of magnitude) were observed at day 0 (approximately 1 hr after vaccination) and day 1, with a significant drop at day 3 (Figure 4A). While the possibility that the subject was inadvertently experiencing an immune response unrelated to the vaccines cannot be excluded, it is believed that a vaccination-induced memory response was observed. While memory responses are known for rapidly generating high antibody titers, they are expected to peak 3-5 days post-exposure (Abbas et al., Supra; Murphy et al., Supra; Paul, Supra). While the highest exposure-induced serum titers may occur at days 3-5, the highest mRNA expression levels of the corresponding cells were observed at day 1, suggesting that functional studies relying on cDNA repertoire cloning of samples collected on days 3-5 would likely miss candidates of interest. However, it is important to note that \ mRNAs of circulating B cells were sampled, which precede the accumulation of actual antibody proteins. In contrast with the responses of days 7 and 21, the rapid onset and greater magnitude of the day 1 memory response indicates that these clones may have been overlooked in functional studies of therapeutic monoclonal antibody discovery (Wrammert et al., Supra; Lanzavecchia et al. (2006) Immunol. Rev. 211:303; Jin et al. (2009) Nat. Med. 15: 1088).

[0170] Next, global fluctuations in the isotype distribution over the course of the experiment were observed. Interestingly, a small rise of IgG was observed at day 7, while at day 21, a concurrent rise in IgA and drop in IgM was observed, indicating potential class switching in vaccine-induced clones (Figure 4C) (Cerutti (2008) Nat. Rev. Immunol. 8:421). To obtain a more detailed view of isotype dynamics, the isotype distributions of the SOM- selected clones were analyzed (Figure 4D and Figure 16). The day 7 clones were primarily composed of the IgM and IgG isotype, while the day 21 clones were mostly composed of IgM and IgA. Most interestingly, the day 1 clones were dominated by IgA, reflecting an important role for this isotype in antiviral defense (Cerutti, Supra; Qiao et al. (2006) Nat. Immunol. 7:302). Such an IgA memory response is characteristic of re- exposure to influenza antigens (Cox et al. (2006) Vaccine 24:6577; Wright et al. (1983) Infect. Immun. 40: 1092). While IgA antibodies are largely responsible for defense in mucosal secretions (Cerutti, Supra; Stavnezer (1996) Adv. Immunol. 61 :79), it is reported that influenza vaccination (both nasal and intramuscular) elicits a rapid, strong, and shortlived systemic response of influenza-specific IgA ASC in peripheral blood (Cox et al., Supra). Nevertheless, the magnitude of the response observed in the hours following vaccination indicates a novel effector role for plasma IgA in antiviral memory, and highlights IgA as a potential non-traditional immunotherapy in viral diseases.

[0171] Figure 6 depicts FACS sorting analysis of the some of the selected sequences of Figure 4, where the hemagglutinin antigen (Brisbane 10 or Brisbane 59) was coated on beads and the antibody candidates were fluorescently labeled such that correct interaction between the antigen and antibody would result in a shift of the peaks during FACS analysis. Further quartz crystal microbalance (QCM) analysis in Figure 7 further demonstrates the binding affinity (with kD calculation) of the newly discovered antibody, demonstrating the potential of the methods and compositions described herein for efficiently identifying antibody candidates. [0172] In accordance with aspect of the invention being a personalized diagnostic tool, the reads were aligned to the subset of antibody sequences in the IMGT/LIGM database for which there are known antigen specificities (Lefranc et al., Supra). The CDRs were attempted to be perfectly matched. As the specificity-annotated IMGT/LIGM data set was quite small (fewer than 9,000 sequences), it was not expected that close-to-perfect matches would be found. Surprisingly, however, a single clone of sequences successfully matched an anti-digoxin antibody with a single amino-acid mutation at the periphery of CDR1 (Figure 17). As the subject experienced two cardiac episodes in 1989 and 1994, it could not be ruled out that he was administered digoxin and developed sensitivity to it. As for the SOM-selected candidates of days 1, 7, and 21, multiple matches were found with various levels of sequence identity, some of which matched influenza-specific or hepatitis-specific antibodies.

[0173] The high-throughput sequencing analysis of the human B cell antibody heavy-chain repertoire in response to a vaccine in a time course experiment is described herein. It has been demonstrated herein that, without prior knowledge of antigens or cell activation states, one milliliter blood samples were sufficient to reproducibly track the immune system's dynamics, despite the large diversity and rapid fluctuations of its repertoire. Because of this impressive diversity and the influence of exposure history, the response made during human vaccination is an important component of personalized medicine and required characterization at the individual level. Thus, in the context of personalized medicine, the approach described herein has been successfully demonstrated for clinical diagnostics and therapeutic discovery.

References

[0174] Freeman et al. (2009) Genome Res. 19:1817

[0175] Weinstein wt al. (2009) Science 324:807 0176 Boyd et al. (2009) Sci. Transl. Med. I : 12ra23

0177 Allison (2008) Nat. Biotechnol. 26:509

0178 Wrammert et al. (2008) Nature 453:667

0179 Draenert et al. (2006) J Exp. Med. 203:529

0180 Pereyra et al. (2008) J Infect. Dis. 197:563

0181 Weinstein et al. (2009) Science 324:807

0182 Freeman et al. (2009) Genome Res. 19: 1817

0183 Glanville et al. (2009) Proc. Natl. Acad. Sci. USA 106:20216

0184 Kenneth et al. (2008) Janeway's Immunobiology. Garland Science, New York, 7th ed.

0185 Lefranc and Lefranc (2001) The Immunoglobulin Factsbook. Academic Press, San Diego

0186 Moore and Clayton (2003) Nature 426 :725

0187 Lerner et al. (1001) Proc. Natl. Acad. Sci. USA 88:9705

0188 Brezinschek et al. (1998) J. Immunol. 160:4762

0189 Brezinschek et al. (1995) J. Immunol. 155 : 190

0190 Pannetier et al. (1995) Immunol. Today 16: 176

0191] Pannetier et al. (1993) Proc. Natl. Acad. Sci. USA (1993) 90:4319 [0192] Marasco and Sui (2007) Nat. Biotechnol. 25: 1421

EXAMPLE II

Repertoire Cloning of Paired Antibody Heavy and Light Chains

[0193] To rigorously confirm that certain clones are involved in immune responses or to discover new antibodies against antigens of interest, it is desirable to successfully capture both the heavy and light chains of individual antibodies. Because of the lack of methods for capturing paired VH and VL chains in high-throughput, protocols known in the art involve sorting single cells into individual wells and performing PCR for the heavy and light chains serially (e.g., Meijer et al. (2006) J Mol. Biol. 358:764). However, even with automated liquid handling robots, typical throughputs are practically limited to 106 (at great expense). Another popular solution is to capture heavy and light chain repertoires separately, and associate them randomly with each other in expression vectors (Wright et al. (2009) Proc. Natl. Acad. Sci. USA 106: 19078). However, heavy and light chain pairing is likely far from randomly distributed. Accordingly, these methods do not provide accurate portrayals of the underlying repertoires.

[0194] This example describes a general method for capturing paired heavy and light chains in millions of single cells in a single-reaction format. Multiple methods are provided that allow the simultaneous manipulation of millions of cells in parallel, while keeping them isolated from each other to maintain the natural chain pairing.

Methods for single-cell coupling of chains

[0195] Multiple methods are provided for coupling the heavy and light chains from single cells.

The overall methods are split into two parts: the chain-linking biochemistry and the cell insulation method. Solutions for each part are primarily chosen independently, and multiple combinations are explored. [0196] Certain of the biochemical methods are PCR based. A choice between amplifying the target chains from the genomic DNA or performing RT-PCR is made based on the nature of the expressed mRNAs. The former requires no reverse transcription step but has the risk of amplifying non-functional receptors, while the latter can benefit from higher copy numbers and should only capture functional, expressed receptors. The physical cross- linking optionally occurs through multiple mechanisms. The first is standard splicing-by- overlap-extension PCR (SOE-PCR) (or fusion PCR or crossover PCR), whereby two of the PCR primers have complementary sequences so that the two amplicons function as primers and they fuse to each other (Heckman and Pease (2007) Nat. Protocol. 2:924). One advantage to this method is that the overlap sequence can be designed so that the fused construct is immediately in a usable scFv format. The next mechanism is similar to the SOE-PCR in that tags are incorporated into the PCR primers. In this case, the tags contain loxP sites, so that fusion will occur upon Cre-mediated recombination (Albert et al. (1995) Plant J. 7:649; Chapal et al. (1997) Biotechniques 23:518). Finally, in the case of emulsion methods, another biochemical option is to amplify both the heavy and light chains onto beads (Diehl et al. (2006) Nat. Methods 3:551 ; Shendure et al. (2005) Science 309: 1728). One advantage is that the beads can be processed immediately for sequencing on bead-based next-generation sequencing systems. However, this also can be a disadvantage, as it can limit the range of options after chain coupling. An alternative bead-based method is to amplify both chains onto beads, and then couple the chains on the beads. This increases the specificity of the entire process, albeit at increased complexity of the protocol. Each of these methods are summarized in Figure 27.

[0197] The cell insulation methods fall into two main categories: in-cell methods and emulsion methods. For in-cell methods (Embleton et al. (1992) Nucleic Acids Res. 20:3831), the cells are fixed in formalin and permeabilized to allow the diffusion of biochemical reagents into the cell. The cell membrane functions as the barrier that prevents cross- contamination of heavy and light chains between cells. The advantages of this general approach are the relative simplicity of fixing the cells and also the ability to serially apply reagent sets to all cells in parallel. However, without intending to be bound by scientific theory, the permeabilization may potentially increase the chance that Ig chains will leak out of cells and lead to cross-contamination.

[0198] For the emulsion-based methods, single cells are placed into individual compartments of a water-in-oil emulsion (Clausell-Tormos et al. (2008) Chem. Biol. 15:427; Leamon et al. (2006) Nat. Methods 3:541). An advantage of such an approach is that the oil-based separation of compartments can potentially provide nearly absolute insulation from chain cross-contamination. But while the oil-separated compartments can stop any exchange of material between compartments, a common problem of thermal cycling emulsions is that compartments fuse together, leading to non-clonality. Furthermore, it is considerably more difficult to manipulate emulsions. Emulsions are generally formed using physical methods (e.g., vortexing) that depend on Poisson statistics to achieve clonality (Nakano et al. (2005) J. Biosci. Bioeng. 99:293; Williams et al. (2006) Nat. Methods 3:545). However, this tends to lead to a small fraction of non-clonal compartments, and also leads to a large number of unoccupied compartments. To combat these problems, emulsions are generated using microfluidic technology (Clausell-Tormos et al., supra). A disadvantage to using emulsion methods is that once an emulsion is formed, it is difficult to exchange additional material with the compartments in a controlled fashion. However, a technology for fusing emulsion droplets in a controlled fashion (Tewhey et al. (2009) Nat. Biotechnol. 27: 1025; Meyers and Gelfand (1991) Biochemistry 30:7661) is used to address this disadvantage. Finally, emulsion PCR is optionally performed using conditions that are far from standardized protocols. The cell insulation methods are summarized in Figure 28.

[0199] With these general considerations, at least six strategies have been identified to achieve robust coupling of heavy and light chains. These strategies are depicted in Figure 29 and include, but are not limited to: 1) emulsion PCR from gDNA; 2) in-cell RT and SOE- PCR or Cre-Lox coupling; 3) Tth-mediated emulsion RT-PCR; 4) acrylamide- encapsulated in-cell RT-PCR; 5) emulsion PCR onto beads; and 6) emulsion RT-PCR with droplet fusion.

Emulsion PCR from gDNA

[0200] This is the simplest emulsion-based approach. The cells are placed in the emulsion along with reagents for a traditional PCR reaction. SOE-PCR is then performed using the gDNA as a template.

In-cell RT and SOE-PCR or Cre-Lox coupling

[0201] This involves fixing cells in formalin and permeabilizing them using one of several methods (e.g., proteinase K) (Chapal et al., supra; Embleton et al., supra). Because all cells are in solution, a traditional RT-PCR reaction is performed by applying the relevant enzymes serially.

Tth-mediated emulsion RT-PCR

[0202] It is desirable to capture the Ig chains from the mRNA sequence, as this avoids any nonfunctional receptor rearrangements and also benefits from the potentially higher copy- numbers of expressed cells. However, emulsion PCR only allows the addition of biochemical reagents one time. Therefore, Tth polymerase, which is capable of performing both RT and PCR (Myers and Gelfand, supra), is used. The performance of the polymerase is characterized and it is used in the context of emulsions.

Acrylamide-encapsulated in-cell RT-PCR

[0203] This technique is similar to the in-cell RT-PCR, but involves the additional step of encapsulating individual cells in polyacrylamide gels (Yokoyama et al. (1990) Jinrui Idengaku Zasshi 35: 131), which adds an additional layer of protection from cross- contamination.

Emulsion PCR onto beads

[0204] As an alternative to SOE-PCR for cross-linking the heavy and light chains, the two chains are captured by conventional PCR onto beads (Diehl et al., supra). Each emulsion compartment aims to have a single cell and a single bead. The beads are coated with two different primers: one for the heavy chain and one for the light chain. After breaking the emulsion, the beads are optionally manipulated in a variety of ways. One method, which can increase the specificity of the technique, is to cross-link the two chains on the beads using a modified Cre-Lox system.

Emulsion RT-PCR with droplet fusion

[0205] As an alternative to using Tth polymerase, emulsion droplets are fused in a controlled manner. In this way, "bags" of enzymes can be serially fused with the emulsion compartments to perform separate biochemical steps, such as RT followed by PCR. This approach allows the use of robust and well characterized enzymes to separately perform RT and PCR.

Design of primers and vectors for multiple chain-coupling

[0206] Primers are designed for the various RT and PCR protocols described herein. Primers include, but are not limited to: RT primers; multiplex PCR primers for the V and J segments for cDNA (the V primers are specific for cDNA as they will span the L1-L2 exon boundary for the leader sequence); multiplex PCR primers for the V and J segments for gDNA (these are used during emulsion PCR); PCR primers that are immobilized on beads; PCR primers that contain complementary tags for overlap PCR (it is important that the overlap is suitable as a linker sequence for an scFv chain and will place the heavy and light chain in-frame); PCR primers that contain LoxP sites for cross linking heavy and light chains (Chapal et al., supra); and primers that incorporate common sequences into primers for easily adapting sequences to next-generation sequencing and for easily cloning sequences into various expression vectors (i.e., for various protein display technologies). Furthermore, vectors are designed that are suitable for a variety of display technologies, using standard vectors through the use of Gateway cloning protocols.

Optimization of PCR conditions for cross-linking PCR

[0207] PCR reaction conditions are optimized in several stages. First gDNA or mRNA prepared from clonal populations of cells is used to ensure that the heavy and light chains are cross-linked in an idealized environment. After robust PCR conditions are achieved, Ig chains (from whole cells) are cross-linked in solutions using either SOE-PCR or Cre-Lox recombination. Microfluidic technology is used to place single cells into emulsion compartments 100 μπι in diameter (approximately 0.5 nL) (Clausell-Tormos et al., supra). In certain embodiments, the compartment size is reduced to ensure that the emulsion does not break during thermal cycling. A cell concentration equivalent to 20 μιη emulsion compartments, which would correspond to about 1.5 x 106 cells in a typical 50 reaction, can be used.

Optimization of cell insulation protocol

[0208] Heavy and light chains are cross-linked in single cells. Using a single monoclonal cell line, multiple methods for insulating single cells and performing PCR are performed. After cell fixation using formalin, permeabihzation of the cell is performed (detergents such as Nonidet P40 (Embleton et al., supra) may be too aggressive for such use). Proteinase K digestions can be used to permeabilize cells by chewing away membrane proteins and pores (Bagasra (2007) Nat. Protocol. 2:2782). Overlapping tags are used to cross-link the two amplicons during PC . An alternative method involves incorporating LoxP sites into the two internal primers and to cross-linking the two chains via Cre recombination (Chapal et al., supra).

Characterization of cross-contamination in chain cross-linking

[0209] Following successful cross-linking of heavy and light chains in single cells, the level of cross-contamination is measured. The Embleton et al. study found that when mixing two known hybridoma cell lines at 1 : 1 and 9: 1 ratios, they observed no mispaired amplicons (Embleton et al., supra). However, these ratios are far too lenient compared with real effective ratios from complex mixtures. Accordingly, the level of mispairing using two cell lines in ratios up to 106: 1 are characterized. Furthermore, the method used in Embleton et al. relied on capturing clones from the "rare" cell line using traditional screening methods. These methods are not practical when attempted on more stringent cell ratios, as the rare cell type may never be observed. To address this, PCR-based methods are provided that are far more sensitive than the method used in Embleton et al.

PCR-based cross-contamination assay

[0210] A TaqMan assay is used in order to quantify the level of cross-contamination. Without intending to be bound by scientific theory, after performing the single-cell cross-linking PCR, four species are expected in the combined mixture: A-a, A-b, B-a, B-b (where A and B are the two clones and A versus a is heavy versus light chain). As the scFv linker sequence connecting the heavy and light chains is the same for all species, one TaqMan probe with fluorophore X is used to hybridize to this common portion. Separately, four constructs of the same length that are amplified by only one of the four primer combinations, which all contain a common unique sequence that hybridizes to a second TaqMan probe with fluorophore Y are used. The synthetic constructs are set to known concentrations. A real time PCR reaction is used in which the experimental mixture of four constructs is split into four separate tubes. Each tube is then amplified with one of the four primer combinations along with the corresponding synthetic template at a known concentration. Each tube is also amplified in the presence of both TaqMan probes. Fluorescence is measured at both wavelengths at each cycle. Ultimately, the fluorescence measurements of Y are used as a standard to compare the relative concentrations of the various species in the starting mixture.

Quantification of cross-contamination

[0211] Following PCR-based mispairing, the levels of cross-contamination at different ratios of the two cell lines are measured. For in-cell PCR methods, one source of cross- contamination is mRNA/cDNA that has leaked into the supernatant solution. In order to combat this problem, different permeabilization parameters, e.g., such as modifying proteinase K digestion, times are assayed.

[0212] For emulsion-based methods, one source of cross-contamination is the existence of non- clonal compartments. This can occur during the formation of the emulsion when multiple cells are placed into a single compartment, as well as during thermal cycling of the emulsion, where different emulsion compartments can fuse together. In order to avoid non-clonality at the emulsion formation step, microfluidic platforms are provided to determine emulsion formation methods that are easier to control. A variety of different emulsion oils and/or surfactants and/or reduced size emulsion compartments are provided to avoid droplet fusion during thermal cycling.

[0213] The level of cross-contamination is obtained using mixtures of two known cell lines (A and B) at A:B ratios ranging from 1 :1 through 106: 1. As the concentration of A increases relative to B, the likelihood that a B chain will mispair with an A chain will increase, leading to a higher relative amount of mispaired B chains. Given a complex mixture of lymphocytes obtained from blood, the lowest frequency level for which heavy-light chain pairing is accurately ascertained is determined.

Creation of scFv libraries from complex samples

[0214] Complex blood-derived samples of lymphocytes are used to generate new 454 sequencing libraries. Certain of the vaccination samples collected are sequenced to confirm reproducibility.

Analysis of properties of chain pairing including total diversity estimates

[0215] The newly generated full scFv data is run through an informatics pipeline to determine VDJ usage and split the data into unique clones. This data provides the most accurate estimates to date of expressed antibody diversities. Furthermore, many studies assume that heavy and light chain pairing is independent and random. However, without intending to be bound by scientific theory, it is believed that generating actual paired heavy and light chains will show that the distribution is far from random, and provides novel methods to characterize it.

Characterizing multiple solutions to influenza H1N1 infection

[0216] A new protocol to collect blood samples from volunteers who will be immunized to the H1N1 influenza strain ("swine flu") is provided. The protocol selects volunteers who have not been exposed to swine flu and also volunteers that contracted the disease and fought it successfully. The immune responses of people who have been exposed to the virus can thus be compared with the immune of to those who have not been exposed to it (though they likely contracted some other strain of influenza at sometime in their history).

[0217] Furthermore, each sample obtained from a subject that successfully fought H1N1 infection contains a unique immunological solution to combating the virus. Commercially available protein preparations of glycosylated H1N1 hemagglutinin and neuraminidase are obtained, and the expressed scFv libraries from each individual is cloned using an in vitro display system (e.g., phage display). Anti-flu antibodies are functionally enriched using standard panning techniques, and the resulting enriched scFv pools are sequenced using a next-generation sequencing technology. This allows the direct observation of how different individuals fight H1N1, and also confirms the results obtained by sequencing the repertoire without panning against antigen.

[0218] In addition, samples are saved in order to express the putative responding antibodies and characterize their interaction against larger antigen libraries.

EXAMPLE III

High-Throughput Characterization and Selection of Antibody Repertoires Against

Pathogen Libraries

[0219] A similar approach to that described above is used to characterize antigen-antibody interactions in high-throughput. Current technologies require selecting for new antibodies against a single antigen at a time (Carter (2006) Nat. Rev. Immunol. 6:343). A typical experiment involves purifying and immobilizing some antigen of interest, and exposing it to some type of protein display technology encoding a library of candidate antibody sequences (typically in scFv format). After multiple rounds of panning, washing and amplifying, a small number of clones is sequenced and carried through for further analysis. Alternatively, an animal is immunized with the antigen of interest to generate a polyclonal response. Antigen-specific lymphocytes are then harvested (to obtain the polyclonal response) and screened to obtain high-affinity monoclonal antibodies. Id. Methods are provided that allow the selection of new antibodies against multiple antigens in parallel. [0220] Two chains of nucleic acids are coupled together. Antibodies can be encoded in a protein display format (e.g., phage (Clackson et al. (1991) Nature 352:624; McCafferty et al. (1990) Nature 348:552), yeast (Boder and Wittrup (1997) Nat. Biotechnol. 15:553; Boder et al. (2000) Proc. Natl. Acad. Set USA 97: 10701 ; Chao et al. (2006) Nat. Protoc. 1 :755), or ribosome display (Zahnd et al. (2007) Nat. Methods 4:269)) and antigens are packaged with their coding information (e.g., peptide libraries in display format, or whole virus particles). The two libraries are allowed to interact and interacting complexes are selected (Bowley et al. (2009) Proc. Natl. Acad. Set USA 106: 1380). The coding chains of the interacting antigen and antibody are then physically coupled using methods similar to those described herein. This will allow the characterization of antigen-specific antibodies for multiple antigens in parallel. Ultimately, this type of approach will be scaled up to assay very large antigen libraries against very large antigen libraries (e.g., entire human proteome, all known viral proteins and the like).

[0221] One unique aspect of the methods described herein is that protocols for capturing full antibodies will have already formatted the captured repertoires in an scFv format, allowing for easy expression using one of the protein display technologies. Compared with many previous studies that generate random antibody libraries, each antibody in the libraries described herein are generated by a functioning, natural immune system. In this way, millions of years of evolution can be used to provide efficient antibody libraries that will allow one of skill in the art the ability to quickly discover new functional antibodies.

Methods for multiplex affinity selections

[0222] One approach for capturing antigen-antibody (Ag-Ab) interactions involves placing single

Ag-Ab complexes into individual emulsion compartments. In order to properly display antibodies and antigens, several choices are suitable including, but not limited to: phage, yeast, or ribosome display, whole viral particles (in the case of viral antigens). Ribosome display offers the largest potential libraries and is fully in vitro. Phage display is the oldest method and provides large library sizes. Yeast display offers the smallest library sizes, but is particularly appropriate for antigen libraries as it can carry larger payloads and has glycosylation machinery (Hoogenboom (2005) Nat. Biotechnol. 23 : 1 105). Use of whole virus particles provides access to the most realistic antigens, but has a potentially large genome and additional safety concerns for lab work. It is important to note that because naturally expressed repertoires are cloned, the maximum library size of all of these technologies is expected to be sufficient to capture the diversity of sequences in any practical blood samples or antigen sets. Phage-Ab against yeast-Ag is a promising general approach for library-against-library selections (Bowley et al., supra). Yeast is well suited to larger protein fragments, the two systems can replicate independently. Additionally, ribosome-Ab against ribosome-Ag is also utilized as this system is entirely in vitro. This will enable coupling methods that do not depend on emulsions. Finally, these methods are also used against whole viral particles.

[0223] For the phage-based systems, an emulsion-based method is used to capture interacting antibodies and antigens. After several or more rounds of affinity selection, phage-Ab- yeast-Ag duplexes are double-purified using magnetic sorting or FACS to eliminate non- interacting particles. Id. These duplexes are then placed into individual emulsion compartments where a cross-linking PCR reaction will physically associate the Ag and Ab coding sequence. These cross-linked species are then prepared for next-generation sequencing and interactions are detected by analyzing the sequencing data. When the Ag used is whole virus particles, the genome sequence can be relatively large. However, as a relatively small number of unique viruses is assayed, the method is sufficient to find a unique barcode to identify the specific strain of virus.

[0224] For the fully in vitro ribosome display system, in addition to attempting the emulsion based protocol, non-emulsion methods are used. A proximity ligation assay (Soderberg et al. (2006) Nat. Methods 3 :995) is used to capture unique tags on both Ag and Ab libraries. These tags will supply enough information to obtain the full corresponding sequences. Assaying a positive control for Ab-Ag interaction

[0225] A single Ag-Ab pair that is known to interact with high affinity and specificity is cross- linked. An scFv fragment is created in a phage display format from a sequence known to bind to influenza neuraminidase, along with the corresponding antigen fragment in a yeast display format. Preparations of the two species are allowed to interact in solution, and methods described herein are used to cross-link the two coding chains.

[0226] In a first method, only the flu antibody and flu antigen are allowed to interact in solution, and PCR is used to cross-link the two coding strands. The primers are assayed for cross- linking via overlap PCR and/or Cre/lox recombination. Likewise, the same positive control Ab and Ag pair are placed into a commercial ribosome display system the pair is allowed to interact. Reverse transcription and cross-linking PCR are performed using the methods described herein to assay for successful fusion of the Ab and Ag coding strands.

Quantification of double-purification enrichment for interacting Ab-Ag pairs

[0227] In addition to the positive control Ab-Ag pair, a second, orthogonal Ab-Ag pair, along with a phage-Ab that is not specific for any antigen used and a yeast-Ag that is not specific for any of the antibodies are chosen. After allowing the mixture to interact, cognate Ab-Ag complexes are purified by flow cytometry of yeast cells using fluorescent anti-phage antibody, as described in (Bowley et al., supra). From the sorted cells, cross- linking and PCR are performed and the amount of contaminating DNA from the phage and yeast that are expected to not show binding affinity is measured. In order to reduce the amount of background, double-purification is performed followed by amplification of the phage and yeast libraries separately. Id. For the ribosome display system, two different affinity tags are encoded into the Ag library and the Ab library (e.g., His and flag tags). His-tag purification is then performed followed by flag-tag purification to obtain interacting particles. Quantification of insulation of Ab-Ag complexes in emulsions

[0228] After performing selection for interacting particles, the Ab-Ag complexes are placed into emulsions using methods described herein. In parallel, more extreme ratios of the two orthogonal positive control pairs are progressively assayed to determine the amount of cross contamination during the coding strand fusion. A summary is set forth at Figure 30.

Initial controls for ribosome display proximity ligation

[0229] One advantage of the ribosome display methods described herein is that the entire system is in vitro and the coding sequences are exposed to solution. Using only one of the positive control Ab-Ag pairs, rolling circle-based proximity ligation system (Soderberg et al., supra) is assayed. The two libraries contain unique sequence(s) that function as barcode(s). Additional probes are added to the reaction which form closed circles when the two strands of the Ab and Ag mRNAs are in close proximity to each other.

[0230] The same assay is then performed with two positive controls following double purification for interacting complexes. This will elucidate whether the proximity ligation assay is specific only for Ab-Ag pairs that are actually interacting, or whether the circles can be closed promiscuously.

Building Ab-Ag lookup table using viral display libraries

[0231] After successfully linking the coding chains of interacting Ab-Ag pairs of a small number of controls, the method is applied to complex libraries. Phage display and ribosome display libraries of naturally expressed scFvs that were cloned as described herein are made. For the vaccination samples, a small library of viral proteins that correspond to the same strains to which the subjects were exposed is generated. These libraries are then used to characterize which antibodies bind to which proteins. Results obtained are correlated with the antibody clones that were identified to react to the administered vaccines in the patients.

[0232] In addition to generating viral protein libraries artificially, a similar method is used with full viral particles. Viruses are a convenient system for this strategy, as they function as their own protein display particles. Furthermore, since only a small number of viral strains is needed, it is enough to identify which strain has been captured by cross-linking with one or more unique genomic barcode sequences.

EXAMPLE IV

Materials and Methods

Biological samples and immunization

[0233] Peripheral blood samples were drawn into 9 mL K3-EDTA tubes from a single individual 14 days prior and 0, 1, 3, 7, 14, 21, and 28 days following vaccination. Vaccines administered were as follows: Hepatitis A+B (Twinrix) and seasonal influenza vaccine, including strains A/Brisbane/59/2007 (HlNl-like), A/Brisbane/ 10/2007 (H3N2-like), and B/Florida/4/2006.

RNA extraction

[0234] Blood samples where immediately processed through a filtering unit to isolate the leukocyte fraction (LeukoLOCK™, Ambion, Austin, TX), then stored at -80°C until all samples were obtained. Total RNA was later extracted according to the manufacturer's protocol. RNA integrity and concentration was assessed using a NanoDrop spectrophotometer (Thermo Scientific, Wilmington, DE) and a 2100 Bionanalyzer (Agilent, Foster City, CA). cDNA synthesis and PCR For each sample, 2 x 1 μg of total RNA was reverse transcribed in 2 independent 20 μϊ^ reactions using Superscript™ III reverse transcriptase (Invitrogen, Carlsbad, CA) at 55°C for 60 min in the presence of 5 pmole of C-region gene-specific primer mix (IGHC-RT) (Table 1), followed by enzyme inactivation and RNase H digestion (Epicentre Biotechnologies, Madison, WI) according to Invitrogen protocols. Each 20 μΕ cDNA reaction was then split in 4 x 50 μΕ PCR reactions each, for a total of 8 independent PCR reactions per originating sample. PCR was performed in the presence of 200 nM dNTPs (Enzymatics, Beverly, MA), 25 pmole of V-region gene-specific primer mix (IGHV- PCR), 25 pmole of C-region gene-specific primer mix (IGHC-PCR), and 1 U of Phusion™ Hot Start High-Fidelity DNA Polymerase (New England Biolabs, Ipswich, MA) and thermal cycled as follows: 98°C for 1 min, 16 cycles of 98°C for 10 sec, 62°C for 20 sec, 72°C for 20 sec, followed by 72°C for 5 min and then cooled down to 4°C. Following PCR, all reactions originating from the same sample where pooled into one 400 μΕ mixture to which 160 U of Exonuclease I (Epicentre Biotechnologies, Madison, WI) was added and incubated at 37°C for 45 min. Samples were then purified using the QIAquick PCR Purification Kit (Qiagen, Valencia, CA) and eluted in 36 μΐ, of EB buffer according to the manufacturer's protocol.

Reverse transcription oligonucleotides

C-region gene specific primers mix (IGHC-RT)

VDJ-20080707-IGHG AGGGYGCCAGGGGGAAGA (SEQ ID NO: 133)

VDJ-20080707-IGHM GGAGACGAGGGGGAAAAGG (SEQ ID NO:134)

VDJ-20080707-IGHA CAGCGGGAAGACCTTGGG (SEQ ID NO: 135)

VDJ-20080707-IGHD CACATCCGGAGCCTTGGT (SEQ ID NO:136)

VDJ-20080707-IGHE TCAAGGGGAAGACGGATGG (SEQ ID NO: 137)

PCR oligonucleotides

C-region gene specific primers (IGHC-PCR)

VDJ-20080924-IGHG-1 CCGATGGGCCCTTGGTGG (SEQ ID NO: 138)

VDJ-20080924-IGHG-2 CGGATGGGCCCTTGGTGG (SEQ ID NO: 139)

VDJ-20080924-IGHM GGGTTGGGGCGGATGCAC (SEQ ID NO: 140)

VDJ-20080924-IGHA CCTTGGGGCTGGTCGGGG (SEQ ID NO: 141 )

VDJ-20080924-IGHD CATCCGGAGCCTTGGTGG (SEQ ID NO: 142)

VDJ-20080924-IGHE CGGATGGGCTCTGTGTGG (SEQ ID NO: 143)

V-region gene specific primers (IGHV-PCR)

VDJ-20080924-IGHV1 -1 GAGCAGCGACAGGTGCCC (SEQ ID NO: 144)

VDJ-20080924-IGHV1 -2 CAGCAGCCACAGGTGCCC (SEQ ID NO: 145) VDJ-20080924-IGHV1 -3 GCAGCAGCTACAGGTGTCC (SEQ ID NO: 146)

VDJ-20080924-IGHV1 -4 CTGTAGCACCAGGTGCCC (SEQ ID NO: 147)

VDJ-20080924-IGHV1 -5 GCTGTAGCTCCAGGTGCTC (SEQ ID NO: 148)

VDJ-20080924-IGHV1 -6 CAGCACCAACAGGTGCCC (SEQ ID NO: 149)

VDJ-20080924-IGHV1 -7 CAGCAGCCACAGNTGCCT (SEQ ID NO: 150)

VDJ-20080924-IGHV1 -8 CAGCAGCTACAAGTGCCC (SEQ ID NO: 151 )

VDJ-20080924-IGHV1 -9 CAGCAGCCACAGGAGCCC (SEQ ID NO:152)

VDJ-20080924-IGHV1-10 CAGCAGCCACAGGTGTCC (SEQ ID NO: 153)

VDJ-20080924-IGHV1 -1 1 CAGCAGCTACAGGCACCC (SEQ ID NO: 154)

VDJ-20080924-IGHV1 -12 CCTGTTTTTGGTGCCC (SEQ ID NO: 155)

VDJ-20080924-IGHV1 -13 TGGCAGCACCAGGCGCCC (SEQ ID NO: 156)

VDJ-20080924-IGHV1 -14 TCATAGCTGCAGGTGCCC (SEQ ID NO:157)

VDJ-20080924-IGHV2-1 CTGTCCCGTCCTGGGTCT (SEQ ID NO: 158)

VDJ-20080924-IGHV2-2 ACCATCCCTTCATGGGTCT (SEQ ID NO: 159)

VDJ-20080924-IGHV2-3 CCACCCCTTCCTGGGTCT (SEQ ID NO: 160)

VDJ-20080924-IGHV3-1 TTCTGTGCTATATTAAAGCTGTCC (SEQ ID NO: 161 )

VDJ-20080924-IGHV3-2 TTGTTGCTATTTTAAAAG GTGTC C (SEQ ID NO: 162)

VDJ-20080924-IGHV3-3 CGTTGCTCTTTTAAGAGGTGTCC (SEQ ID NO: 163)

VDJ-20080924-IGHV3-4 TTGTTGCTATTTTTAAAGGTGTCC (SEQ ID NO: 164)

VDJ-20080924-IGHV3-5 TTGTTGCTATATTAGAAGGTGTCC (SEQ ID NO: 165)

VDJ-20080924-IGHV3-6 GCTATTTTAAAAGGTGTCC (SEQ ID NO:166)

VDJ-20080924-IGHV3-7 TTGTTGCTATTTTAGAAGGTGTCC (SEQ ID NO: 167)

VDJ-20080924-IGHV3-8 TTGTGGCTATTTTAAAAGGTGTCC (SEQ ID NO: 168)

VDJ-20080924-IGHV3-9 TTGTTGTTATTTTACAAGGTGTCC (SEQ ID NO: 169)

VDJ-20080924-IGHV3-10 TTCCTGCTATTTTAAAAGGTGTCC (SEQ ID NO: 170)

VDJ-20080924-IGHV3-1 1 TTGCTGCTATTTTAAAAGGTGTCC (SEQ ID NO: 171 )

VDJ-20080924-IGHV3-12 TTTTGGCTATTTTAAAAGGTGTCC (SEQ ID NO: 172)

VDJ-20080924-IGHV3-13 TTGTGGCTAAAATAAAAGGTGTCC (SEQ ID NO: 173)

VDJ-20080924-IGHV3-14 TTGTTGCTATAATAAAAGGTGTCC (SEQ ID NO: 174)

VDJ-20080924-IGHV3-15 TTGCTGGTATTTTAAAAGGTGTCC (SEQ ID NO: 175)

VDJ-20080924-IGHV3-16 TTGTTGGTATTTTAAAAGGTGTCC (SEQ ID NO: 176)

VDJ-20080924-IGHV4-1 CAGCTCCCAGATGGGTCC (SEQ ID NO: 177)

VDJ-20080924-IGHV4-2 CGGCTCCCAGATGGGTCC (SEQ ID NO: 178)

VDJ-20080924-IGHV4-3 GCTCCCAGATGTGGGTCC (SEQ ID NO: 179)

VDJ-20080924-IGHV5-1 GGCTGTTCTCCAAGGAGTCT (SEQ ID NO: 180)

VDJ-20080924-IGHV5-2 CCTCCACAGTGAGTGAGTCT (SEQ ID NO: 181 )

VDJ-20080924-IGHV5-3 CCTAGCTATTCTCCAAGGAGTCT (SEQ ID NO: 182)

VDJ-20080924-IGHV6-1 GCCTCCCATGGGGTGTCC (SEQ ID NO: 183)

VDJ-20080924-IGHV6-2 GGGCCTCCATGGGTGTCC (SEQ ID NO: 184)

VDJ-20080924-IGHV7-1 CAGCAGCAACAGGTGCCC (SEQ ID NO: 185)

VDJ-20080924-IGHV7-2 GCAGCAGCAACAGGTACCT (SEQ ID NO: 186)

454 library construction oligonucleotides

Adapter A oligonucleotides

454 adapter A1_MID1 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGACGAGT*G*C*G*

T (SEQ ID NO: 187)

454 adapter A2_MID2 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGACGCTC*G*A*C*A

(SEQ ID NO: 188) 454 adapter A3_MID3 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGAGACGC*A*C*T*C

(SEQ ID NO: 189)

454 adapter A4_MID4 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGAGCACT*G*T*A*G

(SEQ ID NO: 190)

454 adapter A5_MID5 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGATCAGA*C*A*C*G

(SEQ ID NO: 191 )

454 adapter A6_MID6 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGATATCG*C*G*A*G

(SEQ ID NO: 192)

454 adapter A8_MID8 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGCTCGCG*T*G*T*C

(SEQ ID NO: 193)

454 adapter A9_MID9 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGTAGTAT*C*A*G*C

(SEQ ID NO: 194)

454 adapter A10_MID10 C*C*A*T*CTCATCCCTGCGTGTCTCCGACTCAGTCTCTA*T*G*C*G

(SEQ ID NO: 195)

454 adapter A*C*G*C*ACTCGTCTGAGTCG*G*A*G*A (SEQ ID NO: 196)

Aprime1_MID1

454 adapter T*G*T*C*GAGCGTCTGAGTCG*G*A*G*A (SEQ ID NO: 197)

Aprime2_MID2

454 adapter G*A*G*T*GCGTCTCTGAGTCG* G*A*G*A (SEQ ID NO: 198)

Aprime3_MID3

454 adapter C*T*A*C*AGTGCTCTGAGTCG*G*A*G*A (SEQ ID NO:199)

Aprime4_MID4

454 adapter C*G*T*G*TCTGATCTGAGTCG*G*A*G*A (SEQ ID NO:200)

Aprime5_ ID5

454 adapter C*T*C*G*CGATATCTGAGTCG*G*A*G*A (SEQ ID NO:201 )

Aprime6_MID6

454 adapter G*A*C*A*CGCGAGCTGAGTCG*G*A*G*A (SEQ ID NO:202)

Aprime8_ ID8

454 adapter G*C*T*G*ATACTACTGAGTCG*G*A*G*A (SEQ ID NO:203)

Aprime9_ ID9

454 adapter C*G*C*A*TAGAGACTGAGTCG*G*A*G*A (SEQ ID NO:204)

Aprime10_MID10

Adapter B oligonucleotides

454 adapter B /5BioTEG/C*C*T*A*TCCCCTGTGTGCCTTGGCAGTC*T*C*A*G

(SEQ ID NO:205)

454 adapter B prime C*T*G*A*GACT*G*C*C*A (SEQ ID NO:206)

[0236] Table 1.

454 GS FLX library construction and sequencing

[0237] Immunoglobulin VH PCR samples where processed following the 454 GS FLX Titanium General Library Preparation protocol. Briefly, samples where blunt ended and 5' phosphorylated using End-It™ DNA End-Repair Kit (Epicentre Biotechnologies, Madison, WI) in 50 μΐ, reactions according to manufacturer's instructions, followed by QIAquick PCR Purification (Qiagen, Valencia, CA) in the presence of 5 μΐ, of 3M NaOAc, pH 5.5. Roche 454 compatible DNA adapters containing a unique molecular identifier bar-code (MID) for each sample were ligated in a 100 μΐ, reaction volume in the presence of 30 pmoles of both adapter A (including MID 1 to 8) and adapter B (identical for all samples) and 1200 U of Rapid T4 DNA Ligase (Enzymatics, Beverly, MA) at 22°C for 30 min. In order to remove unligated adapters, samples where purified using a 1 : 1 ratio of AMPure XP beads (Agencourt Bioscience Corporation, Beverly MA) and eluted in 50 of 10 mM Tris-HCL. The ends of the ligated fragments of the library-adapters were filled- in in 100 μΐ^ reactions using 32 U of Bst DNA Polymerase (NEB, Ipswich, MA) in the presence of 625 μΜ dNTPs and IX ThermoPol Reaction Buffer. Reactions where purified using the MinElute PCR Purification Kit (Qiagen, Valencia, CA), and eluted in 15 μΐ, of EB buffer. Samples were separated on 6% Novex® TBE Gels (Invitrogen, Carlsbad, CA) at 200 volts for 26 min, from which the proper band (approximately 450 bp) was extracted at 50°C for 1 hr and resuspended in 20 μΐ, of 10 mM Tris-HCL as detailed previously (Vigneault et al. (2008) Nat. Methods 5:777). All steps related to the single-stranded template DNA (sstDNA) library isolation were found to be unnecessary for subsequent emulsion PCR and 454 sequencing. Library concentrations were determined using a 2100 Bionanalyzer (Agilent, Foster City, CA), then diluted to equivalent concentrations. All 8 blood samples, each representing a unique time point and characterized by a unique MID bar-code, were then pooled at an equimolar concentration. Emulsion PCR, bead enrichment and 454 GS FLX sequencing were performed at the 454 Life Sciences facility according to the manufacturer's standard protocol. This entire process (including cDNA synthesis and PCR) was repeated independently multiple times, or specifically on one sample only in order to generate complete technical replicates for the various analyses of the study.

Informatics pipeline [0238] Raw sequencing data was analyzed with the 454 amplicon pipeline to produce quality- trimmed reads. The reads were size filtered for the appropriate amplicon size (350-500 bp) and converted to coding strands by comparing k-mer compositions of the query reads against the IMGT/GENE-DB (Giudicelli et al. 2005 Nucleic Acids Res. 33:D256) database and its reverse complement. The reads were then aligned to the IMGT/GENE- DB reference database to determine the V, D, and J usage, and extract the CDR3 junction region. Briefly, k-mer compositions of query sequences were compared with reference segments to find the top matches, and the best match was chosen using traditional dynamic programming alignment. Reads were then partitioned by V-J usage, and their CDR3 junctions were clustered using single-linkage or complete-linkage agglomerative hierarchical clustering with the Levenshtein edit distance as metric. Clones were defined by cutting the linkage tree at 4.5 edits. By partitioning reads into the separate time points (by identifying their MID bar-code), a time series was defined for each clone. The time series were clustered using k-means clustering with k=100 and the Euclidean distance metric. To eliminate trivial clones that appeared at single time points, clones showing positive counts in at least two time points were filtered. Time series were also clustered using self-organizing maps (SOM) as implemented in the GEDI software package. The analysis software described herein is available for download as a python module (Worldwide Web Site: arep.med.harvard.edu/vdj).

Primer design

[0239] All oligonucleotides were ordered from Integrated DNA Technologies (IDT, Coralville,

IA). For the design of the upstream variable-region oligonucleotides (IGHV-PCR), the L-

PART1 and L-PART2 sequences were extracted from all IMGT/GENE-DB3 reference segments annotated as "functional" or "ORF." These two segments are spliced together in vivo to form the leader sequence. The primer sequence was positioned to cross the exon-exon boundary to ensure amplification from cDNA rather than gDNA. The primers were arranged to have 6 nucleotides 3' of the exon boundary, and ranged from 18-24 nucleotides in length to target their predicted melting temperatures to 60°C. All duplicate sequences where eliminated. For the design of the downstream constant-region oligonucleotides (IGHC-RT and IGHC-PCR), the first 100 nucleotides of the CHI exon were extracted from the IMGT/GENE-DB3. Oligonucleotides were then selected as close as possible to the 5' end of the C-region (close to the variable region of the receptor), starting with 3 nt from the end. These were hand-picked both for IGHC-RT and IGHC- PCR to take advantage of sequence conservation between different variants, and to ensure that isotypes would be distinguishable. All oligonucleotide sequences are shown in Table 1.

Control library In order to assess PCR bias and amplification efficiency, total RNA from multiple individuals was extracted, pooled together, and reverse transcribed as described in the Methods Summary. Independent PCR reactions were conducted for each C-region gene- specific primer (IGHC-PCR) for 25 cycles, from which the proper band of interested was gel extracted as described previously (Vigneault et al., Supra). To monitor the amplification efficiency of the constant region primers, the individual PCR amplicons were quantified using the 2100 Bionanalyzer (Agilent, Foster City, CA), followed by realtime PCR performed in triplicate using the KAPA SYBR® FAST qPCR Kit (Kapa Biosystems, Woburn, MA) on a Bio-Rad CFX96 real time PCR instrument (Bio-Rad, Hercules, CA). Both linear regression PCR (LinRegPCR) (Ramakers et al. (2003) Neurosci. Lett. 339:62) and standard dilution curve analysis were used to determine and compare amplification efficiencies (Table 2).

Individual primer / LinRegPCR LinRegPCR STD curve mean Average reaction mean mean efficiency efficiency efficiency efficiency on on STD curves (1/10 dilution

uniform series series) template (1/5 dilution

concentration series)

(triplicate of

1/125)

VDJ-20080924-IGHG-1 1.774 1.650 1.803 1.742 VDJ-20080924-IGHG-2 1.784 1.740 1.824 1.783

VDJ-20080924-IGHM 1.729 1.757 1.766 1.751

VDJ-20080924-IGHA 1.777 1.731 1.782 1.763

VDJ-20080924-IGHD 1.779 1.726 1.755 1.753

VDJ-20080924-IGHE 1.607 1.541 1.831 1.660

[0241] Table 2.

Positive strand identification of 454 sequencing reads

[0242] Following size-filtering of reads for the expected VH size (Figure 18), coding strands were identified, as it was important for the subsequent alignment pipeline. To do so k- mers were pre-computed using the Positive Strand comb (Table 3) for the entire reference segment database, and separately for its reverse complement. The same k-mers for the query read were then computed, and the coding strand determined by computing the number of shared k-mers of the positive versus negative version of the database.

Comb Pattern

Positive Strand 111111111111

Alignment A 111011001011010111

Alignment B 1111000100010011010111

Alignment C 111111111111

Alignment D 110100001100010101111

Alignment E 1110111010001111

Mini-Alignment A 111011

Mini-Alignment B 110111

[0243] Table 3.

VDJ alignment overview

[0244] VDJ alignment allows identification of which V, D, and J segments are used in a given sequencing read. For each segment, a heuristic method was employed by computing k- mer counts using multiple seed combs (Table 3). The candidate segments were ranked by the amount of overlap in their k-mer distributions. A full dynamic programming alignment was then performed on the highest scoring candidates to determine the best match.

VDJ alignment process

[0245] To maximize the number of distinguishing nucleotides, the alignment was performed in order of decreasing segment length (V then J then D). In order to minimize the amount of off-target sequence (especially for the k-mer counts), the previously aligned V or J region was pruned off before attempting alignment of the next segment. In order to align the V and J segments, 11-mer or 12-mer seeds were computed using the combs listed in Table 3. The k-mer counts were also pre-computed on all reference segments. The top 5 reference V segments and the top 2 reference J segments were chosen for dynamic programming alignment and scoring. Since it was known that the V and J segments must reside at the ends of the reads, a method that is similar to the Needleman-Wunsch algorithm (Needleman and Wunsch (1970) J. Mol. Biol. 48:443) was used. In contrast to the canonical algorithm, zero initial conditions were used to allow the start of the alignment to occur anywhere without penalty. The alignment was then reconstructed and scored by starting at the maximum value of the score matrix along the last row or last column, and backtracing. Finally, the identified V or J segments were removed before proceeding to the J or D alignment, respectively.

D region alignment

[0246] The D alignments were performed similarly. However, the two Mini-Alignment 5-mer seeds listed in Table 3 were used to pick the top 10 reference D segments to carry through to dynamic programming alignment. In this case, the canonical Smith- Waterman local alignment algorithm (Smith and Waterman (1981) J. Mol. Biol. 147: 195) was performed, as no prior information as to where the D segment should reside was available. CDR3 extraction

[0247] The V and J segments were pruned according to the IMGT annotations for the CDR3 junction region: from the second conserved cysteine residue in the V region through the conserved tryptophan or phenylalanine in the J region. This segment was stored as the junction region of the corresponding variable region.

VDJ alignment performance

[0248] Since there was currently no large database of human heavy chain immunoglobulin sequences to validate the performance of the algorithm, the aligner was calibrated using the V-QUEST algorithm provided as part of the IMGT database. 66,497 reads from three different sequencing runs were aligned using the V-QUEST alignment software. For each read, the dynamic programming alignment scores for the V, D, and J regions were computed separately for every possible reference segment, in addition to the correct segment produced with the V-QUEST aligner. ROC curves showed that V region alignment was the most reliable, followed by J, followed by D, as expected (Figure 8). The D region showed the most ambiguous alignment, which was expected due to its short length and high mutated nature. Therefore, the D region alignments were ignored in downstream analyses, and the V and J alignments were focused upon, along with the corresponding CDR3 junction region. The ROC curves were used to choose scoring thresholds to keep the number of falsely matched alignments to approximately 10% or lower.

Sequence clustering

[0249] Sequence clustering was performed in order to group the sequences (reads) into unique clones. This process was primarily used to associate sequences that originated from the same cell/clone, while allowing minor variations attributable to sequencing errors. Single- or complete-linkage agglomerative hierarchical clustering was used with Levenshtein edit distance as the metric. To make the clustering process more tractable, the reads were partitioned based on V-J identity. Within each partition, sequence clustering was performed using only the CDR3 junction sequence. Furthermore, all identical junctions were collapsed prior to clustering to improve performance. Because cluster distances only depended on the unique cluster members, this did not affect the final clustering results (though this is not true for average-linkage clustering methods). As described herein, cluster sizes varied over several orders of magnitude. Below are multiple alignments (using CLUSTALW) of several smaller clusters as illustrations. Most of the differences between sequences were indels near homopolymers, which are the most common mutation type for 454 sequencing.

[0250] Example Cluster 1 :

1 TGTGCGAGAGAGGGCTACGGTGACTACCGTTACTACTACGGTATGGACGTCTGG 54

(SEQ ID NO: 1)

2 TGTGCGAGAGAGGGCTACGGTGACTACCGTTACTACTACGGTATGGACGTCTGG 54

(SEQ ID NO:2)

5 TGTGCGAGAGAGGGCTACGGTGACTACCGTTACTACTACGGTATGGACGTCTGG 54

(SEQ ID NO:3)

6 TGTGCGAGAGAGGGCTACGGTGACTACCGTTACTACTACGGTATGGACGTCTGG 54

(SEQ ID NO: 4)

3 TGTGCGAGAGAGGACTACGGTGACTAC-G —CTACTACGGTATGGACGTCTGG 51

(SEQ ID NO: 5)

4 TGTGCGAGAGGGTACTACGGTGACTACGG CCACTACGGTATGGACGTCTGG 51

(SEQ ID NO: 6)

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

[0251] Example Cluster 2:

1 TGTGCGGCAGTTCCCCCCCCT-NAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO: 7)

3 TGTGCGGCAGTTCCCCCCCCT-NAGGGAACGACATTTT-GGGGTGCTTTTTGAGATCTGG 58 (SEQ ID NO: 8)

9 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTTTGGGGTGCTTTTTGAGATCTGG 59 (SEQ ID NO: 9)

22 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTTTGAGATCTGG 58 (SEQ ID NO: 10) TGTGCGGCAGTTCCCCCCCCCTCAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 58 (SEQ ID NO:ll)

4 TGTGCGGCAGTTCCCCCCCTC AGGAACGACATTT GGGTGCTTTT-GAGATCTGG 53

( SEQ ID N0:12)

TGTGCGGCAGTTCCCCCCCTC—AGGGAACGACATTTT-GGGGTGCTTTT-GAGATC GG 56 (SEQ ID NO: 13)

0 TGTGCGGCAGTTCCCCCCCTC—AGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 56 (SEQ ID NO: 14 )

1 TGTGCGGCAGTTCCCCCCCTC—AGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 56 (SEQ ID NO:15)

3 TGTGCGGCAGTTCCCCCCCTC—AGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 56 (SEQ ID NO:16)

9 TGTGCGGCAGTTCCCCCCCTC—AGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 56 (SEQ ID NO:17)

1 TGTGCGGCAGTTCCCCCCCTC— GGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 56 (SEQ ID NO: 18)

TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO: 19)

7 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:20)

TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:21)

8 TGTGCGGCAGTTCCCCC—CT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 55 (SEQ ID NO:22)

3 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:23)

2 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTTTGGGGTGCTTTTTGAGATCTGG 59 (SEQ ID NO:24)

4 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTTTGAGATCTGG 58 ( SEQ ID NO:25)

6 TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:26)

TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:27)

TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTTTGAGATCTGG 58 (SEQ ID NO:28)

TGTGCGGCAGTTCCCCCCCCT-CAGGGAACGACATTTT-GGGGTGCTTTTTGAGATCTGG 58 (SEQ ID NO:29)

0 TGTGCGGCAGTTCCCCCCTCA GGGAACGACATTT—GGGGTGCTTT—GAGATCTGG 53

(SEQ ID NO:7)

5 TGTGCGGCAGTTCCCCCCCCTCCAGGGAACGACATTT—GGGGTGCTTTT-GAGATCTGG 57 (SEQ ID NO:30) xample Cluster 3 :

4 TGTGCGACGG-TGGGA-GTTCCCC-ACCGGTTTT-GATATCTGG 40

(SEQ ID NO:31)

9 TGTGCGACGG-TGGGACGTTCCCCTACCGGTTTT-GATATCTGG 42

(SEQ ID NO:32) TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 33)

6 TGTGCGACGG-TGGGA-GTTCCC—AC-GGTTTT-GATATCTGG 38 (SEQ ID NO:34)

TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:35)

TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:36)

TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 37)

1 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:38)

0 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:39)

7 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:40)

2 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:41)

8 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:42)

3 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:43)

9 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 44)

5 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 45)

9 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:46)

4 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 47)

9 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 48)

4 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 49)

2 TGTGCGACGG-TGGGA-GTTCTC—ACCGGTTTTTGATATCTGG 40 (SEQ ID NO:50)

7 TGTGCGACGG-TGGGA-GTTC-C—ACCGGTTTT-GATATCTGG 38 (SEQ ID NO:51)

0 TGTGCGACGG-TGGGA-ATTC-C—ACCGGTTTT-GATATCTGG 38 (SEQ ID NO: 52)

0 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTTTGATATCTGG 40 (SEQ ID NO:53)

4 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTTTGATATCTGG 40 (SEQ ID NO: 54)

4 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTTTGATATCTGG 40 (SEQ ID NO: 55)

4 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTTTGATATCTGG 40 (SEQ ID NO: 56)

7 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTTTGATATCTGG 40 (SEQ ID NO: 57)

5 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTTTGATATCTGG 40 (SEQ ID NO: 58)

7 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTTTGATATCTGG 40 (SEQ ID NO:59)

3 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 60)

5 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 61)

2 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 62)

8 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 63)

3 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 64)

9 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 65)

5 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 66)

0 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 67)

6 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 68)

1 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 59)

5 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 70)

1 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 71)

8 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 72)

3 TGTGCGACGG-TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 73)

9 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 74)

2 TGTGCGACGG-TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 75)

5 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 76)

8 TGTGCGACGG-TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 77) 101 TGTGCGACGG TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 78)

23 TGTGCGACGG TGG-A-GTTCCC -ACCGGTTTT-GATATCTGG 38 (SEQ ID NO:79)

51 TGTGCGACGG' TGG-A-GTTCCC -ACCGGTTTT-GATATCTGG 38 (SEQ ID NO: 80)

80 TGTGCGACGG TGG-A-GTTCCC —ACCGGTTTT-GATATCTGG 38 (SEQ ID NO:81)

17 TGTGCGACGG' TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 82)

25 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 83)

30 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:84)

35 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:85)

40 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 86)

46 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 87)

52 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 88)

57 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 89)

62 TGTGCGACGG TGGGA-GTTCCC --ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 90)

66 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 91)

72 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:92)

81 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 93)

84 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 94)

90 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 95)

93 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 96)

96 TGTGCGACGG TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 97)

99 TGTGCGACGG' TGGGA-GTTCCC —ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 98)

100 TGTGCGACGG TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 99)

97 TGTGCGACGG' TGGGA-GTTCCC -ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:100)

94 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 101)

91 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 102)

86 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 103)

82 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:104)

77 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 105)

75 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 106)

73 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 107)

68 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 108)

63 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 109)

58 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 110)

53 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 ( SEQ ID NO:lll)

48 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 112)

41 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 113)

37 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:114)

31 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:115)

26 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 116)

19 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 117)

9 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO:118)

7 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO.-119)

5 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 120)

2 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTT-GATATCTGG 39 (SEQ ID NO: 121)

14 TGTGCGACGG-TGGGA-GTTCCC-TACCGGTTTT-GATATCTGG 40 (SEQ ID NO: 122) 21 TGTGCGACGG-TGGGA-GTTCCC-TACCGGTTTT-GATATCTGG 40

(SEQ ID NO: 123)

42 TGTGCGACGG-TGGGA-GTTCCC-TACCGGTTTT-GATATCTGG 40

(SEQ ID NO: 124)

102 TGTGCGACGG-TGGGA-GTTCCC-TACCGGTTTT-GATATCTGG 40

(SEQ ID NO: 125)

18 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTT—GATATCTGG 38

(SEQ ID NO: 126)

54 TGTGCGACGG-TGGGA-GTTCCCCTACCGGTTTT-GATATCTGG 41

(SEQ ID NO: 127)

60 TGTGCGACGG-TGGGA-GTTCCCCTACCGGTTTT-GATATCTGG 41

(SEQ ID NO: 128)

76 TGTGCGACGGGTGGGACGTTCCCCTACCGGTTTT-GATATCTGG 43

(SEQ ID NO: 129)

88 TGTGCGACGG-TGGGA-CTTCCC—ACCGCTTTT-GAT TCTGG 39

(SEQ ID NO: 130)

29 TGTGCGACGG-TGGGA-GTTCCC—ACCGGTTTTGATTATCGTG 40

(SEQ ID NO: 131)

36 TGTGCGACGG-TGGGACGTTCCCCTACCGGTTTTGAT-ATCGTG 42

(SEQ ID NO: 132)

* * * * * * * * * * * * * * * * * * * * * * * * * * *

[0253] The distribution of cophenetic distances observed in the linkage tree was then examined in order to determine the optimal distance to clip the tree. It was expected that a large number of linkage events occurring at low cophenetic distance that represent sequencing errors would be observed. Indeed, a rapid drop in the distribution was observed until a distance of 4-5 edits, after which the distribution showed a shoulder and a slower descent (Figure 19A). This was consistent with the observed relationship between distance cutoff and number of clusters obtained (Figure 19B), as there was also a rapid drop at short distance followed by a shoulder and marked slowing.

Time series clustering: k-means

[0254] While the sequence clustering described above was performed on combined data for all eight time points, each unique clone identifier was further partitioned into the 8 time points by identifying the 454 MID bar-codes. Each clone thus defined a time series where the number of reads was a proxy for expression level. As an initial analysis, k- means clustering was performed on all time series using combined data from runs SRI, SR2, and TR1. The k-means algorithm was performed on clone frequencies (read counts in a given time point normalized by the number of reads) using the Euclidean distance metric with 100 clusters (chosen arbitrarily). The largest clusters contained clones that appeared for a single time point and disappeared. This was observed at a variety of expression levels and at all time points (Figure 15A). When these clusters were filtered out and k-means clustering performed again, a large variety of dynamic behavior was observed. However, some of the largest clusters were still clones that rapidly rose and fell in frequency (Figure 15B).

Time series clustering: self-organizing maps (SOM)

[0255] Due to the arbitrary selection in clone number for k-means clustering and the large diversity of dynamic behavior, the time series was clustered using a SOM method as implemented in the GEDI software package (Eichler et al. (2003) Bioinformatics 19:2321). Each tile within a mosaic represented a mini-cluster of clones that have highly similar expression patterns across all the analysed time points. By defining a topology on the tiles, similar clusters are grouped together, allowing simple determination of the proper number of cluster groups. The same clones are forced to the same mosaic position for all SOM maps, allowing direct comparison of the clones based on the overall mosaic pattern. The color of tiles indicated the centroid value of gene expression level for each mini-cluster. SOM clustering was performed on a rectangular, 50x49 grid using random initialization. An Euclidean distance was defined on the time series, and two training iteration phases were performed (20 and 80). Following clustering, clusters of interest were manually identified for further analysis.

Reproducibility, sampling requirements, and limits of quantitation

[0256] Multiple analyses were performed to determine whether the VDJ-ome was sampled deep enough and to what level the dynamics could be reliably quantified (i.e., the limit of quantitation (Currie (1968) Analytical Chemistry 40:586)). The replicate time series of randomly chosen clones was plotted (from runs SRI, SR2, and TR1) to get a qualitative view of the replication (Figure 15). Scatter plots of replicate runs showed high levels of correlation (Figure 9, Pearson correlations shown). To determine the sampling characteristics of the samples, pairs of subsamples of the data were drawn of different sizes and correlation coefficients were computed (Figure 2C). The correlation coefficients approached unity at a sampling level of 105. To determine limits of quantitation, scatter plots were generated for each time point of a given replicate against another. The data were binned on one axis and the mean and standard deviation were computed on the other axis. Using these values, the coefficient of variation (CV) was computed as a function of expression level (Figure 10). It was expected that higher expression levels would have lower relative variances and so should have resulted in smaller CVs. The noise in the middle of the curves was an artifact of the weighted sampling scheme used, and noise was also observed at high expression levels due to poor sampling. A lower limit CV of approximately 0.5 occurred at clone frequencies of <10"4- 10" , depending on the samples. Sampling of lower frequency clones rapidly approached the Poisson noise regime (CV of 1). Different numbers of reads in different time points/replicates caused the onset of Poisson noise at different frequencies.

Diversity estimates Multiple methods were utilized to estimate antibody diversity. To estimate typical diversities of small 1 mL blood samples, the Chaol and ACE abundance-based estimators were used (Magurran, A.E. Measuring Biological Diversity. (Blackwell Pub., Maiden, MA; 2004)). Briefly, Chaol and ACE were derived as non-parametric abundance-based estimators for diversity. Following Magurran, if Sobs was the number of species observed in the sample, F1 was the number of species observed once (singletons), and F2 was the number of species observed twice (doubletons), then the Chaol estimator was defined as

'Chaol

[0258] If Srare was the number of rare species (species with less than or equal to 10 observations), Sabund was the number of abundant species (species with greater than 10 observations), Nrare was the number of individuals in rare species, Ft was the number of species with i observations, CACE = 1 - Fl/Nrare , and

then

[0259] However, the samples used were non-homogeneous in that they were drawn at varying time points after an immune challenge, which may affect the antibody distribution, as compared to homogeneous samples. It was expected that such effects would be small, and so the estimators were still applied. More significantly, the coverage level just passed an inflection point (indicating the start of convergence towards an asymptote). In such cases, the actual diversities tended to be higher than the estimate values, and the estimators functioned as lower bounds on diversity. The re-sampled versions of these estimators are shown in Figures 12A-12D. Inflection points were observed for almost all curves, indicating approach towards an asymptote.

[0260] Similarly, the analogous incidence-based estimators Chao2, ICE, Jackl , Jack2 (Magurran, Supra) were used to estimate total blood diversity, using the multiple blood samples analogously to multiple quadrants in ecology. The same statistical considerations applied to these sets of estimators. The results are shown in Figure 2E. The diversity estimation method of Arstila et al. (Arstila et al. (1999) Science 286:958) was also simulated using every possible V-J combination and every possible pseudo-spectratype peak. This method did not take statistical considerations into account a very large range of possible diversity estimates was expected. Indeed, a very broad distribution of values was obtained, though the mean value was still near the 106 range (Figure 2E).

Distribution of fluctuations

[0261] To characterize the dynamics of the antibody clones further, we analyzed the distribution of their typical fluctuations. For time series that were positive at all time points, the log- fold change from one time point was computed over the preceding time point. The distributions are shown in Figures 20A-20B. They appeared to be log-normally distributed and centered at zero. The -14 d time point distribution was off-center due to a sampling artifact. It was also expected that the variance of the distribution would be correlated with the duration of the time interval (i.e., longer durations lead to larger fluctuations). Indeed, Figures 20A-20B show a strong correlation, with a Pearson correlation coefficient of 0.91.

Pseudo-spectratype generation

[0262] For each time point, the count data was partitioned by V-J usage and then by CDR3 junction length. For each possible in-frame length (multiple of 3) the number of in-frame reads were computed versus out-of-frame reads that were one base too long or too short, and fitted this data to a Gaussian distribution. For each V-J combination, all such Gaussians were superposed and the curve renormalized to the total number of reads. Full pseudo-spectratypes are shown in Figure 13. The use of Gaussians were for visualization purposes only.

Alignment to specificity-annotated IMGT/LIGM database

[0263] The IMGT/LIGM database (Giudicelli et al. (2006) Nucleic Acids Res. 34:D781) contains about 9000 sequences with annotated specificities, 14 of which are specific for influenza hemagglutinin, 6 for hepatitis A, and 85 for hepatitis B. Though this represents a very small sample, the sequencing reads to this set of specificity-annotated sequences were aligned to search for highly identical sequences. To perform the alignments, the exonerate software package (Slater and Birney (2005) BMC Bioinformatics 6:31), which allows alignment using various alignment models, was used. Alignments were performed using either the full read or only the CDR3 junction, and using translated versions and/or nucleotide versions of the sequences. Because many background matches were expected (in the case of full read alignment), and due to the sensitivity of binding affinity to the exact amino acid sequence, the alignments were ranked by sequencing identity, and only matches that were almost completely identical were analyzed by hand. Examples of matches to influenza-specific or hepatitis-specific (Figures 21 and 22) antibodies were performed using full nucleotide sequence alignment. Poor alignment was observed at the CDR3 junction region, which is the most common form of misalignment. The best matching alignment was found by aligning translated junction regions only. An anti- digoxin antibody was successfully matched. The junction-only alignment (Figure 23) and the full read alignment (Figure 24) are shown.

Software tools and data availability The analysis software package used for the experiments described herein is available for download at the Worldwide Web Site: arep.med.harvard.edu/vdj, or the latest version can be pulled as a git repository from GitHub at the Worldwide Web Site: github.com/laserson/vdj. The software was implemented primarily in python with some C code used to increase performance. The NumPy (the Worldwide Web Site: numpy.scipy.org/) and SciPy (the Worldwide Web Site: scipy.org/) packages were also heavily relied upon for numerical calculations, and the matplotlib (the Worldwide Web Site: matplotlib.sourceforge.net/) package was relied upon for data visualization. The sequencing data is available for download in FASTA format at the Worldwide Web Site: arep.med.harvard.edu/vdj along with processed versions of it in XML format. The sequencing data will be submitted to the NCBI Short Read Archive, and to the international ImMunoGeneTics (IMGT) database for incorporation into Laboratoire d'ImmunoGenetique Moleculaire (LIGM).

EXAMPLE V

Heavy and Light Chain Capture From A Unique Cell

[0265] Methods are provided to capture both the heavy and light chains of an antibody originating from a single, enabling the simultaneous capture of millions of cells at once (instead of prior arts of sorting one cell per well in a plate).

Small oligo-transfection of single cells

[0266] Two oligos, each presenting a complementary sequence to the heavy and light chain respectively, are partially annealed to each other through a universal sequence. This partial annealing bond is maintained in subsequent step and the use of locked nucleic acid (LNA) can be useful for this purpose. The oligos can also harbor phosphorothioates to protect the oligo from nucleases. Additionally, a distal or internal biotin can be included in one or both of the oligos, which will be use in recovery or the molecules downstream. This oligo linker is then transfected into lymphocytes samples using common transfection technologies such as TransIT®-01igo Transfection Reagent (Mirus Bio LLC) for example. The transfection component can also include RNase inhibitor as a precaution. The cells are then incubated at higher temperature so that annealing of the cell RNA that one which to capture is accomplished (can also be done with DNA). Ideally, the temperature is raised enough to favor melting of the targeted RNA secondary structure and to achieve specific annealing to the oligo linker by matching melting temperature as close as possible (generally near 65 °C), while the partial annealing of the two oligos is maintain due to the inherent sequence design (particularly with the use of LNA primers, where the annealing junction can be design to reach temperature above 90°C). Following incubation annealing of the targeted RNAs, the cells can be chemically lysed and the oligo linker-target RNA molecule recovered through its biotin using a streptavidin coated magnetic bead (such as Dynabead M280 form Invitrogen, or other equivalent). One could also use any other solid substrate coated with streptavidin. The oligo linker 3' end can then be used directly for reverse transcription (using superscript III, Invitrogen, or other equivalent reverse transcriptase) of both the heavy and light chains, followed by second strand cDNA synthesis. The final molecule is amplified off the magnetic beads using distal primer with results in the recovery of a full ScFv composed of the heavy and light chains originating form a single cells, and this accomplished in millions of cells at once in the same reaction sample.

Bead Capture In certain exemplary embodiments, a magnetic bead is coupled with a mixture of oligos complementary to the heavy and light chains but also harboring a universal sequence upstream (a non-magnetic bead will work, however magnetic beads facilitate downstream washes and recoveries). In certain aspects, covalent coupling chemistry or streptavidin- biotin linkages (e.g., if a biotin is added to the oligos during manufacturing) are used to produce oligo-beads. The oligo-bead is then either transfected into single cells using common transfection technologies, or liposome based transfection approaches (as long as the bead is small enough to be transfected), or the bead (or a few beads), is encapsulated inside an emulsion in the presence of a single lymphocyte. The cell is then lysed using heat denaturation or using freeze thaw cycles. In certain aspects, RNase inhibitors are added during the emulsification step. The emulsions are then either PCR amplified

(assuming PCR and primer were also introduce during the emulsification), or the incubated at an optimal oligo hybridization temperature and/or salt concentration such that both heavy and light chains will anneal to their complementary sequence on the bead.

The emulsions are then broken and the beads recovered. Unbound cell components and non-specific DNA or RNA are washed away and the resulting bead-RNA is subjected to reverse transcription (for RNA) or primer extension (for DNA), so that the bead now harbor the full heavy and light chains sequence of a same single cell. These beads can then be subjected to any of the described techniques to link both chains together prior sequencing, such as overlapping PCR (SOE-PCR), or using CRE-LOW recombination of both chains either in emulsion, or in a super diluted reaction. Cre-lox linking of single cell heavy and light chains has been demonstrated previously in formaldehyde cross- linked lymphocytes but with very poor efficiency (Chapal et al. (1992) Biotechniques, PMID: 9298226), whereas methods provided herein have coupled cross-linking to the process of high-throughput sequencing, thus enabling one of ordinary skill in the art the ability to survey large immune repertoire.

SOE-PCR variation SOE-PCR has never been coupled to the methods of high-throughput sequencing and analysis of large immune repertoire, but has instead always been limited to the study of a limited number of cells (such as conducted by Symphogen in their Symplex technology (Worldwide Web: symphogen.com/web/guest/symplex ) described by Meijer (2006) J Mol. Biol., PMID: 16563430, for example). Accordingly, multiple methods of SOE-PCR are provided that improve efficiency. These methods are used in single cell SOE-PCR by either capturing single cell in emulsion or by cross-linking cells in formaldehyde as described further herein. This allows for generation of single cell ScFv of millions of single cells in a single reaction volume, so that it can be coupled with high-throughput sequencing and analysis of immune repertoires.

EXAMPLE VI

Expression and Functional Assay of Antibody and Nanobody Selected Candidates From High-Throughput Sequencing Analysis of a Human Immune Repertoire

In vitro expression of single domain antibody [0269] 1. A random colony from each clone was lifted by toothpick and inoculated into 5 mL of LB/Amp, and bacteria were incubated overnight at 37 °C in shaking at 225 rpm.

[0270] 2. Bacteria were centrifuged at 4,700 g for 10 min, sup was discarded and pellets were used for miniprep (using a Qiagen miniprep kit).

[0271] 3. Transcription reactions were set up: Nuclease free water 8 μϋ; 5X Transcription buffer 4 μί; NTP mix 4 μί; DNA template (-0.5 μg/mL) 2 μΐ,; T7 RNA polymerase 2 μΐ; TOTAL 20 \JL.

[0272] 4. Reaction was incubated for 120 min at 32 °C. The solutions became cloudy after this time, indicating efficient transcription (calcium precipitates).

[0273] 5. Translation reactions were set up directly: Lysate for protein expression 12.5 Accessory proteins 2.5 μϋ; Nuclease free water 3.75 μϋ; Salt Solution A 1 μΕ; Amino acids -Met 0.5 μΕ; Amino acids -Leu 0.5 μϋ; RNase inhibitor 1 ^L; Energy mix 1.25 μΤ; RNA template from transcription reaction 2 μϋ; TOTAL 25 μί,.

[0274] 6. Translation reactions were incubated at 32 °C for 2 hours, then 2 μΐ^ of the transcription reaction was added.

[0275] 7. The reaction was incubated for further 2 hours at 32 °C, then spiked again with 1 μί, of the transcription reaction and incubated for further 2 hours.

Proteins were purified as follows

[0276] 1. The reaction was diluted with 28 μΐ, of 2X His binding buffer (40 mM phosphate, 1 M NaCl, 40 mM imidazole, pH 7.4). [0277] 2. Samples were cleaned on Vivaspin 0.2 μηι columns to get rid of all debris and large complexes.

[0278] 3. Ni-NTA sepharose resin (Amersham) was gently swirled for 5 minutes until all slurry was homogenous, then a total amount of (50 μΐ, x (# samples + 1)) was transferred to a 1.5 mL tube.

[0279] 4. Resin was washed 3 times with IX His binding buffer (20 mM phosphate, 0.5 M NaCl, 20 mM imidazole, pH 7.4) to remove ethanol and equilibrate resin.

[0280] 5. 50 μΐ, of the resin were added to each sample.

[0281] 6. The samples were flipped overnight at 4°C.

[0282] 7. Samples were washed 3 times with 150 μΐ, of His binding buffer.

[0283] 8. Proteins were eluted from resin in 100 μΐ, of His elution buffer (20 mM phosphate, 0.5 M NaCl, 0.5 M imidazole, pH 7.4) by flipping at RT for 1 hour.

[0284] 9. Resin was removed and samples were desalted using Vivaspin 5K as follows: a.

Vivaspin 5K columns were equilibrated with 0.4 mL of PBS. b. 100 μΐ, of sample were added to the column, c. Columns were placed in centrifuge with filter facing outwards, then centrifuged (15,000 g, 15 min). d. Flow-thru was discarded, and sample was resuspended in 0.4 mL of PBS and centrifuged again, e. Step d was repeated two additional times, f. Retentates (~50 average) were transferred to fresh tubes, sodium azide solution was added to a final concentration of 0.02% and the samples were stored at 4 °C. Protein concentration and/or purity was evaluated using Nanodrop.

Gene synthesis and cloning protocol [0285] PCR amplify IDT gene synthesis using Ml 3 forward and reverse primer

[0286] Assemble a reaction as follows (1 tube / 13 tubes): ~50 ng/μΐ Gene synthesis (1 μΐ/ -); d¾0 (34.6 μΐ / 449.8 μΐ); 5x HF buffer (10 μΐ / 130 μΐ); 15μΜ primer 1 * (1.7μ1 / 22.1 μΐ); 15μΜ primer 2* (1.7 μΐ / 22.1 μΐ); 25 mM dNTP (0.5 μΐ / 6.5 μΐ); Phusion Hotstart (0.5 μΐ / 6.5 μΐ); (49μ1/ηΛε). Thermal cycle as follows: 9 to 12 cycles

1- 98°C for 30 sec

2- 98°C for 10 seconds

3- 50°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 25x

5- 72°C for 5 min

6- 4°C pause

[0287] Qiagen purify, resuspend in 30μ1.

Double Digest with EcoRI-HF and Notl-HF

[0288] Assemble reaction as follows ltubes 13tubes

• H20 10.5 (ΐο 50μ1) 136.5

• DNA 30μ1

• lOxNEB buffer 4 5μ1 65

• lOOx BSA 0.5μ1 6.5

• Notl-HF 2μ1 26

• Ecorl-HF 2μ1 26

Incubate at 37°C for 15 min (20μ1/πΛε8). Heat incativate at 65°C for 20 min

[0289] Qiagen purify, elute in 42 (will load 20 one gel); Nanodrop a few ~50¾/μ1. Extract using size selct gels : Qiagen purify, elute in 30μ1; Nanodrop : ~9¾/μ1.

Ligation into thermo expression vector [0290] Used 3 : 1 ratio inserts to vector Assembled reaction as follows (ltube / 14tubes) : H20 (4μ1 / 56 μΐ); 2x Ligase buffer (10 μΐ / 140 μΐ); Vector SOng/μΙ (2μ1 (0.04 pmole) / 28 μΐ); -350 bp Inserts (9ng^l) (3 μ1 (0.12 pmole = 30ng) / - μΐ); Rapid ligase (1 μΐ / 14 μΐ); (ΐ νμΐ/tubes). Incubate at 22°C for 30 min. Performed the cloning with XI 0 cells. Plated 200μ1 using beads, this morning plate were full, nice results. Recloned in NEB Shuffle T7 competen e coli (at C3026H). Used Ido mini prep, diluted 3-fold, used 1 μΐ (-80 ng) in 25μ1 of E. coli. Grew midi batch of selected clones.

[0291] Picked one colony into 50 ml LB +l x Ampicilin, grew overnight at 30°C

Redone [0292] Recloned in T7 shuffle E. coli : 3, 6, 7, 8, 10, 12. Uses 2 μΐ of 13 dilution in 20 μΐ of T7 shuttle E. coli (NEB C3026H). Plated 200 μΐ on super large plate (too much, plenty of clone, try 100 ul next time). Grew one colony each in 5 ml of LB at 30 °C overnight. Used this a starter culture 500 μΐ for 50 ml LB + lOOOx ampi (50 mg/ml use at IX). Grew for 3-4 hr, checked OD. Nanodrop. Cuvette : 0.3. Pedestal : 0.08 (nanodrop says that should be 10-fold lower then regular OD600). Kept some of 10 cell lysate for direct SPR testing.

[0293] Q8: How should I express my protein of interest in Shuffle? A8: For initial conditions we recommend using rich media at 30 °C. Otherwise, overnight at 16 °C is possible. At 30 °C or 16°C, inoculate 1% overnight culture and grow cells at 30 °C for 3 hours until OD600 ~ 0.8 and then induce expression of protein for at least 5 hours at 30 °C or overnight at 16 °C. If using 37°C, inoculate 1% overnight culture and grow cells for 2 hours at 37°C until OD600 -0.8 and then induce expression of protein for at least 6 hours at 37°C.

Protocol

[0294] Transformed expression plasmid into the T7 Express strain. Plated on antibiotic selection plates and incubate overnight at 37°C. Resuspended a single colony in 10 ml liquid culture with antibiotic. Incubated at 37°C until OD600 reached 0.4 - 0.6. Induced with 40 μΐ of a 100 mM stock of IPTG (final concentration of 0.4 mM) and induced for 2 hours at 37 °C. Checked for expression either by Coomassie stained protein gel, Western Blot or activity assay. Checked expression in both the total cell extract (soluble + insoluble) and the soluble fraction alone. For large scale, inoculated 1 L of liquid medium (with antibiotic) with a freshly grown colony or 10 ml of freshly grown culture. Incubated at 37 °C until OD600 reached 0.4 - 0.6. Added IPTG to 0.4 mM. Induced 2 hours at 37°C or 15°C overnight.

IPTG induction [0295] Cultures were grown for 4 hr total. IPTG was at 800 mM thus, added 25 μΐ to each 50 ml culture flask. Incubated for 6 hr at 30 °C (so stop it not before 8h30). Pelleted bacterial cells by centrifugation at 5,000 x g for 10 minutes, (ultracentrifuge). Removed supernatant and stored at -80 °C

Procedure for Extracting Protein from Bacteria (B-PER protocol from Thermo)

[0296] Optional: Add 2 μΐ of lysozyme and 2 μΐ of DNase I per 1 ml of B-PER Reagent. Add EDTA-free protease inhibitors. Add 4 ml of B-PER Reagent per gram of cell pellet. 0.5g was obtained thus, add 2 ml. Pipetted the suspension up and down until it is homogeneous. Incubated 10-15 minutes at room temperature. Centrifuged lysate at 15,000 g for 5 minutes to separate soluble proteins from the insoluble proteins. Note: If a large percentage of over-expressed protein remains in the pellet, the protein of interest might be expressed in inclusion bodies. Either use the Inclusion Body Solubilization Reagent (Product No. 78115) or alter the expression conditions to minimize inclusion body formation.

Purification of His-tag using Ni-NTA resin

[0297] For native conditions prepared the following buffers: Equilibration Buffer: 20 mM sodium phosphate, 300 mM sodium chloride (PBS) with 10 mM imidazole; pH 7.4; Wash Buffer: PBS with 25 mM imidazole; pH 7.4; Elution Buffer: PBS with 250 mM imidazole; pH 7.4.

Procedure for Purification of His-Tagged Proteins by Batch Method

[0298] The HisPur Ni-NTA Resin allows for purification strategy customization. Purification conditions can be scaled as needed. The procedure may be performed at room temperature or at 4°C. Added an appropriate amount of Ni-NTA resin to a tube.

Centrifuged tube for 2 minutes at 700 x g and carefully remove and discard the supernatant. Add two resin-bed volumes of Equilibration Buffer and mix until the resin is fully suspended. Centrifuged tube for 2 minutes at 700 x g and carefully remove and discard buffer. Prepared sample by mixing protein extract with Equilibration Buffer so that the total volume equals two resin-bed volumes (instead added all component of equilibration buffer to sample so that sample is at lx, then added 1 bed volume to resin, then added 650 μΐ of resin slurry to sample).

[0299] Added the prepared protein extract to the tube and mix on an end-over-end rotator for 60 minutes. Centrifuged the tube for 2 minutes at 700 x g. If desired, save supernatant for downstream analysis. Washed the resin with two resin-bed volumes of Wash Buffer. Centrifuged the tube for 2 minutes at 700 x g. If desired, save supernatant for downstream analysis. Repeated wash step and monitored supernatant by measuring its absorbance at 280 nm until baseline was reached. Eluted bound His-tagged proteins using one resin- bed volume of Elution Buffer. Centrifuged tube for 2 minutes at 700 x g. Carefully removed and saved the supernatant. Repeated this step twice, saving each supernatant fraction in a separate tube. Monitored protein elution by measuring the absorbance of the fractions at 280 nm or by Coomassie Plus (Bradford) Assay Reagent (Product No. 23238) or Pierce® 660 nm Protein Assay (Product No. 22660). The eluted protein could be directly analyzed by SDS-PAGE. Note: To remove imidazole for downstream applications, used gel filtration (e.g., Thermo Scientific Zeba Spin Desalting Columns) or dialysis (e.g., Thermo Scientific Slide -A-Lyzer Dialysis Cassettes). Samples containing 6 M guanidine'HCl must be dialyzed against a buffer containing 8 M urea before SDS- PAGE analysis. The Thermo Scientific Pierce SDS-PAGE Sample Prep Kit (Product No. 89888) may also be used to remove guanidine.

[0300] Nanodrop phase A280

Wash 2 1.19

Wash 3 0.343

Elute 1 0.875

Elute 2 0.308

[0301] Vivaspeen clean up and concentrate. Tubes were centrifuged (15,000 g, 5 min) and supernatant was desalted by running on vivaspin 5K columns (15,000 g, 15 min), after each wash flow-thru was discarded and retentate was reconstituted to 0.5 mL with PBS, repeated 4 times. Average retentate volume after each wash was ~100 mL. Proteins were examined in Nanodrop. A280

[0302] Nanodrop phase A280

[0303] SDS-PAGE

[0304] MOPS, 200 volt 45 minutes (Figures 63, 64) SDS take 2

[0305] Ran first batch of protein on, also loaded sample protein clone 3 post miltenyi his-tag second purification. MOPS, 200 volts, 30 minutes (should have done 45 minutes) (Figure 95). Protein was in 0.5% BSA and 10% glycerol. Big stuff was BSA. 1, NEB ladder; 2, clone 6 Ni-NTA; 3, clone 2 post myltenyi; 4-11, Mi-NTA (+BSA)

Re-clean and concentrate DNA of clone 393 (the potential neutralizer)

[0306] Pulled 3 wells, AMPure purified, resuspend in 15 μΐ H20. Nanodrop:500ng/ul In vitro translate (thermo human in vitro expression kit) transcription

[0307] Will make 600 μΐ of final protein kit (20x 25 μ^ΐ), thus need 40 μΐ of transcription reaction (sO 2 reaction worth).

1 tube 8 tubes

Nuclease-free Water 8 16

5X Transcription Buffer 4 8

NTP Mix 4 8

Cloned DNA (500 ng/μΐ) 2 4

T7 RNA Polymerase 2 4

Total 20 40

[0308] Gently mixed tubes and incubated for 60-75 minutes at 32 °C. Translation

[0309] Added the reagents in the order listed into a 1.5 or 0.5 ml RNAse/DNAse-free tube. For best results, incubated the Lysate with the Accessory Proteins for 5 minutes before adding subsequent components.

1 tube 20 tubes (in one 1.5 ml)

Lysate for Protein Expression 12.5 250

Accessory Proteins 2.5 50

Nuclease-free Water 3.75 75

Salt Solution A 1 20

Amino Acid minus Met 0.5 10

Amino Acid minus Leu 0.5 10

RNase Inhibitor (optional) 1 20

Energy Mix 1.25 25

Transcription Mix 2 40

Total 25 500

[0310] Split in 5 tubes of 100 μΐ. Incubated at 30 °C on PCR for 4 hr, then 4 °C overnight Purification test

[0311] Split in 5 tubes of 95 μΐ: 1, lysate; 2, mylteniy (use 50 μΐ of beads in 500 μΐ of lysis buffer); 3, Invitrogen; 4, Cobalt Thermo; 5, Ni (Table 17).

Table 17.

[0312] SDS page. MES buffer, run 35 minutes, simply blue staining (Figure 65). The cloning may have put the His tag out of frame, but the protein is in frame.

Functional assay protocols

FACS assay preparation

[0313] 1. Half of the protein samples were labeled with FITC as follows: a. ~20 μΐ, of the protein sample was transferred to a 0.2 mL tube, and the volume was reconstituted to 100 μΐ, with PBS (final concentration of protein was estimated to be 0.01 mg/mL); b. ~1 mg of FITC (Pierce) was dissolved in 1.5 mL of DMF; c. 1 μΐ, of the FITC/DMF solution was added to the sample, and the tubes were incubated in the dark at RT for 30 min; d. Proteins were cleaned from excess FITC by Vivaspin 5K columns and washed 2 times with 0.4 mL PBS; e. Sodium azide was added to a final concentration of 0.02% and the samples (~20 μί) were stored at 4 °C until use.

[0314] 2. HA proteins (Bris59, BrislO and Flor04, purchased from Sino Biologicals, China) were biotinylated using EZ-Link-NHS-Biotin (Pierce) by incubation on ice for 1 hour and then cleaning on Vivaspin 10K columns, with 2 washes with 0.4 mL PBS.

[0315] 3. The biotinylated HA proteins were used to coat Dynal streptavidin-coated magnetic beads by incubation in PBS (10 μΤ beads, 5 μΤ biotinylated protein, in 100 μΤ PBS total volume), with flipping, at RT for 1 hour.

[0316] 4. Beads were washed 3 times with 100 uL of bead assay buffer (0.1% BSA, 10% glycerol, 0.02% sodium azide in PBS, pH 7.4) using a magnet.

[0317] 5. Finished beads were stored in 100 μί assay buffer at 4 °C until use.

FACS assay

[0318] 1. 1 μΤ of bead suspension (vortexed shortly before use) was mixed with 5 μΐ, of antibody solution and 19 μΐ, of FX buffer (0.1% BSA, 0.02% sodium azide in HBSS, pH 7.4) 30 min on ice (final antibody concentration ~ 10 μg/mL).

[0319] 2. Samples were reconstituted with 25 μΤ cold FX buffer and analyzed by Accuri C6 flow cytometer.

QCM measurements of antibody/antigen binding

[0320] Crystals were coated with antibody a day prior to experiment as follows: [0321] 1. QCM gold crystals (purchased from Qsense) were coated with HS-PEG-NH2 (from Nanocs) by incubating with 100 uL of a 5 mg/mL solution of HS-PEG-NH2 in ultrapure water in a humid chamber, 1 hour at RT.

[0322] 2. Crystals were washed gently with 0.5 mL of PBS.

[0323] 3. 30 μL of antibody solution (~ 1.5 μg total protein) was mixed with 70 μL PBS containing 200 pmol of EDC and 200 pmol of sulfo-NHS (both from Pierce, sulfo-NHS is no weigh, mixed with 22 μΐ, of ultrapure water prior to mixing), incubated at RT for 1 minute, then applied onto the crystal surface and incubated at RT for 1 hour in a humid chamber.

[0324] 4. 1 of a 10 mg/mL solution of BSA was added and the liquid phase was mixed gently.

[0325] 5. Humid chamber was moved to 4 °C for overnight storage without washing off antibody.

QCM measurements were performed on a Qsense E4 instrument as follows

[0326] 1. PBS was flown through the cells at 0.1 mL/min until crystals were equilibrated (-30 minutes).

[0327] 2. 2 mL of HA protein solutions (1 and 10 μg/mL) were flown through the cells switching back to PBS after sample is finished.

[0328] 3. Crystals were washed with 0.1 M NaOH in between different concentrations. Purification of E. coli expressed nanobodies

[0329] 1. Cell pellets (supernatant thoroughly removed, pellets frozen at -20 °C) were resuspended in 1 mL lysis buffer (10 mM Tris-HCl pH 7.5, 1 mM EDTA, 0.05% Triton X-100, 5 μg/nlL DNase I, IX protease inhibitor cocktail from Pierce)

[0330] 2. Suspensions were transferred to conical 15 mL tubes and sonicated by a standard probe sonicator, while kept on ice. Sonication parameters: [10 sec on + 5 sec off] x 4 pulses, 100 % output.

[0331] 3. Sonicates were centrifuged (4,800 g, 10 min, 4 °C) and supernatants were transferred to 1.5 mL tubes.

[0332] 4. 4 mL (8 samples x 0.5 mL/sample) of Ni-NTA sepharose resin (Amersham) were washed in a 15 mL tube to remove storage buffer (contains 20% ethanol), by 3 repeated centrifugations (500 g, 1 min) and washes with 10 mL His-binding buffer (20 mM phosphate, 0.5 M NaCl, 20 mM imidazole, pH 7.4), after the last wash, resin pellet was reconstituted with 4 mL of 2X His binding buffer.

[0333] 5. 0.5 mL of resin were added to each sample and the tubes were rotated at 4 °C overnight.

[0334] 6. Resin was washed two times with 1.5 mL of His binding buffer (30 min each wash, centrifugation 1000 g, 1 min).

[0335] 7. After the final wash, resin bed was left wet (-0.6 mL) and stored overnight at 4 °C.

[0336] 8. 0.5 mL of His elution buffer (20 mM phosphate, 0.5 M NaCl, 0.5 M imidazole, pH 7.4) were added and the tubes were rotated overnight at 4 °C. [0337] 9. Tubes were centrifuged (15,000 g, 5 min) and supernatant was desalted by running on vivaspin 5K columns (15,000 g, 15 min, after each wash flow-thru was discarded and retentate was reconstituted to 0.5 mL with PBS, repeated 4 times. Average retentate volume after each wash was -100 μί).

[0338] 10. Proteins were examined in Nanodrop.

[0339] 1 1. 50 samples were taken for labeling.

Labeling of nanobodies

[0340] 1. 50 μΐ, (-35 μg according to nanodrop) of each sample was mixed with 450 μΐ, of 50 mM borate buffer pH 8.5.

[0341] 2. Samples were cleaned on vivaspin 5K columns (15,000 g, 15 min, retentate ~20 μί).

Calculated protein concentration (average in samples) after this step was -1.5 mg/mL.

[0342] 3. DyLight-649 (1 mg) was dissolved in 100 μΐ, DMF, and 1 μΐ, was added to each sample.

[0343] 4. Tubes were incubated in the dark for 1 h at RT.

[0344] 5. Labeled proteins were cleaned from excess dye by vivaspin 5K columns, with 3 washes with 470 μΐ, PBS and one wash into 470 μί of 10 mM Tris buffer pH 7.5 to quench residual dye.

[0345] 6. Calculated concentration in retentate (-20-25 μΐ, each): 1.3-1.5 mg/mL. Neutralization assay

Flu strains - growth in A549 cells and immunotitration

[0346] 1. The cells used were A549 human lung epithelial cells (Carcinoma). Cells were grown in 48-well plates in 0.4 mL medium (ATCC medium # F-12K + 10% FBS + Pen/Strep). The cells were transferred to the plate following plating of A549 from a T75 culture flask [confluency > aspirate medium > 1.3 mL of TrypLE or trypsin-EDTA > 3-5 min at 37 °C > completed to 6 mL with medium > take 50 μΐ^ per well in a 48-well plate containing 0.35-0.4 mL medium].

[0347] 2. At 80% confluency, infected cells with virus, by adding \0 μΐ, οΐ virus at the desired dilution, mix well using pipette.

[0348] 3. Incubated at 37 for 24-48 h.

[0349] 4. Aspirated medium, apply 100 TrypLE, incubate 5 min at 37 °C.

[0350] 5. Mixed well with pipette, take 200 μΐ, of cells to a fresh u-shaped 96 well plate.

[0351] 6. Fixed with formaldehyde, 2.5 % final cone. On ice for at least 10 min.

[0352] 7. Washed (centrifuged 3000 rpm, 3 min, 4 °C), resuspended in 100 μΐ, of freezing-cold 100% methanol. Mixed well.

[0353] 8. Incubated on ice for 10 min.

[0354] 9. Added 100 μΐ, cold FX buffer, spun again as in 7. Resuspend in 100 μΐ, cold FX buffer. [0355] 10. Added 1 μΐ, of FITC-conjugated anti-Influenza A nucleoprotein (from Millipore) per well, mixed well and incubated on ice for 60 min.

[0356] 11. Spun as in 7, resuspended in 200 μΐ, cold FX and spun again. [0357] 12. Resuspended in 200 cold FX, analyzed by FACS.

[0358] 13. Determined titer as follows: Titer (FIU/ L) = D50 x C / (2 x V). D50: The concentration of virus at which 50% of the cells are infected (FITC+) C, Starting number of cells in the well (refer to Worldwide Web Site: invitrogen.com/etc/medialib/en/filelibrary/pdf.Par.4786.File.dat/Useful_Numbers_Y1447 2_Useful_Nmbrs.pdf for useful details); V, Volume of virus (in μί) used to infect the well

Neutralization assay

[0359] 1. A549 cells at confluency 75% were incubated at 0.4 mL medium in 48 well plate.

Nanobodies at various concentrations (50, 5, 0.5, 0.05 μg/mL, diluted in A549 medium) were added.

[0360] 2. Immediately afterwards the cells were infected with BrislO strain at MOI of ~33 > (0.33) at a volume of 10 μΐ,.

[0361] 3. Cells were incubated for 24 h.

[0362] 4. Medium was aspirated (and bleached). Cells were washed once with 0.5 mL HBSS. [0363] 5. 100 μί TrypLE was added and the plate was incubated at 37 deg. for 5 min. [0364] 6. Cells were aspirated into a 96 well plate and immediately fixed with formaldehyde as in step 6 in previous section.

[0365] 7. Protocol continued from step 6 in previous section.

[0366] Neutralization results, Figures 66 and 67.

EXAMPLE VII

Heavy and Light Chain Correlation

Initial light chain analysis

[0367] Light chain data was obtained from libraries made from a few time points of an experiment. Histograms of the read lengths are set forth at Figure 46. There was a peak at 380 (expected), and a smaller aggregation around 325. 10 reads from each peak were randomly aligned. 7/10 from the 380 peak were light chains (all kappa). None of the 325 peaks were light chains or immune chains. They were random proteins that must have amplified. The cutoffs for size selection was 365-405.

VDJ alignment/classification and clustering of light chain data

[0368] Light chain data was taken through an initial pipeline. The contents of the README file in are set forth in the Table 4 below. The work was performed on orchestra. Symlinks were placed in the stable-data directory to the results.

Running the full pipeline on orchestra: These scripts were run when the vdj repository is at tag vl .3 The intermediate data is in the corresponding directory on orchestra:

/home/ul2/vdj-ome/analysis/20100810_light_chain_pipeline 1. fasta2vdjxml.py 2.

size_select.py First I convert the fasta file to vdjxml, and, Size select the reads based on the readlen hist, 365-405, (from /home/ul2/vdj-ome/stable- data/raw_light_chains): python ~/code/vdj/bin/fasta2vdjxml.py

light_chains.20100802. fasta | python ~/code/vdj bin/size_select.py ~min 365—max 405 > light_chains.20100802.size365-405.vdjxml There are 496605 chains of the selected size in the file. 3. vdjxml2parts.py Split vdjxml into small chunks and place in working directory python ~/code/vdj/bin/vdjxml2parts.py— packetsize 10000— basename ~/vdj-ome/analysis/light_chain_pipeline/data/light_chains.20100802. size365- 405. vdjxml light_chains.20100802. size365-405. vdjxml Change directory to all the parts: cd ~/vdj-ome/analysis/light_chain_pipeline/data 4. barcode_id.py 5.

coding_strand.py Identify barcodes for each read, and Determine whether we have the correct strand or not for FILE in light_chains.20100802.size365-405.vdjxml.*; do NAME=${FILE%.size*}".prealign.vdjxml."${FILE#* .vdjxml.*} bsub - qshared_2h -o pre-alignment.log "python ~/code/vdj/bin/barcode_id.py—barcodes ~/vdj- ome/stable-data/barcodes/454MID.barcodes.fasta $FILE | python

~/code/vdj/bin/coding_strand.py -locus IGK -locus IGL > $NAME" done # python ~/code/vdj/bin/barcode_id.py—barcodes ~/vdj-ome/stable- data/barcodes/454MID.barcodes.fasta # python ~/code/vdj/bin/coding_strand.py—locus IGK—locus IGL Some STATS: # Num of chains cat *prealign* | grep

"<ImmuneChain>" | wc -1 496605 # Num with barcodes cat *prealign* | grep "<barcode>" | wc -1 486258 # Num that were reverse-complemented cat *prealign* | grep "revcomp" | wc -1 240928 # Barcode breakdown for NUM in 1 2 3 4 5 6 8 9; do cat *prealign* | grep "<barcode>0$NUM" | wc -1 done 01 71 0.015% 02 0 03 174550 35.9% 04 7 0.001% 05 142036 29.2% 06 0 08 169594 34.9% 09 0 6. align_vdj.py for FILE in light_chains.20100802.prealign.vdjxml.*; do

NAME=${FILE%.prealign*}".vdjxml."${FILE#*.vdjxml.*} bsub -qshared_12h -o alignment.log python ~/code/vdj/bin/align_vdj.py -locus IGK -locus IGL $FILE $NAME done 7. cat_vdjxml.py python ~/code/vdj/bin/cat_vdjxml.py

light_chains.20100802.vdjxml.* > light_chains.20100802.aligned.vdjxml Move processed data down one directory: mv light_chains.20100802. aligned.vdjxml .. cd .. 8. filter_VJ.py python ~/code/vdj/bin/filter_VJ.py

light_chains.20100802.aligned. vdjxml light_chains.20100802.VJ_filtered.vdjxml grep "<ImmuneChain>" light_chains.20100802. VJ_filtered. vdjxml | wc -1 356813 for NUM in 3 5 8; do grep "<barcode>0$NUM"

light_chains.20100802.VJ_filtered. vdjxml I wc -1 done 03 131837 05

99618 08 1 17703 9. partition_VJ.py mkdir partitions python

-/code/ vdj /bin/partition_V J.py—basename partitions/light_chains.20100802

light_chains.20100802. VJ_filtered. vdjxml cd partitions # How many chains in each partition? for FILE in light_chains.20100802. *.vdjxml; do grep

"<ImmuneChain>" $FILE | wc -1 done | sort -n partial results:

10021 1 1239 11285 12592 13451 13999 17935 10. cluster_cdr3.py for F FILE in light_chains.20100802. *.vdjxml; do

VJID=${INFrLE#light_chains.20100802.} VJID=${VJID%.vdjxml}

OUTFILE=$ {INFILE%.vdjxml} .clustered.vdjxml bsub -qshared_unlimited -o clustering.log python ~/code/vdj/bin/cluster_cdr3.py—cutoff 4.5—tag $VJID—linkage single $INFILE $OUTFILE done # How long did it take? grep "CPU" clustering.log I sort -n -k4 partial results: CPU time : 25.38 sec. CPU time : 29.70 sec. CPU time : 34.28 sec. CPU time : 42.63 sec.

CPU time : 44.29 sec. CPU time : 46.46 sec. CPU time : 48.57 sec. CPU time : 57.70 sec. CPU time : 59.88 sec. 1 1. cat_vdjxml.py python ~/code/vdj/bin/cat_vdjxml.py light_chains.20100802.*. clustered. vdjxml >

../light_chains.20100802. clustered.vdjxml cd .. # How many chains? grep "<ImmuneChain>" light_chains.20100802.clustered. vdjxml | wc -1 356813 # How many unique clones in total? grep "<clone>"

light_chains.20100802. clustered.vdjxml | sort | uniq | wc -1 5009 # How many unique junctions in total? grep "<junction>" light_chains.20100802. clustered.vdjxml | sort I uniq I wc -1 53880

~Table 4~ " Time series and clone distribution of light chain data

[0369] Time series and clone frequency histograms were generated from the light chain data.

There were only about 5000 clones. Without intending to be bound by scientific theory, it is possible that the cutoff value to define clones needs to be recalibrated for light chains. Without intending to be bound by scientific theory, lesser diversity may be expected since there is no D region. See Figures 47 and 48.

Light chain time series using unique junctions instead of clones

[0370] Because of a concern that the cluster definitions for heavy chains may not translate to light chains, time series figures were generated for both heavy and light chains using only unique junctions. A plot of the two is set forth at Figure 49 (NOTE: heavy chains on top, light chains on bottom).

i n [0371] The top junction sequences are set for in the Table 5 below. heavy chain junctions: Id

TGTGCGCAAACCGATAGCAGCAACTTAGACTACTACTACCACGGAATGGGCGTCTGG

TGTGCGAAAGGGGGAGATTGTGGTGGTGCTAGTTGCCCCCATTTAGACTACTACTACTACGGTATGGACGTCTGG

TGCGCGAGAGGGACGGGGGGACCCTACGGTGACTATTATGGTGGTGCTTTTGATGTCTGG

TGTGCGCAAACCGATAGCACCAACTTAGACTTCTACTTCTACGGTTTGGACGACTGG

TGTGCGAGATCGGGGGATAGTTGGAGTCCTCCACAATTTGACTTCTGG

TGTGCGCAAACCGATAGCAGCCACATAGATTTCTACTACTATGGTATGGACGACTGG

TGTGCGGTTCAAGATTGTAGTACTACCACCTGCTATCCTGCGAGTTCCTACTACTACTATAACATGGGCGTCTGG

TGTGCGGTTCAAGATTGTAGTACTACCACCTGTTATCCTGCGAGTTCCTACTACTACTACAACATGGGCGTCTGG

TGTGCGCAAACCGATAGCAGCCACATAGACTTCTACTACTACGGTATGGACGACTGG

TGTGCGAGATCGGGGGATAGTTGGAGCCCTCCACAATTTGACTTCTGG 7d

TGTGCGCAAACCGATAGCAGCAACTTAGACTACTACTACCACGGAATGGGCGTCTGG

TGTGCGAGAGATGATCCATATTACGGCAGTATTGGTTATCGTATTGACTCCTGG

TGTGCGAGAATCCCCGCTAAGATCGAGTGGGACGCCTACTACTACTACGGTATGGACGTCTGG

TGTGCGAGAGACCTTACCTGGAGATACTTTGACTCCTGG

TGTGCGAGAGTGTTCTCTAGTAGTGGTTATTACTACTACTTTGATTACTGG

TGTGCAAGATCCCTCATTCTATATAGTGACTACATTGCCTACTGG

TGTGCGAGGCAGTCAGGTAACCGAGGATTCGGTGACTCTTACTCCTACTATTACTTCATGGACGTCTGG

TGCGCGAGAACTTTGTATTCTCTGGTAAAGTATAGTACTGGCTGGTACTACTTTGACTACTGG

TGTGCGAGAACAAATGCTTTTCATATCTGG

TGTGTAAGAGTTAAGGGTGGCATAGCAGCAGCTGGTACCACTGCGGGGTACTTCGATCTCTGG 2Id

TGTGCGAGAGTACGGGGATATTGTAATGGTGGTAGCTGCTACTTTGACTACTGG

TGTGCGAGAGAGAGGGCATTAGTGGGAGGTAGTACGACTCTCGGATACTGG

TGTGCGAGAGGCAGGGCTTCAACCTTTAAAGTCTACTATCACTACATGGACGTCTGG

TGTGCGAGACATATGCGGGGTGGGAGCCCTAGTCAAACTGCTTTTGATGTCTGG

TGTGCGAGACATATGCGGGCTGGGAGTCCTAGTCAAACTGCTTTTGATGTCTGG

TGTGCGAGACATATGCGGGGTGGGAGTCCTAGTCAAACTGCTTTTGATGTCTGG

TGTGTGAAAGCGGTTTCGGGGTCGAACTACATCTTTGACTACTGG

TGTGCGAGAGGCCGAGTGGGAGCTAAAGAGCCGACCGTTTACTACTTTGACCACTGG

TGTGCGAAAATTTTTGAGGCGAATTTGGAAAACTACTGGTATGGTTTGGACGTCTGG

TGTGCGAGACATCAGTATAATGTTGGTAACTCCTGGGCTTTTGATATCTGG light chain junctions: Id TGTCAACAGGCTAACAGTTTCCCGCTCACTTTC TGTCAATCACCAGACAGCAGTGGTACTAATGAAGTCTTC TGTCAATCACCAGACAGCAGTGGTACTTATGAAGTCTTC TGCGGAACATGGGATACCAGCCTGGGTACTAATTGGGTGTTC

TGCGGAACATGGGATACCAGCCTGAGAATTAATTGGGTGTTC TGTCAACAGTTTACTAATTTCCCGCTCACTTTC TGTCAACAGTATGGTAGTTCATGGCGCACTTTT TGTCAGGCGTGGGACAGCAGCACTGTGGTATTC TGCGGAACATGGGATACCAGCCTGAGGATTAATTGGGTGTTC

TGCTCAGCATGGGACAGCAGCCTCAGTGCTTGGGTGTTC 7d TGTCAGGCGTGGGACAGCAGCACTGTGGTATTC TGCTGCTCATATGCAGGCAACTCTTATGTCTTC TGTCAATCACCAGACAGCAGTGGTACTAATGAAGTCTTC TGTCAGCAGTATGGTAGCTCACCTTGGACGTTC TGTCAGCAATATGGTAGCTCACCGACGTTC TGTAACTCCCGGGACAGCAGTGGTAACCATGTGGTATTC TGTCAGCAGCGTAGCACCTGGCCTGCGACTTTC TGTCAGGTGTGGGATAGTAGTAGTGATCATGTGGTATTC TGTCAATCAGCAGACAGCAGTGGTACTTATGTGGTATTC

TGCGGAGCGTGGGATAGCAGCCTGAGTGCTGTGGTCTTC 2Id TGTCAGGCGTGGGACAGCAGCACTGTGGTATTC TGTCAACAACATGGTAACTCACCGGTCACTTTC TGCTTCCTCTACTTTGATGGTCCTATAGTTTTC TGTCAGCATTATCATACTCCACCGTACACTTTT TGCCAACAGTATAATACCTGGTGGACATTC TGTTTACTCTATTATAATGGTGTCAGGGTGTTC TGTAACTCCCGGGACAGCAGTGGTAACCATGTGGTATTC TGCTGCTCATATGCAGGTAGTAGCACTTTTGTCTTC TGTCAATCAGCAGACAGCAGTGGTACTTATGTGGTATTC TGCTCAGCATGGGACAGCAGCCTCAGTGCTTGGGTGTTC

Table 5.

[0372] Sequences corresponding to highest-expressed junctions from light chain and heavy chain time series are set forth in the Table 6 below. The script was pull_sequences.py and the output was manually put in sequences_highly_expressed_junctions.fasta.

>heavy_ld | FWMETYS01DQGF4 | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGACGTGCAGCTGGTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGAAGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAACTATGCCATGTCCTGGGTCCGCCAGGCTCCAGGGA AGGGCCTGGAGTGGGTCTCAGGTATTAGTGGTAGTGGTGCTGCCACATACTACGCAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGTCAATTCCAGGAACACGCTCCTTCTGCAAA.TGAACAGCCTGAGAGCCGAGGACACGGCCCTATATT ACTGTGCGCAAA.CCGATAGCAGCAACTTAGACTACTACTACCACGGAATGGGCGTCTGGGGCCAAGGGACCACGGTCA CCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01Al82M | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTCTTGGAGTCTGGGGGAGGCTTGGCACAGCCTGGGGGGT CCCTGAGACTCTCCTGTGGAGCCTCTGGATTCACCTTTAGTAACTATGGCATGACCTGGGTCCGCCAGGCTCCAGGGA AGGGGCTGGAGTGGGTCTCAGGTATTAGTGGTAGTGGTGCTAGTACATTCTACGCAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGGACAGCCTGAGAGCCGAGGACACGGCCGTCTATT ACTGTGCGAAAGGGGGAGATTGTGGTGGTGCTAGTTGCCCCCATTTAGACTACTACTACTACGGTATGGACGTCTGGG GCCAAGGGACCACGGTCACCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01ESRCQ | 2 CGGCTCCCAGATGGGTCCTGTCCCAGCTGCAGTTGCAGGAGTCGGGCCCAGGAGTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCACTGTCTCTGGTGGCTCCATCAGCACTAGCAGTTATTACTGGGGCTGGATCCGCCAGCCCCCAGGGA AGGGGCTGGAGTGGATTGGGACTATCTATTCTAGTGGGGGCTCCTACTACAACCCGTCCCTCAAGAGTCAAGTCGCCA TATCCGTTGACATGTCCAAGAATCAATTCTCCCTGAAGGTGAACTCTATAATCGCCGCAGACACGGCTGTGTATTACT GCGCGAGAGGGACGGGGGGACCCTACGGTGACTATTATGGTGGTGCTTTTGATGTCTGGGGCCAAGGGAAAAGGGTCG CCGTCTCTTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01ALGIE | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCGGCTGTTGGAGTCTGGGGGAGGCTTAGTGCAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAACTATGCCATGACCTGGGTCCGCCAGGCTCCAGGGC AGGGGCTGGAGTGGGTCTCAGGAATTAGTGGTAGTGGTGCAAGCACATACTACGAAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGACAGAATTCCAAGAACACGCTGTATCTGCAAATGAATAGCCTGAGAGCCGAGGACACGGCCGTATACT ACTGTGCGCAAACCGATAGCACCAACTTAGACTTCTACTTCTACGGTTTGGACGACTGGGGCCAAGGGACCACGGTCA CCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01EMQ99 | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCAAAGTTTCTATTGGCTCCGTCAGGAATTATTACTGGAGCTGGATCCGGCAGTCCCCCGGGAAGGGAC TGGAGTGGATTGCATATATCTTTCCCAATGGGAGGACCAGCCGCAATCCCTCCCTCCAGAGTCGAGTCACCATATCAA TTGACACACCCAAAAATCAGTTCTCCATGTTGCTGAGCTCTGCGACCGCCGCAGACACGGCCGTCTATTACTGTGCGA GATCGGGGGATAGTTGGAGTCCTCCACAATTTGACTTCTGGGGCCAGGGAATCCTAGTCACCGTCTCCTCAGCATCCC CGACCAGCCCCAAGG >heavy_ld | FWMETYS01A36Y | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTGCAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACGTTCAGCAACTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGA AGGGGCTGGAGTGGGTCTCAGGAATGAGTGGTAGTGGTGCTAGCACATACTACGAAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGCAAATGAATAGCCTGAGAGCCGAGGACACGGCCGTATATT ACTGTGCGCAAACCGATAGCAGCCACATAGATTTCTACTACTATGGTATGGACGACTGGGGCCAAGGGACCACGGTCA CCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01A36AI | 0

GCAGCAGCTACAGGTGTCCAGTCCCAGGTGCAGTTGGTGCAGTCTGGGGCTGAGGTGAAGAGGCCTGGGTCCTCGGTG

AAGGTCTCCTGCAAGGCTTCTGGAGGCACCTTCAGCAACTATGCAATCAGCTGGGTGCGACAGGCCCCTGGACAAGGG

CTTGAGTGGATGGGAGGGATCATCCCTACTTTTGGGACACCGACGTACGCACAGAAGTTCCAGGCCAGAGTCACGATT

ACCGCGGACGAATCTACGAGCACAGCCTACATGGAGCTGAGCAGCCTGAGATCTGAGGACACGGCCGTCTATTGGTGT

GCGGTTCAAGATTGTAGTACTACCACCTGCTATCCTGCGAGTTCCTACTACTACTATAACATGGGCGTCTGGGGCAAA

GGGACCACGGTCACCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01BAHLT | 2

CAGCAGCTACAGGTGTCCAGTCCCAGGTGCAGCTGGTGCAGTCTGGGGCTGAGGTGAAGAGGCCTGGGTCCTCGGTGA

AGGTCTCCTGCCAGGCTTCTGGAGGCACCTTCAGCAACTATGCTATCAGCTGGGTGCGACAGGCCCCTGGACAAGGGC

TTGAGTGGATGGGAGGGATCATCCCTATGTTTGGTACACCAAAGTACGCACAGCAGTTCCTGGACAGAGTCACGATAA

CCGCGGACGAATCCACGAGTACAGCCTACATGGAGCTGAGCAGCCTGAGATCTGCGGACATGGCCGTTTATTGGTGTG

CGGTTCAAGATTGTAGTACTACCACCTGTTATCCTGCGAGTTCCTACTACTACTACAACATGGGCGTCTGGGGCAAAG

GGACCACGGTCACCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01COGNO | 0

GTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTGCAGCCTGGGGGGTCC

CTGAGACTCTCCTGTGTAGCCTCTGGATTCACCTTTAGCAACTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGAAG

GGGCTGGAGTGGGTCTCAGGAATTAGTGGTAGTGGTGCTAGCACATACTACGAAGACTCCGTGAAGGGCCGGTTCACC

ATCTCCAGAGACAATTCCAAGAACACGCTGTATCTGGACATGAATAGCCTGAGAGCCGAGGACACGGCCGTATATTAC

TGTGCGCAAACCGATAGCAGCCACATAGACTTCTACTACTACGGTATGGACGACTGGGGCCAAGGGACCACGGTCACC

GTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_ld | FWMETYS01B1GQ7 | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACTTGCACTGTTTCTAGTGGCTCCATCAGGAATTACTACTGGAGCTGGATCCGGCAGACCCCAGGGAAGGGAC TGGAGTGGATTGGATATATCTTTTCCAATGGGAGGATCAAGTACAATTCCTCCCTCCAAGGTCGACTCACCATGTCAC TAAACACGCCCGAGAATCAGTTCTCCCTGTGGCTGAGCTCTGTGACCGCCGCAGACACGGCCGTCTATTACTGTGCGA GATCGGGGGATAGTTGGAGCCCTCCACAATTTGACTTCTGGGGCCAGGGAATCCTGGTCACCGTCTCCTCAGCATCCC CGACCAGCCCCAAGG >heavy_21d | FWMETYS01ENDE7 | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGTTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAACAACTATGCCACAAGCTGGGTCCGCCAGGCTCCAGGGA AGGGGCTGGAGTGGGTCTCAACTATTAGTGGTGTTGGTGATACCACATACTACGCAAATTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGACACTTCCAAGAACACCCTGTATCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGAATATT ACTGTGCGAGAGTACGGGGATATTGTAATGGTGGTAGCTGCTACTTTGACTACTGGGGCCAGGGAACCCCGGTCACCG TCTCCTCAGGGAGTGCATCCGCCCC >heavy_21d | FWMETYS01BI6DS | 2

CAGCAGCCACAGGAGCCCACTCCCAGGTGCAACTGGTGCAGTCTGGGGCTGAGGTGAAGAGGCCTGGGGCCTCAGTGA AGGTCTCCTGCAAGGCCTCTGGATACACCTTCACCGGCTACTATGTACACTGGGTGCGACAGGCCCCTGGACAAGGTC TTGAGTGGATGGGATGGATCAACCCTAACAGTGGTGTCACAAACTACGCACAGAACTTTCAGGACAGGGTCACCATGA CCAGGGACACGTCCATCAGCACAGCCTACATGGAGCTGACCAGGCTGAGATCTGACGACACGGCCCTATATTACTGTG CGAGAGAGAGGGCATTAGTGGGAGGTAGTACGACTCTCGGATACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG GGAGTGCATCCGCCCCAACCC >heavy_21d | FWMETYS0IASJFG | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGTTACAGCAGTGGGGCGCAGGACTGTTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCGTTGTCTATGGTGGGTCTTTCAGTCCTTATTACTGGAGCTGGATCCGCCAGACCCCAGGGAAGGGGC TGGAGTGGATTGGGGAAATCAATCATAGTGGAAGCACCAACTACAACCCGTCCCTCAAGAGTCGAGTCTCCATATCAC TAGACACGTCCAAGAATGAGTTCTCCCTGAGGCTGAACTCTCTGACCGCCGCGGACACGGCTGTGTATTACTGTGCGA GAGGCAGGGCTTCAACCTTTAAAGTCTACTATCACTACATGGACGTCTGGGGCAATGGGACCACGGTCACCGTCTCCT CAGCATCCCCGACCAGCCCCAAGG >heavy_2Id | FWMETYS01EEVTL [ 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTGCGGAGACCCTGT CCCTCACCTGCAATGTCTCTGGTGGCTCCATGAGTAGTTACTACTGGAGCTGGATCCGGCAGCCCCCAGGGAAGGGAC TGGAGTGGATCGGGTACATCCACTACAGGGGGACCACCAAATACAATCCCTCCCTCAAGAGTCGCGTCACCATATCAA TAGACCTGTCCAAGAACCAGTTCTCCCTGAAACTGAGCTCTATGACCGCCGCAGATACGGCCAGATATTACTGTGCGA GACATATGCGGGGTGGGAGCCCTAGTCAAACTGCTTTTGATGTCTGGGGCCAAGGGACAATGGTCACCGTCTCTTCAG CATCCCCGACCAGCCCCAAGG >heavy_2Id | FWMETYS01BGHT7 | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCAATGTCTCTGGTGGCTCCATCAGTAGTTACTACTGGAGCTGGATCCGGCAGCCCCCAGGGAAGGCAC TGGAGTGGATCGGGTATATCCACTACAGGGGGACTACCAAATACAATCCCTCCCTCAAGAGTCGCGTCACCATATCAG TAGACATGTCCAAGAACCAGTTCTCCCTGAAGCTGAGCTCTATGACCGCCGCAGATACGGCCATCTATTACTGTGCGA GACATATGCGGGCTGGGAGTCCTAGTCAAACTGCTTTTGATGTCTGGGGCCAAGGGACAATGGTCACCGTCTCTTCAG CATCCCCGACCAGCCCCAAGG >heavy_2Id | FWMETYS01DUYF3 | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGGGACCCTGT CCCTCACCTGCAATGTCTCTGGTGGCCCCATCAGTAGTTACTACTGGAGCTGGATCCGGCAGCCCCCAGGGAAGGGAC TGGAGTGGATCGGCTATATCTATTACAGGGGGACTACCAAATACAATCCCTCCCTCAAGAGTCGCGTCACCATATCAG TAGACATGTCCAAGAACCAGTTCTCCCTGAACCTGAGCTCTATGACCGCCGCAGATACGGCCATGTACTACTGTGCGA GACATATGCGGGGTGGGAGTCCTAGTCAAACTGCTTTTGATGTCTGGGGCCAAGGGACAATGGTCACCGTCTCTTCAG CATCCCCGACCAGCCCCAAGG >heavy_21d | FWMETYS01DI6U3 | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGATACAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAAGTATGCCATGACCTGGGTCCGCCAGGCTCCAGGGA AGGGCCTGGAGTGGGTCTCGACTATTAGTGGTAGTGCTACTGCCACATACTACGCAGACTCCGTGAAGGGCCGCTTCA CCATCTCCAGAGACAATTCGAAGAACACGCTGTATCTGCAAATGAACAGCCTGAGAGCCGCGGACACGGCCGTTTATT ACTGTGTGAAAGCGGTTTCGGGGTCGAACTACATCTTTGACTACTGGGGCCAGGGAACCCAGGTCACCGTCTCCTCAG CATCCCCGACCAGCCCCAAGG >heavy_21d | FWMETYS01D3L49 | 2

TTGTGGCTATTTTAAAAGGTGTCCAATGTGAGGTGCAACTGTTAGAATATGGGGGAGGCTTGGTACAGCCGGGGGGGT CCCTGAGACTCTCCTGTGAAGCCTCTGGAATCCCCTTTAACAACTATGCCATGAGCTGGGTCCGCCAGGCTCCAGGGA AGGGGCTGGAGTGGGTCTCAAGTATCAGTGGTAGTGGTAGTGGCACATATTACGGAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGACAATTCCAAGAACACACTGTATCTGCAAATGAATAGCCTGAGAGCCGAGGACACGGCCGTATATT ATTGTGCGAGAGGCCGAGTGGGAGCTAAAGAGCCGACCGTTTACTACTTTGACCACTGGGGCCAGGGAACCCTGGTCA CCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_2Id | FWMETYS01EOI8H | 0

GTGGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGTTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGTCC TTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTCAGCAGCTATGCCATGAACTGGGTCCGCCTGCCTCCAGGGATG GGGATGGAGAGCATCTCATCCATTAGTCGTAGTGGTGATAGAACATACTACGCAGACTCCGTGAAGGGCCGGTTCACC ATCTCCAGAGACAATTCCAAGAACACGATGTATCTGGAAATGAACAGCCTGAGAGCCGAAGACACGGCCGTATATTAC TGTGCGAAAATTTTTGAGGCGAATTTGGAAAACTACTGGTATGGTTTGGACGTCTGGGGCCAAGGGACCACGGTCACC GTCTCCTCAGGGAGTGCATCCGCCCCAACCC >heavy_21d | FWMETYS01BIG98 | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCGCTGTCTCTGGTGCCTCCATTAGAAGTTACTATTGGAGCTGGATCCGGCTGCCCCCAGGGAAGGGAC TGGAGTGGATTGGGCATGTGTATCACAGTGGGAGCACCAGTTACAATCCCTCCCTCAAGAGTCGAGTCACCATATCAG TGGACACGTCCAAGATGCAGATCTCCCTGAGGCTGAACTCTGCGACTGCTGCGGACACGGCCGTGTATTACTGTGCGA GACATCAGTATAATGTTGGTAACTCCTGGGCTTTTGATATCTGGGGCCAAGGGACAGTGGTCACCGTCTCTTCAGCAT CCCCGACCAGCCCCAAGG >heavy_7d | FW ETYS01DQGF | 2

TTGTGGCTATTTTAAAAGGTGTCCAGTGTGACGTGCAGCTGGTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGAAGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACCTTTAGCAACTATGCCATGTCCTGGGTCCGCCAGGCTCCAGGGA AGGGCCTGGAGTGGGTCTCAGGTATTAGTGGTAGTGGTGCTGCCACATACTACGCAGACTCCGTGAAGGGCCGGTTCA CCATCTCCAGAGTCAATTCCAGGAACACGCTCCTTCTGCAAATGAACAGCCTGAGAGCCGAGGACACGGCCCTATATT ACTGTGCGCAAACCGATAGCAGCAACTTAGACTACTACTACCACGGAATGGGCGTCTGGGGCCAAGGGACCACGGTCA CCGTCTCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_7d | FWMETYS01EO8GA | 2

CAGCAGCAACAGGTGCCCACTCCCAGGTTCAACTGGTGCAATCTGGAGCTGAGGTGAAGAGGCCTGGGGCCTCAGTAA AGGTCTCCTGCACGGCTTCTGGTTACACGTTTGACACTTATGGAGTCAGCTGGTTGCGACAGGCCCCTGGACAAGGGC TTGAGTGGATGGGCTGGATCAGCGGTGACAGTAGTCATACCAGATATGCAATGAGACTCCAGGGCAGAGTCACCATGA CCACAGACTCATCCACGAGCACAGCCTACATGGAACTGAGGAGCCTGAGATCTGACGACACGGCCGTCTATTACTGTG CGAGAGATGATCCATATTACGGCAGTATTGGTTATCGTATTGACTCCTGGGGCCAGGGAACCCTGGTCACCGTCTCCT CAGCATCCCCGACCAGCCCCAAGG >heavy_7d | FWMETYS02GPFII | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAACTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCACTGTCTCTGGTGGCTCCATCAGTAGTTACTACTTGAGCTGGATCCGGCAGCCCCCAGGGAAGGGGC TGGAGTGGATTGGGTATATCTATTACAGTGGGAGCACCAACTACAACCCCTCCCTCAAGAGTCGAGTCACCATATCAG TAGACACGTCCAAGAACCAGTTCTCCCTGAGGCTGAGCTCTGTGACCGCTGCGGACACGGCCGTGTATTACTGTGCGA GAATCCCCGCTAAGATCGAGTGGGACGCCTACTACTACTACGGTATGGACGTCTGGGGCCAAGGGACCACGGTCACCG TCTCCTCAGGGAGTGCATCCGCCCC >heavy_7d | FWMETYS01D3CAE | 2

TTGTTGCTATTTTAGAAGGTGTCCAGTGTGAGGTGCAGTTGGTGGAGTCTGGGGGAGGCTTGGTACAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGATTCACTTTCAGTGGCTATAGCATGGACTGGGTCCGCCAGGCTCCGGGGA AGGGGCTGGAGTGGGTTTCATTCATAAGTGATAATACTGGCAGTCACATATACTACGCAGACTCTGTGAAGGGCCGAT TCACCATCTCTAGAGACAATGCCGAGAACTCACTGTATCTACAAATGAACAGCCTGAGAGACGAGGACACGGCTGTGT ATTACTGTGCGAGAGACCTTACCTGGAGATACTTTGACTCCTGGGGCCATGGAGTCCTGGTCACCGTCTCCTCACGGA GTGCATCCGCCCC >heavy_7d | FWMETYS01ASETU | 2

TTGTTGCTATTTTAAAAGGTGTCCAGTGTGAGGTGCAGCTGGTGGAGTCTGGAGGAGGCCTGATCCAGCCTGGGGGGT CCCTGAGACTCTCCTGTGCAGCCTCTGGGTTCACCGTCAGTAGCAGCTACATGACCTGGGTCCGCCAGGCTCCAGGGA AGGGGCTGGAGTGGGTCTCAGTTATTTATAGTGGTGGTACCACATACTACGCAGACTCCGTGAAGGGCCGATTCACCA TCTCCAGAGACAATTCCAAGAACACGCTGTATCTTCAAATGAACAGCCTGAGAGCCGAGGACACGGCCGTGTATTACT GTGCGAGAGTGTTCTCTAGTAGTGGTTATTACTACTACTTTGATTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCT CAGGGAGTGCATCCGCCCC >heavy_7d | FWMETYS01EL1OA | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACCCTGT CCCTCACCTGCACTGTCTCTGGTGGCTCCATTAGTAGTTACTCCTGGAGCTGGATCCGGCAGTCCCCAGGGAAGGGAC TGGAGTGGATTGGGTCTACCTATTACAGTGGGAGCACCAACTACACCAACTACAACCCCTCCCTCAAGAGTCGAGTCA CCACATCAGTAGACACGTCCAAGAACCAGTTGTCCCTGGGGCTGAACTCTGTGACCGCAGCGGACACGGCCATTTATT ACTGTGCAAGATCCCTCATTCTATATAGTGACTACATTGCCTACTGGGGCCAGGGAACCCTGGTCACCGTCTCCTCAG CATCCCCGACCAGCCCCAAGG >heavy_7d | FWMETYSOlCUlFY | 2

CAGCAGCAACAGGTGCCCGCTCCCAGGTTCAACTGATGCAGTCTGGAGCTGAAGTGAGGAAGCCTGGGGCCTCAGTGA

CGGTCTCCTGCAAGACTTCTGGTTACACCTTTACCTACTATGGTATCAGTTGGGTGCGACAGGCCCCTGGACAAGGCC

TTGAGTGGATGGGATGGTTCAGCGCTTACAATGGTAAGACAAAATATGCACAGAATCTCCAGGACAGAGTCACCATGA

CAATTGACACATCCACGAGGACAGCCTACATGGAGCTGAGGAGCCTGAGATCTGACGACACGGCCGTATATTACTGTG

CGAGGCAGTCAGGTAACCGAGGATTCGGTGACTCTTACTCCTACTATTACTTCATGGACGTCTGGGGCAAAGGGACCA

CGGTCACCGTCGCCTCAGCATCCCCGACCAGCCCCAAGG >heavy_7d | FWMETYS01DFT1H | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTACAGCAGTGGGGCGCAGGACTGTTGAAGCCTTCGGAGACCCTGT

CCCTCACCTGCGCTGTTTATGGTGAGTCCTTCCGTGGTTACTCCTGGAGCTGGATCCGGCAGCCCCCAGGGAAGGGGC

TGGAGTGGATTGGTGAAATCAATCTTACTGGAAGCACCAACTACAACCCGTCCCTCAAGAGTCGGATCACCGTATCAA TTGACCCGTCCAAGACTCAGTTCTCCCTGAAGCTGACCTCTGTGACCGCCGCGGACACGGCTGTATATTACTGCGCGA GAACTTTGTATTCTCTGGTAAAGTATAGTACTGGCTGGTACTACTTTGACTACTGGGGCCAGGGAATCCTGGTCACCG TCTCCTCAGCCTCCACCAAGGGCCCATCCG >heavy_7d | F ETYS01DEO8R | 2

CGGCTCCCAGATGGGTCCTGTCCCAGGTGCAGCTGCAGGAGTCGGGCCCAGGACTGGTGAAGCCTTCGGAGACTCTGT

CCCTCACCTGCACTGTCTCTGGTGACTCCATTAGTAGTGACTATTGGAGCTGGATCCGGCAGTCCCCAGGGAAGGGAC

TGGAGTGGATTGGGTTTATTCAGTATACTGGGAGATCCCACTCCAACCCCTCCCTCCAGAGTCGAGTCACCATATCAC

TAGACACGTCCAAGAACAACTTCTCCCTGAGGCTGACCTCTGTGACCGCTGCGGACACGGCCGTGTATTATTGTGCGA

GAACAAATGCTTTTCATATCTGGGGCCAAGGGACAATGGTCACCGTCTCTTCAGGGAGTGCATCCGCCCC

>heavy_7d [ FWMETYS01BLJ3E | 0

GTTGCTATATTAGAAGGTGTCCAGTGTGAGGTGCAGCTGGTGGAATCTGGGGGAGGCTTAGTACAACCTGGGGGTTCG CTGAGACTCTCCTGTGCAGCCTCTGGATTCACTTTCAGTGATTACGACATGCACTGGGTCCGCCAAGCTACAGGAAAA GGTCTGGAGTGGGTCTCAGCTATAGGAACTCTTGATGACACATACTATCCAGGCTCCGTGGAGGGCCGATTCACCGTC TCCAGAGACAATGCCAGGGATTCCTTGTATCTTCAAATGAAGAGCCTCAGAGTCGCGGACACGGCTGTATATTACTGT GTAAGAGTTAAGGGTGGCATAGCAGCAGCTGGTACCACTGCGGGGTACTTCGATCTCTGGGGCCGTGGCACCCTGGTC ACTGTCTCCTCAGGGAGTGCATCCGCCCCAACCC > light_ld | 012171_0240_0412 | 2

TCTGGTTCCCAGGTTCCAGATGCGACATCCAGATGACCCAGTCTCCGTCTTCCGTGTCTGCATCTGTGGGGGACAGAG

TCACCATCACTTGCCGGGCGAGTCAGAGTCTTAGCGGCTTTTTAGCCTGGTATCAGCAGAAACCAGGGAAAGCCCCTA

AGTTCCTGATCGATACTACCTCCATTTTGCAAAGTGGGGTCCCATCTAGATTCAGTGGCAGTGGATCTGGGACATTTT

TCACTCTCACCATCAGCAGCCTCCAGCCTGAAGATTTTGCAACTTACTATTGTCAACAGGCTAACAGTTTCCCGCTCA

CTTTCGGCGGAGGGACCAAGGTGGAGAGGAAACGAACTGTGGCTGCACCATCTG

> light_ld | 016824_02 02_0719 | 2

CTCACTGCACAGGCTCTGAGGCCTCCTATGAGCTGACACAGCCACCCTCGGTGTCAGTGTCCCCAGGACAGACGGCCA

GGATCACCTGCTCTGGAGATGCATTGCCAAAGCACTTTGCTTATTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTAC

TGGTGATATATAAAGACACTGAGAGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAGCTCAGGGACAACAGTCA

CGTTGACCATCAGTGGAGTCCAGGCAGAAGACGAGGCTGACTATTACTGTCAATCACCAGACAGCAGTGGTACTAATG

AAGTCTTCGGAACTGGGACCAAGGTCACCGTCCTAAGTCAGCCCAAGGCCAACCCCACGGT

> light_ld | 025990_0147_0876 | 2

CTCACTGCACAGGCTCTGAGGCCTCCTATGAGCTGACACAGCCACCCTCGGTGTCAGTGTCCCCAGGACAGACGGCCA

GGATCACCTGCTCTGGAGATGCATTGCCAAAGCACTATGCTTATTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTGT

TGGTGATATATAAAGACAGTGAGAGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAGCTCAGGGACAACAGTCA

CGTTGACCATCAGTGGAGTCCAGGCAGAAGACGAGGCTGACTATTACTGTCAATCACCAGACAGCAGTGGTACTTATG

AAGTCTTCGGAACTGGGACCAGGGTCACCGTCCTAGGTCAGCCCAAGGCCAACCCCACTGT

> light_ld | 001721_0226_0129 | 2

CTCACTGCACAGGGTCCTGGGCCCAGTCTGTGTTGACGCAGCCGCCCTCAGTGTCTGCGGCCCCAGGACAGAAGGTCA

CCATCTCCTGCTCTGGAAGCAGCTCCAACATTGGCAAAAATTATGTATCCTGGTACCAGCATCTCCCAGGAACAGCCC

CCAAACTCCTCATCTATGAAAATGATGAGCGACCCTCAGGGATTCCTGACCGATTCTCTGGCTCCAAGTATGGCACGT

CAGCCACCCTGGGCATCACCGGACTCCAGACTGGGGACGAGGCCACTTATTTCTGCGGAACATGGGATACCAGCCTGG

GTACTAATTGGGTGTTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

> light_ld | 035774_0389_0427 | 2

CTCACTGCACAGGGTCCTGGGCCCAGTCTGTGTTGACGCAGCCGCCCTCAGTGTCTGCGGCCCCAGGACAGAAGGTCA

CCATCTCCTGCTCTGGAAGCAGCTCCAACATTGGGAGTAATCGTGTATCCTGGTACCAGCAGCTCCCAGGAACAGCCC

CCAAACTCCTCATCTATGAAAATAATGAGCGACCCTCAGGGATTCCTGACCGATTCTCTGCCTCCAAGTCTGGCACGT

CAGCCACCCTGGTCATCACCGGACTCCAGACTGGGGACGAGGCCGATTATTATTGCGGAACATGGGATACCAGCCTGA

GAATTAATTGGGTGTTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

> light_ld I 007823_0201_0454 | 2

TCTGGCTCCCAGGTGCCAGATGTGACATCCTGTTGACCCAGTCTCCATCCTTCCTGTCTGCAGCTGTAGGAAACAGAA TCACCATTACTTGCCGGGCCAGTCAGGGCATTAGTAGTTATTTAGCCTGGTTTCAGGAAAAACCAGGGAAAGCCCCTA

AACTCCTGATTTATGGTGCATCCATTTTGCAAAGTGGGGTCCCATCAAGGTTCAGCGGCAGTGGATCTGGGACAGAGT

TCACTCTCACAATCAGGAGCCTGCAGCCTGAAGATTTTGCAACTTATTACTGTCAACAGTTTACTAATTTCCCGCTCA

CTTTCGGCGGAGGGACCAAGGTGGAGATCAAACGAACTGTGGCTGCACCATCTG

>light_ld| 008086_0088_0336 | 1

ACTCTGGCTCACAGATACCACCGGAGAAATTGTGTTGACGCAGTCTCCAGGCACCCTGTCTTTGTCTCCAGGGGAAAG

AGCCACCCTCTCCTGCAGGGCCAGTCAGAGAGTTAGCAGCAACTACTTAGCCTGGTACCAGCAGAAATCAGGCCAGGC

TCCCAGGCTCCTCATCTATAGTGCATCCCGCAGGGCCACTGGCATCCCAGACAGGTTCAGTGGCAGTGGGTCTGGGAC

AGACTTCACTCTCACCATCAGCAGACTGGAGCCTGAAGATTTTGCCGTGTATCACTGTCAACAGTATGGTAGTTCATG

GCGCACTTTTGGCCAGGGGACCAAGGTGGAGATCAGACGAACTGTGGCTGCACCATCTG

>light_ld| 004730_0220_0168 I 2

CTTACTGCACAGGATCCGTGGCCTCCTATGAGCTGACTCAGCCACCCTCAGTGTCCGTGTCCCCAGGACAGACAGCCA

GCATCACCTGCTCTGGAGATAAATTGGGGGATAAATATGCTTGCTGGTATCAGCAGAAGCCAGGCCAGTCCCCTGTGC

TGGTCATCTATCAAGATAGCAAGCGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAACTCTGGGAACACAGCCA

CTCTGACCATCAGCGGGACCCAGGCTATGGATGAGGCTGACTATTACTGTCAGGCGTGGGACAGCAGCACTGTGGTAT

TCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_ld| 018024_0239_0556 | 2

CTCACTGCACAGGGTCCTGGGCCCAGTCTGTGTTGACGCAGCCGCCCTCAGTGTCTGCGGCCTCAGGACAGGAGGTCA

CCATCTCCTGCTCTGGAAGCAGCTCCAACATTGGGAGTTATCGTGTATCCTGGTATCAGCACCTCCCAGGAACAGCCC

CCAAACTCCTCATCTATGAAAATGATCAGCGACCCTCAGGGATTCCTGACCGATTCTCTGGCTCCAAGTCTGGCACGT

CAGCCACCCTGGTCATCACCGGACTCCTGACTGCGGACGAGGCCGATTATTACTGCGGAACATGGGATACCAGCCTGA

GGATTAATTGGGTGTTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_ld| 003754_0225_0116 | 1

CACTCACTCTGCAGTGTCAGTGGTCCAGGCAGGACTGACTCAGCCACCCTCGGTGTCCAAGGACTTGAGACAGACCGC

CACACTCACCTGCACTGGGAACAGCAACAATGTTGGCAACCTAGGAGCAGCTTGGCTGCAGCAGCACCAGGGCCACCC

TCCCACACTCCTATCCTACAGGGATAACAACCGGCCCTCAGGGATCTCAGAGAGATTCTCTGCATCCAGGTCAGGAAA

TACAGCCTCCCTGTCCATTACTGGACTCCAGCCTGACGACGAGGCTGACTATTACTGCTCAGCATGGGACAGCAGCCT

CAGTGCTTGGGTGTTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_21d| 004730_0220_0168 | 2

CTTACTGCACAGGATCCGTGGCCTCCTATGAGCTGACTCAGCCACCCTCAGTGTCCGTGTCCCCAGGACAGACAGCCA

GCATCACCTGCTCTGGAGATAAATTGGGGGATAAATATGCTTGCTGGTATCAGCAGAAGCCAGGCCAGTCCCCTGTGC

TGGTCATCTATCAAGATAGCAAGCGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAACTCTGGGAACACAGCCA

CTCTGACCATCAGCGGGACCCAGGCTATGGATGAGGCTGACTATTACTGTCAGGCGTGGGACAGCAGCACTGTGGTAT

TCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_21d| 010947_0053_0325 | 1

ACTCTGGCTCACAGATACCACCGGAGAGATTGTGTTGACGCAGTCTCCAAGCACCCTGTCTTTCTCTCCAGGAGAAAG

AGCCACCCTCTCCTGCAGGGCCAGTCAGATTATTACCAGCAGCTACTTAGCCTGGTACCAGCAGAAACCTGGCCAGGC

TCCCAGGCTCCTCATCTATGGTGGATCCAGCAGGGCCACTGGCATCCCAAACAGGTTTAGTGGCAGTGGGGCTGGGAC

AGACTTCACGCTCACCATCAGCAGACTGGAGCCTGAAGATTTTGCAGTGTATTACTGTCAACAACATGGTAACTCACC

GGTCACTTTCGGCGGAGGGACCAAGGTGGAGATCAAAGGAACTGTGGCTGCACCATCTG

>light_21d | 016345_0101_0575 | 2

CTTGCTGCCCAGGGTCCAATTCCCAGGCTGTGGTGACTCAGGAGCCCTCACTGACTGTGTCCCCAGGAGGGACAGTCA CTCTCACCTGTGGCTCCAGCACTGGAGCTGTCACCAGTGGTCATTATCCCTACTGGTTCCAGCAGAAGCCTGGCCAAG CCCCCAGGACACTGATTTCTGATACAAGCAACAAATGTTCTTGGACCCCTGGCCGGTTCTCAGGCTCCCTCCTTGGGG GCAAAGCTGCCCTGACCCTTTCGGGTGCGCAGCCTGAGGATGAGGCTGACTATTATTGCTTCCTCTACTTTGATGGTC CTATAGTTTTCGGCGGAGGGACCAAGCTGACCGTCCTAAGTCAGCCCAAGGCTGCCCCCTCGGT >light_21d | 016683_0138_0575 | 0

CTCTGGATCTCTGGTGCCTACGGGGACATCGTGATGACCCAGTCTCCAGATTCCCTGGCTGTGTCTCTGGGCGAGAGG

GCCACCATCAACTGCAAGTCCAGCCAGAGTGTTTTGTGGGGCCCCAACAATAAGAACTACTTAGCTTGGTACCAGCAG

AAACCAGGACAGTCTCCTAAGTTGCTCATTTACTGGGGATCTACCCGGAAATCCGGGGTCCCTGACCGATTCAGTGGC

AGCGGGTCTGGGACAGATTTCACTCTCACCATCAGCAGCCTGCAGGCTGAAGATGTGGCAGTTTATTACTGTCAGCAT

TATCATACTCCACCGTACACTTTTGGCCAGGGGACCAAGCTGGAGATCAAACGAACTGTGGCTGCACCATCTG

>light_21d | 014243_0165_0699 | 2

TCTGGGTCCCAGGTGCCAAATGTGTCGTCCAGATGACCCAGTCTCCTTCCACCCTGTCTGCATCTGTAGGAGACAGAG

TCACCATCACTTGCCGGGCCAGTGAGACTGTTGGAACGTGGTTGGCCTGGTATCGGCAGAAACCAGGGAAAGCCCCTA

ACCTCCTGATCTATGAGGCCTCTATTTTAGAAAGTGGGGTCCCATCGAGGTTCAGCGGCAGTGGATCTGGGACAGAGT

TCACTCTCACCATCAGCAGCCTGCAGCCTGATGATTTTGCAACTTATTACTGCCAACAGTATAATACCTGGTGGACAT

TCGGCCAAGGGACCAAGGTGGAAATCAAGCGAACTGTGGCTGCACCATCTG

>light_21d | 007238_0089_0294 | 2

CTTGCTGCCCAGGGTCCAATTCCCAGGCTGTGGTGACTCAGGAGCCCTCACTGACTGTGTCCCCAGGAGGGACAGTCA

CTCTCACCTGTGGCTCCAGCACTGGAGCTGTCACCAGTGGTCATTATCCCTACTGGTTTCAGCAGAAGGCTGGCCAAG

CCCCCAGGACACTGATGTATGATATAAGCATCAAACTGTCCTGGACCCCTGCCCGGTTCTCAGGCGCCCTCCTTGGGG

GCAAAGCTGCCCTGACCCTTTCGGGTGCGCAGCCTGAGGATGAGGCTGAATATTATTGTTTACTCTATTATAATGGTG

TCAGGGTGTTCGGCGGAGGGACCAAACTGACAGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_21d | 015152_0165_0715 | 1

CCTCACTCTTTGCATAGGTTCTGTGGTTTCTTCTGAGCTGACTCAGGACCCTGCTGTGTCTGTGGCCTTGGGACAGAC

AGTCAGGATCACATGCCAAGGAGACAGCCTCAGAAGCTATTATGCAAGCTGGTACCAGCAGAAGCCAGGACAGGCCCC

TGTACTTGTCATCTATGGTAAAAACAACCGGCCCTCAGGGATCCCAGACCGATTCTCTGGCTCCAGCTCAGGAAACAC

AGCTTCCTTGACCATCACTGGGGCTCAGGCGGAAGATGAGGCTGACTATTACTGTAACTCCCGGGACAGCAGTGGTAA

CCATGTGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_21d | 003565_0121_0193 | 2

CTCGGGACACAGGGTCCTGGGCCCAGTCTGCCCTGACTCAGCCTGCCTCCGTGTCTGGGTCTCCTGGACAGTCGATCA

CCATCTCCTGCACTGGAACCAGCAGTGATGTTGGGAGATATAACCTTGTCTCCTGGTACCAACAACACCCAGGCAAAG

CCCCCAAATTCTTGATTTATGAGGTCAGTAAGGGGCCCTCAGGGGTTTCTAATCGCTTCTCTGGCTCCAAGTCTGGCA

ACACGGCCTCCCTGACAATCTCTGGGCTCCAGGCTGAGGACGAGGCAGATTATTACTGCTGCTCATATGCAGGTAGTA

GCACTTTTGTCTTCGGAACTGGGACCACGGTCACCGTCCTAGGTCAGCCCAAGGCCAACCCCACGGT

>light_2 1d | 010775_0076_0480 | 2

CTCACTGCACAGGCTCTGAGGCCTCCTATGAGCTGACACAGCCACCCTCGGTGTCAGTGTCCCCAGGACAGACGGCCA

GGATCACCTGCTCTGGAGATGCATTGCCAAAGCAATATGCTTATTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTGC

TGGTGATATATAAAGACAGTGAGAGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAGCTCAGGGACAACAGTCA

CGTTGACCATCAGTGGAGTCCAGGCAGAAGACGAGGCTGACTATTACTGTCAATCAGCAGACAGCAGTGGTACTTATG

TGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_21d | 003 754_0225_0116 I 1

CACTCACTCTGCAGTGTCAGTGGTCCAGGCAGGACTGACTCAGCCACCCTCGGTGTCCAAGGACTTGAGACAGACCGC

CACACTCACCTGCACTGGGAACAGCAACAATGTTGGCAACCTAGGAGCAGCTTGGCTGCAGCAGCACCAGGGCCACCC

TCCCACACTCCTATCCTACAGGGATAACAACCGGCCCTCAGGGATCTCAGAGAGATTCTCTGCATCCAGGTCAGGAAA

TACAGCCTCCCTGTCCATTACTGGACTCCAGCCTGACGACGAGGCTGACTATTACTGCTCAGCATGGGACAGCAGCCT

CAGTGCTTGGGTGTTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_7d | 00473 0_022 0_0168 | 2

CTTACTGCACAGGATCCGTGGCCTCCTATGAGCTGACTCAGCCACCCTCAGTGTCCGTGTCCCCAGGACAGACAGCCA GCATCACCTGCTCTGGAGATAAATTGGGGGATAAATATGCTTGCTGGTATCAGCAGAAGCCAGGCCAGTCCCCTGTGC TGGTCATCTATCAAGATAGCAAGCGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAACTCTGGGAACACAGCCA CTCTGACCATCAGCGGGACCCAGGCTATGGATGAGGCTGACTATTACTGTCAGGCGTGGGACAGCAGCACTGTGGTAT

TCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_7d| 016513_0160_0702 I2

CTCAGGGCACAGGGTCCTGGGCTCAGTCTGCCCTGACTCAGCCTCGCTCAGTGTCCGGGTCTCCTGGACAGTCAGTCA

CCATCTCCTGCACTGGAACCAGCAGTGATGTTGGTAGTTATAACTATGTCTCCTGGTACCAACAGCACCCAGGCAAAG

CCCCCACACTCATGATTTATGATGTCACTAAGCGGCCCTCAGGGGTCCCTGATCGCTTCTCTGGTTCCAAGTCTGGCA

ACACGGCCTCCCTGACCATCTCTGGGCTCCAGGCTGAGGATGAGGCTGATTATTACTGCTGCTCATATGCAGGCAACT

CTTATGTCTTCGGAACTGGGACCAAGGTCACCGTCCTAGGTCAGCCCAAGGCCAACCCCACGGT

>light_7d| 016824_0202_0719 | 2

CTCACTGCACAGGCTCTGAGGCCTCCTATGAGCTGACACAGCCACCCTCGGTGTCAGTGTCCCCAGGACAGACGGCCA

GGATCACCTGCTCTGGAGATGCATTGCCAAAGCACTTTGCTTATTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTAC

TGGTGATATATAAAGACACTGAGAGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAGCTCAGGGACAACAGTCA

CGTTGACCATCAGTGGAGTCCAGGCAGAAGACGAGGCTGACTATTACTGTCAATCACCAGACAGCAGTGGTACTAATG

AAGTCTTCGGAACTGGGACCAAGGTCACCGTCCTAAGTCAGCCCAAGGCCAACCCCACGGT

>light_7d| 076796_0530_0700 | 1

ACTCTGGCTCACAGATACCACCGGAGAAATTGTGTTGACGCAGTCTCCAGGCACCCTGTCTTTGTCTCCAGGGGAAAG

AGCCACCCTCTCCTGCAGGGCCAGTCAGAGTGTTAGCAGCAGCTACTTAGCCTGGTACCAGCAGAAACCTGGCCAGGC

TCCCAGGCTCCTCATCTATGGTGCATCCAGCAGGGCCACTGGCATCCCAGACAGGTTCAGTGGCAGTGGGTCTGGGAC

AGACTTCACTCTCACCATCAGCAGACTGGAGCCTGAAGATTTTGCAGTGTATTACTGTCAGCAGTATGGTAGCTCACC

TTGGACGTTCGGCCAAGGGACCAAGGTGGAAATCAAACGAACTGTGGCTGCACCATCTG

>light_7d| 006092_0191_0398 | 1

ACTCTGGCTCACAGATACCACCGGAGAAATTGTGTTGACGCAGTCTCCAGGCACCCTGTCTTTGTCTCCAGGGGAAAG

AGCCTTCCTCTCCTGCAGGGCCAGTCAGACTGTTCCCAGCAGCTACTTAGCCTGGTACCAGCAGAGACCTGGCCAAGT

TCCCAGGCTCCTCATCTATGATGCATCCAGCAGGGCCACTGGCATCTCAGACAGGTTTAGTGGCAGTGGGTCTGGGAC

AGACTTCACTCTCACCATCAACACACTGGAGCCTGAAGATTCTGCTGTGTATTACTGTCAGCAATATGGTAGCTCACC

GACGTTCGGCCAAGGGACCAAGGTGGAAATCAAACGAACTGTGGCTGCACCATCTG

>light_7d| 015152_0165_0715 | 1

CCTCACTCTTTGCATAGGTTCTGTGGTTTCTTCTGAGCTGACTCAGGACCCTGCTGTGTCTGTGGCCTTGGGACAGAC

AGTCAGGATCACATGCCAAGGAGACAGCCTCAGAAGCTATTATGCAAGCTGGTACCAGCAGAAGCCAGGACAGGCCCC

TGTACTTGTCATCTATGGTAAAAACAACCGGCCCTCAGGGATCCCAGACCGATTCTCTGGCTCCAGCTCAGGAAACAC

AGCTTCCTTGACCATCACTGGGGCTCAGGCGGAAGATGAGGCTGACTATTACTGTAACTCCCGGGACAGCAGTGGTAA

CCATGTGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_7d| 037667_0422_0484 | 1

ACTCTGGCTCACAGATACCACCGGAGAAATTGTGTTGACACAGTCTCCAGCCACCCTGTCTTTGTCTCCAGGGGAAAG

AGCCACCCTCTCCTGCAGGGCCAGTCAGAGTGTTAGCACCTACTTAGCCTGGTACCAACAGAAACCTGGCCAGCCTCC

CAGACTCCTCATCTATGATGCATCCAACAGGGCCACTGGCATCCCAGCCAGGTTCAGTGGCAGTGGGTCTGGGACAGA

CTTCACTCTCACCATCAGCAGCCTAGAGCCTGAAGATTCTGCAGTTTATTACTGTCAGCAGCGTAGCACCTGGCCTGC

GACTTTCGGCCCTGGGACCAAAGTGGATATCAAACGAACTGTGGCTGCACCATCTG

>light_7d| 059523_0412_0968 | 2

CTCACTGCACAGGCTCTGTGACCTCCTATGTGCTGACTCAGCCACCCTCGGTGTCAGTGGCCCCAGGAAAGACGGCCA

GGATTACCTGTGGGGGAAACAACATTGGAAGTAAAAGTGTGCACTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTGC

TGGTCGTCTATGATGATAGCGACCGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAACTCTGGGAACACGGCCA

CCCTGACCATCAGCAGGGTCGAAGCCGGGGATGAGGCCGACTATTACTGTCAGGTGTGGGATAGTAGTAGTGATCATG

TGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>light_7d| 010775_0076_0480 | 2

CTCACTGCACAGGCTCTGAGGCCTCCTATGAGCTGACACAGCCACCCTCGGTGTCAGTGTCCCCAGGACAGACGGCCA GGATCACCTGCTCTGGAGATGCATTGCCAAAGCAATATGCTTATTGGTACCAGCAGAAGCCAGGCCAGGCCCCTGTGC

TGGTGATATATAAAGACAGTGAGAGGCCCTCAGGGATCCCTGAGCGATTCTCTGGCTCCAGCTCAGGGACAACAGTCA

CGTTGACCATCAGTGGAGTCCAGGCAGAAGACGAGGCTGACTATTACTGTCAATCAGCAGACAGCAGTGGTACTTATG

TGGTATTCGGCGGAGGGACCAAGCTGACCGTCCTAGGTCAGCCCAAGGCTGCCCCCTCGGT

>l ight_7d | 03 0140_0479_0232 | 2

CTCACTGCACAGGGTCCTGGGCCCAGTCTGTATTGACGCAGCCGCCCTCAGTGTCTGCAGCCCCAGGACAGAAGGTCA CCATCTCCTGCTCTGGAAGCACCTCCAACATAGTTCATAATTTTGTATCGTGGTTCCAGCATCTCCCAGGAACAGCCC CCAAACTTCTCATATATGACAATAAGAGGCGGCCCTCAGGGATTCCTGACCGATTCTCTGGCTCCAAGTCTGGCGCGT CAGCCACCCTGGACATCACTGGACTCCAGACTGGGGACGAGGCCGATTATTACTGCGGAGCGTGGGATAGCAGCCTGA GTGCTGTGGTCTTCGGCGGAGGGACCAAGCTGACCGTCCTGGGTCAGCCCAAGGCTGCCCCCTCGGT

Table 6.

[0373] The most highly expressed clones were manually matched to the original clones. Two of them don't match up perfectly. The names of the sequences include the reading frame (last field; 0, l, or 2)

[0374] To match the original synthesized heavy chains identified using highly-expressed clones with the new heavy chains identified via highly-expressed junctions, both sets of sequences and were analyzed with multiple sequence alignment (CLUSTAL) to determine how they paired. For the most part, they had identical sequence pairs, which was a consistent check that the two methods produced the same heavy chains. A re-plot of highly expressed time series for heavy and light chain junctions is set forth at Figure 50.

EXAMPLE VIII

Heavy Chain Immune Sequencing

[0375] Samples were concentrated using RNeasy kit from Qiagen, elute in 2x 30μ1 and nanodrop (See Table 7 below)

VDJ- MID vaccination date RNA Volume for Water to

ID sample concentration 8μg DNase 150μ1 Digestion

prior DNase

digestion 1 GMC 1 -8 day Dec 7th 2009 91.71 87.23 62.77

2 GMC 2 -2 day Dec 13* 2009 75.6 105.82 44.18

3 GMC 3 -Ihr Dec 15th 2009 89.51 89.38 60.62

4 GMC 4 +lhr Dec 15th 2009 96.87 82.58 67.42

5 GMC 5 +lday Dec 16* 2009 117.3 68.20 81.80

6 GMC 6 +3 day Dec 18* 2009 90.22 88.67 61.33

7 GMC 7 +7day Dec 22nd 2009 87.45 91.48 58.52

8 GMC 8 +14day Dec 29th 2009 131.12 61.01 88.99

9 GMC 9 +21 day Jan 5th 2010 127.17 62.91 87.09

10 GMC 10 +28day Jan 12* 2010 139.24 57.45 92.55

11 IDO 1 -8 day Dec 7* 2009 98.84 80.94 69.06

12 ID0 2 -2 day Dec 13* 2009 84.45 94.73 55.27

13 IDO 3 -Ihr Dec 15* 2009 72.56 110.25 39.75

14 IDO 4 +lhr Dec 15* 2009 78.14 102.38 47.62

15 IDO 5 +lday Dec 16* 2009 51 156.86 -6.86

16 IDO 6 +3 day Dec 18* 2009 45.22 176.91 -26.91

17 IDO 7 +7day Dec 22nd 2009 101.42 78.88 71.12

18 IDO 8 +14day Dec 29* 2009 109.09 73.33 76.67

19 IDO 9 +21 day Jan 5* 2010 127.49 62.75 87.25

20 IDO 10 +28 day Jan 12* 2010 89.01 89.88 60.12

21 FV 1 -8 day Dec 7* 2009 96.87 82.58 67.42

22 FV 2 -2 day Dec 13* 2009 127.13 62.93 87.07

23 FV 3 -Ihr Dec 15* 2009 115.25 69.41 80.59

24 FV 4 +lhr Dec 15* 2009 136.05 58.80 91.20

25 FV 5 +lday Dec 16* 2009 142.15 56.28 93.72

26 FV 6 +3 day Dec 18* 2009 1 13.49 70.49 79.51

27 FV 7 +7day Dec 22nd 2009 91.81 87.14 62.86

28 FV 8 +14day Dec 29* 2009 84.92 94.21 55.79

29 FV 9 +21 day Jan 5th 2010 131.06 61.04 88.96

30 FV 10 +28day Jan 12* 2010 90.98 87.93 62.07

Table 7.

Vaccination and Blood draw Vaccine info: Seasonal flu 2010. Samples were extracted from 9 mL of blood from a single individual at various time points and processed using the leukolock kit (alternate protocol). Blood flow through was centrifuged, and plasma was saved and stored at - 80°C. RBC fraction was saved and cross-linked in formaldehyde and store at 4°C.

RNA extraction [0377] Extracted RNA using the leukolock alternative protocol (trizol) with the following modifications: Conducted the total RNA extraction protocol which included small RNAs. Only vacuumed the first binding step, for each wash, centrifuged at maximum of 10,000 x G. Eluted with 250 μΐ of dH20 at 85°C, spun at max speed. Transferred RNA in solution without the little white pellet (probably some of the filter). Nanodropped the RNA, and stored at -80°C.

[0378] Protected RNA stock (bring to 10 mM Tris, 0.1 mM EDTA). To the 250μ1 of RNA, added the following:

1 tube 50 tubes

• lM Tris-HCl 2.5μ1 125μ1

(3 μΐ/tubes)

Digest 8 μκ with DNase and concentrate

[0379] Conducted DNase digestion using Ambion TURBO DNA-free (AMI 907) with the following modification. Added 0.1 volume (15 μΐ) 10X TURBO DNase Buffer and 1 μΐ, TURBO DNase to the RNA, and mixed gently. Incubated at 37°C for 20-30 min. Added resuspended DNase Inactivation Reagent (typically 0.1 volume) (15μ1) and mixed well. Incubated 5 min at room temperature, mixing occasionally. Centrifuged at 10,000 x g for 5 min and transferred the RNA to a fresh tube. Conducted acid phenol and CHC13 extraction, followed by ethanol (EtOH) precipitation with NaOAc and glycoblue. Eluted in 50μ1 of 10 mM Tris 0.1 mM EDTA, QC and stored at -80. This was repeated with 5 μg for sample 5 and 22 because RNA was too low (resuspend in 25 μΐ).

[0380] QC DNase treated RNA. Nanodrop Quantitation (see Table 8 below)

Table 8. Primer mixing (See Table 9 below).

Primer type plate date plate Well μΐ for each μΐ ¾0 Final stock location primer mix

5 x J IGH 20080707 2 μΜ T-PC

primer

6 x J IGH 20080924 200 μΜ Plate 1 20 μΐ each 880 μΐ 4 μΜ PCPv primer A1-D7 (100 μΐ (1000 total) μΐ)

43x V IGH 20080924 20 0μΜ Plate 3 20 μΐ each 140 μΐ 4 μΜ PCR primer A1-A6 (860 μΐ (1000 total) μΐ)

Table 9.

Reverse transcription [0382] Assembled an RT reaction as follows:

H20 (DEPC) 0 μ1(ΐο 12 μΐ)

2 μΜ Gene-specific primer (IGHC mix old) 5 μΐ (5 pmole)

Total RNA 7 μΐ (750 ng)

Heated at 95°C for 1 min. followed by 65 °C for 5 min and ice for 1 min. [0383] Spun down and added the following:

1 tube 35 tubes

5x First strand buffer 4μ1 140

lO mM dNTP mix Ι μΐ 35

0.1 M DTT Ι μΐ 35

Rnaselnh (Enzy) Ι μΐ 35

Superscript III Ι μΐ 35

Incubated at 55 °C for 60 min ^l/tubes)

[0384] Inactivated enzyme by heating at 70°C for 15 min. Removed RNA/DNA hybrid by adding 1 μΐ of E. coli RNaseH. Incubated at 37 °C for 20 min, then ice.

[0385] Made a global master mix, then split across all samples (3x 10 times point of 200μ1), then split each sample in 4 x. Used half for PCR and kept other half as backup. Assembled a PCR test reaction as follows: It 2x35t

• d¾0 21.6 μΐ (ΐο 50 μ1) 756

• cDNA 5 μΐ

• 5x HF buffer 10 μΐ 350

• dNTP(25 mM) 0.4 μΐ 14

• primer up (IGHV new-short) (4 μΜ) 6.25 μΐ (25 pmole) 218.75

• primer low (IGHC new-short)(4 μΜ) 6.25 μΐ (25 pmole) 218.75

• phusion 0.5 μΐ 17.5

Added 90 PCR mix to 10 μΐ cDNA, split PCR reactions in 2 tube of 50, for each sample. [0386] Performed thermal cycling as follows:

1- 98°C for 1 min

2- 98°C for 10 seconds

3- 62°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 20x

5- 72°C for 5 min

6- 4°C pause

[0387] Re-pooled each 2 reactions into 1. Added 2μ1 of Exonuclease I (201Ι/μ1) to each tube and incubate at 37° C for 20 min. AMPure XP purified ratio 1.8:1. Resuspend in 40 μΐ.

[0388] Conducted SPRI purification as follows:

• Add the require amount of AMPure XP beads (1.8: 1 ratio) to the DNA sample in buffer EB.

• Vortex to mix

• Incubate for 5 minutes at room temperature.

• Magnet (MPC) for 5 minutes. Leave the tube of beads in the MPC during all wash steps

• Remove the supernatant (keep in case of failure)and wash the beads twice with 500 μΐ of 70% ethanol, incubating for 30 sec each time.

• Remove all the supernatant, quick spin , remove last drop and allow the AMPure beads to air dry completely (2 min).

• Remove the tube from the MPC, add 40 μΐ of 10 mM Tris-HCl, O. l mM EDTA, pH 8.0 (or Qiagen's Buffer EB), and vortex for 30 sec to resuspend the beads, let sit for 3 min Magnet for 2 min and transfer supernatant to a new tube.

[0389] A diagnostic gel was run to check PCR efficiency. Ran 2 μΐ on a 2% Egel-X for 12 min. Finalize library

[0390] The following step was written to finalize all remaining library. The plate was ordered as set forth in the Table 10 below.

Table 10.

[0391] Performed blunting reaction using Enzymatics End repair kit as follows:

It 60

• H20 0 μ1(ΐο 25 μΐ) 0

• Post PCR Purified DNA 19 μΐ

• 1 O End repair buff erbuffer 2.5 ul 150

• ImM dNTP mix 2.5 μ1 (0.1 ιηΜ) 150

• enzyme mix (HC). 1 μΐ 60

[0392] Incubated at 25°C temperature for 30 min. (19/t). Heat inactivated at 75°C for 20 min.

[0393] A-tailed by adding the following directly to the mixture:

It 60t

• H20 20 μ1( ίο 50μ1) 1200

• Blunt DNA sample 25 μΐ

• 1 OX Klenow buffer 2.5 μΐ 150

• lO mM dATP 0.5 μΐ 30

• Klenow exo HC(3' to 5' exo minus) 2 μΐ 120

Total reaction was now 50 ul (25/t) [0394] Incubated at 37°C for 30 min. Heat inactivated at 75 °C for 20 min. Prepared 454 Y- adapters. ΙΟμΙ of ΙΟΟμΜ of each primer A and B + 30μ1 of (10 mM Tris 0.1 mM EDTA at 50 mM NaCl)) (each adapter are at 20 μΜ final). Incubated 95 for 3 min, ramp to 15 forever at 0.1 °C/sec.

[0395] For Y adapter ligation, the following was add directly to the reaction:

It 2x3 Ot

H20 0 (add ^ to ΙΟΟ μΙ) -

A-tailed DNA 50 ul

2x Quick ligase buffer 46 μΐ 1380

20 μΜ adapter 2 μΐ

T4 DNA ligase (quick) 2 μΐ 60

Incubate PCR at 22°C for 15 min. (48/t). Total reaction was then

[0396] Ampure was performed, and the substrate was eluted in 40 μΐ (using the liquidator).

Library QC for pooling was tested on an HIV sample. Only the first 5 samples were tested (progressor) (Figure 51).

EXAMPLE IX

HIV VDJ

[0397] Samples are set forth in the Table 11 below.

C-0102 C-1601 26300

CTR0147 Elite 4/15/201 A-0103 A-3201 B-3508 B-7301 4-18-10 - M 1953 White

Controller 0 C-0401 C-1505 <48

CTR24 Elite 4/15/201 A-0201 A-3001 B-1302 B-5701 4-15-10 - F 1954 Biracial

Controller 0 C-0602 C-0602 <48

523507 Elite 5/14/201 A-3002 A-2402 B-1801 B-5301 5-14-10 - 56 M 1962 White

Controller 0 C-0401 C-1203

CTR174 Elite 6/28/201 A-0201 A-2301 B-5201 B-5801 2-18-10 - M 1961 African

Controller 0 C-0302 C-1601 <48 American

FHCR0013E Elite 7/1/2010 A-0301 A-1 101 B-0702 B-3501 2-17-10 - M 1947 White

Controller C-0401 C-0702 133

924426 HIV 4/7/2010 A-0201 A-0205 B-5701 B-5701 0

Negative C-0602 C-0602

714739 HIV 4/7/2010 A-0101 A-0201 B-1801 B-5101 0

Negative C-0602 C-1402

564006 HIV 4/7/2010 A-0201 A-0201 B-1801 B-3901 0

Negative C-0501 C-1203

084928 HIV 4/6/2010 A-0201 A-0301 B-1401 B-1801 0

Negative C-0501 C-0802

039701 HIV 4/6/2010 A-0201 A-3303 B-1501 B-5801 0

Negative C-0302 C-0801

Table 11.

Sample aquisition

[0398] A fresh sample was obtained. 2 tubes of EDTA were prepared for each progressor, elite controller and HIV negative sample. Samples were processed immediately after receipt (ficolled. count cells). B Cell isolation was performed as follows:

1. Centrifuged cell suspension at 300 x G for 10 min., aspirated supernatant.

2. Resuspended cell pellet in 80 μΐ, of cold buffer per 10 cells.

3. Buffer was a 1 :20 dilution of MACS BSA stock solution with autoMACS rinsing solution. Degassed before use.

4. Added 20 μΐ of CD19 microbeads per 107 cells.

5. Incubated for 15 minutes in the refrigerator (2-8 °C). 6. Washed cells by adding 1-2 mL of cold buffer per 107 cells and centrifuge at 300 x G for 10 min. aspirate supernatant.

7. Resuspended up to 108 cells in 500 μΐ^ cold buffer

8. Placed MS column in a magnetic field and rinse the column with 500 μΐ^ of degassed buffer.

9. Added cell suspension.

10. Collected unlabeled cells that passed through and washed three times with 500 μΐ^ of buffer.

11. Removed column and placed in a new collection tube.

12. Added 1 mL of buffer and plunged out the magnetically labeled cells using the plunger.

13. Counted cells.

14. In a small centrifuge, centrifuged the CD 19+ cells for 10 minutes at 9,000 x G.

15. Aspirated the supernatant and added 300 μL of lysis buffer. Snap froze and stored at -80 °C.

RNA extraction Used mirvana as per manufacturer protocol, eluted in 150 (did double phenol, phase was smaller on second run). QC nanodrop, too low, so etoh ppt with glycoblue, elute in 20ul, nanodrop. Dilute number 4 1 :2. See Table 12 below.

Table 12. Used extra mix to make 5x FV1 (180ng/ul... 1.67 ul RNA + 5.33 ul H20) for light chains and 5 for heavy chains.

[0400] Sample 8 was concentrated by ethanol precipitation, reuspended in 20 μΐ, nanodrop = 134.0. These were B cells RNA only, so there was no need for the same amount of starting RNA for VDJ research. Theorically, lymphocytes represent 30% of PBMC, for which B cells represent 10%, accordingly 15 ng should be sufficent. 150 ng was used.

[0401] A reverse transcription (RT) reaction was assembled as follows:

2x 1 tube

• H20( DEPC) 0 μ1(ΐο 12 μ1)

• 2 μΜ Gene-specific primer (heavy or light) 5 μΐ (5 pmole)

• Total RNA 7 μ1 (150 ¾)

Heated at 95°C for 1 min. followed by 65 °C for 5 min., then ice for 1 min.

Spun down and the following was added: 1 tube 30 tubes

• 5x First strand buffer 4μ1 120

• lO mM dNTP mix Ι μΐ 30 • 0.1M DTT Ι μΐ 30

• Rnaselnhibitor-Enzymatics Ι μΐ 30

• Superscript III Ι μΐ 30

Incubated at 55 °C for 60 min (8pl/tubes)

[0402] Inactivated enzyme by heating at 70 °C for 15 min. Removed RNA/DNA hybrid by adding Ι μΐ of E. coli RNaseH (Enzy). Incubated at 37°C for 20 min., then ice. See Table 13 below.

Table 13.

[0403] Assembled a PCR test reaction as follows: lx x 2per sample x 15samples (45f) (12t light chain) dH20 21μ1 (ΐο 50μ1) 945 (1084.46) 252 (259.2) cDNA 5μ1

5x HF buffer ΙΟμΙ 450 120 dNTP(10 mM) (25 mM) Ι μΐ (0.4) 45 (18) 12 (4.8) primer up (IGHV new-short) (4μΜ) 6.25 μΐ (25pmole) 281.25 (225) 75 primer low (IGHC new-short)^M)6^1 (25pmole) 281.25 (224) 75 phusion 0.5 μΐ 22.5 6

[0404] Added 90 PCR mix to 10 μΐ cDNA, split PCR reaction in 2 tubes of 50, for each sample.

Was low on primer, so used bolded values.

[0405] Thermal cycled as follows: 1- 98°C for l min

2- 98°C for 10 seconds

3- 62°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 23x

5- 72°C for 5 min

6- 4°C pause

[0406] Re-pooled each 2 reaction into 1. Added 2μ1 of Exonuclease I (20Τ-ϊ/μ1) to each tube and incubate at 37°C for 20 min. AMPure XP purify ratio 1.8: 1. Resuspend in 40 μΐ.

[0407] Conducted SPRI purification: Added the require amount of AMPure XP beads (1.8: 1 ratio) to the DNA sample in buffer EB. Vortexed to mix. Incubated for 5 minutes at room temperature. Magnet (MPC) for 5 minutes. Left the tube of beads in the MPC during all wash steps. Removed the supernatant (kept in case of failure) and washed the beads twice with 500 μΐ of 70% ethanol, incubating for 30 sec each time. Removed all the supernatant, quick spun, removed last drop and allow the AMPure beads to air dry completely (2 min). Removed the tube from the MPC, added 40 μΐ of 10 mM Tris-HCl, 0.1 mM EDTA, pH 8.0 (or Qiagen's Buffer EB), and vortexed for 30 sec to resuspend the beads, let sit for 3 min., Magnet for 2 min. and transferred supernatant to a new tube.

[0408] A diagnostic gel was run to check PCR efficiency (Figure 52). Ran 2 μΐ on a 2% Egel-X for 12 min.

Finalize library

[0409] The following method was developed to finalize the remaining library.

[0410] Plate was ordered as follows in the Table 14 below.

Table 14.

[0411] Performed blunting reaction using Enzymatics End repair kit as follows:

It 60

• H20 0 μ1(ΐο 25 μΐ) 0

• Post PCR Purified DNA 19 μΐ

• 10x End repair buffer 2.5 μΐ 150

• 1 mM dNTP mix 2.5 μ1 (0.1 πιΜ) 150

• enzyme mix (HC) 1 μΐ 60

Incubated at 25°C temperature for 30 min (19/t)

[0412] Heat inactivated at 75°C for 20 min.

[0413] A-tailed by adding the following directly to the mixture :

It 60t

• H20 20μ1( to 50μ1) 1200

• Blunt DNA sample 25μ1

• 1 OX Klenow buffer 2.5μ1 150

• 10 mM d ATP 0.5μ1 30

• Klenow exo HC(3 ' to 5' exo minus) 2μ1 120

Total rx is now 50ul (25/t)

Incubated at 37°C for 30 min. Heat inactivated at 75°C for 20 min. [0414] Prepared 454 Y-adapters : ΙΟμΙ of ΙΟΟμΜ of each primer A and B + 30μ1 of (10 mM Tris 0.1 mM EDTA at 50 mM NaCl)) (each adapter are at 20 μΜ final). Incubated 95 °C for 3 min, ramp to 15 °C forever at 0.1 °C/sec.

[0415] Y adapter ligation, added directly to the reaction as follow;

It 2x3 Ot

• H20 0 (add pl to 100 μΐ) -

• A-tailed DNA 50 μΐ

• 2x Quick ligase buffer 46 μΐ 1380

• 20 μΜ adapter 2 μΐ

• T4 DNA ligase (quick) 2 μΐ 60

Incubated on PCR at 22°C for 15 1 (48/t). Total reaction was now 1

[0416] Ampure, elute in 40ul (used the liquidator)

Library QC foor pooling

[0417] Test on HIV sample, test only first 5 samples (progressor). Nanodrop progressor sample.

Dilute to 5ng/ul. Nanodrop :

1 36.8

2 31.7

3 24.8

4 33.5

5 31.3

Diluted to lng/μΐ using 10 mM tris, 0.05% Tween 20. Diluted to O.Olng/μΙ (in 200 μΐ) in 10 mM tris, 0.05% Tween 20,

[0418] Preapred SYBR fast mix enough for triplicate run. Used 18 μΐ of mix, and added 2 μΐ of template to it.

It 20

• H20 7.2ul (to 20ul) 144

• 2x SYBR fast lOul 200

• 10 μηι Primer up 0.4ul 8 • 10 μηι Primer low 0.4ul 8

• O.Olng/ul DN A template 2ul

[0419] Cycled:

1 min

5sec

20sec

15 sec tepest 40 time

[0420] Prepared SYBR fast mix enough for triplicate run. Did 2 run, one set from the O.Olng sample, and one from the initial 5 ng/ul sample. Used 15ul of mix, and add 5ul of template to it. For 0.01 ng sample, used as follows:

For the ~5 ng sample, the following dilution was performed down to a real 1 ng/μΐ and diluted 1/100 down to a real 0.01 ng/μΐ. Used 5 μΐ.

It 20

o H20 4.2ul (to 20ul) 84

o 2x SYBR fast lOul 200

o 10 μιη Primer up 0.4ul 8

o 10 μιη Primer low 0.4ul 8

o 0.01 or 5ng/ul DNA template 5ul Plate reader

[0421] Diluted sample as follows. Volume of H20 added to volume 25ul of sample to achieve same concentration of 250 nM.

[0422] GMCl , mixed 25 μΐ of each sample for a total of 30* 10=300 μΐ. IDOl, mixed 30 μΐ.

FV1, mixed 30 μΐ. RA, mixed first 4 at 35 μΐ and last 4 at 35 μΐ in seprate batched, precipitated, and loaded on a gel to decide how to mix them together. HIV, pool equal ratio of each (40 μΐ), but did not mix elites samples with the combo neg+prog, these will be run with a gasket (so more read total for elite).

[0423] Qiagen prep +5 μΐ NaOAc (2 min wash), eluted in 30 μΐ, nanodrop.

[0424] Tested pipin prep with control sample number 8; 475-525, 475-550, 500-575 (Figure 53). Ran all sample on pippin prep. Split HlVl in 2 runs, Extract 475-550. 1, GMC; 2, IDO; 3, FV; 4, HIV 1/2 (Figure 54).

Qubit library HS dsDNA

[0425] Pooled both RA samples together and re Mapure because RA2 has nothing. no ID / Qubit HS dsDNA / dilute to 5 : ng/μΐ, take X μΐ / add Y H20 / volume total

1 GMC 8.44 3 2.064 5.064

2 IDO 7.99 3 1.794 4.794

3 FV 6.59 3 0.954 3.954

4 RA1 6.59 3 0.954 3.954

5 RA2 pool with RA1

6 HlVl 49.8 3 26.88 29.88

7 HIV2 25.2 3 12.12 15.12

[0426] Diluted 1/100 to 0.05ng/ul. Load 1 ul on e GEL of each sample.

Run real time

[0427] Prepared SYBR fast mix enough for triplicate run. Use 18ul of mix, and add 2ul of template to it.

It 20

• H20 7.2 μΐ (to 20 μΐ) 144

• 2x SYBR fast 10 μΐ 200

• 10 μιη Primer up 0.4 μΐ 8

• 10 μιη Primer low 0.4 μΐ 8

• 0.05ng/ul DNA template 2 μΐ

[0428] Cycle

95 1 min

95 5 sec 20 sec

15 sec tepest 40 time Diluted all to Sng/μΐ using 13.5 μΐ of sample. Added H20 to 13.5 μΐ of sample.

9.45

8.073

4.293

4.293

120.96

54.54

Shiped 15 μΐ ίο 454.

EXAMPLE X

Emulsion PCR of Single Cell and Bead

Bead-loading with emulsion anchor primer

[0430] Magneted or centrifuged beads during all steps according to assay setup table. Vortexed beads to resuspend and transferred ΙΟΟμΙ to 1.5 ml Ambion silicon tube. Washed twice with 200μ1 of 2x bind and wash buffer (2xB&W). Resuspended beads in ΙΟΟμΙ of 2xB&W, add premixed anchor primer; 1 mM PRl-F4-2Bio (2 μΐ); H20 (98 μΐ). Incubated on rotator for 20 min. Washed twice with 200 μΐ of lxB&W. Washed once with 200μ1 of TE. Resuspend beads in ΙΟΟμΙ of TE and stored on rotator in cold room until used.

[0431] Emulsion PCR

Prepared aqueous mix as follows: 1 tube dH20 316.4 μΐ (to 800 μΐ)

1 Ox PCR buffer (enzymatics) 96 μΐ

50 mM MgCl2 242 μΐ

25 mM dNTP mix 135 μΐ

2 mM PR1R-S 6 μΐ

30% (w/v) BSA (Sigma) 1.6 μΐ

Library template* 3 μΐ

[0432] Vortexed thoroughly to mix. *for Library template, a 1 :20 dilution of a 1 nM 280 bp human genomic library was used.

Prepared oil mix: 1 tube 4 tubes (prep all in one 509 ml falcon)

• Tegosoft DEC 4.4 ml 17.6 ml

• mineral oil 1.2ml 4.8 ml

• ABIL WE09 425 μΐ 1.7 ml

[0433] Vortexed thoroughly, allowed to degas Aliquoted 5.5 ml into 50 ml Teflon-coated aluminum falcon tubes. [0434] Create emulsion. To the 800 μΐ PCR mix, 100 μΐ Enzymatics Taq (5υ/μ1) was added, quickly vortexed and spun. 60 μΐ PR1F4 beads were immediately added, vortex quickly and spun. The total 960 μΐ was immediately transferred a to tube of oil, and vortexed for 2.25 min at 2200 rpm. The tube was placed into hydrocycler rack and the PCR program was started for overnight cycling.

[0435] Cycle as follows:

1- 94°C for 5 min

2- 94°C for 15 sec

3- 58°C for 30 sec (1 degree above to compensate hydrocycler setting)

4- 70°C for 75 sec

5- Got to 2 for 119x

6- 72°C for 2 min

7- Front cold tank (~10°C forever)

Breaking emulsion

[0436] 22 ml isopropanol was added to each aluminum falcon tube, and the tubes were vortexed for 50 sec at 3000 rpm. The contents were transferred to a new 50 ml polypropylene falcon tube and centrifuged (touch 4000 rpm and stop). The supernatants were poured off (pellet stuck well to bottom). 30 ml isopropanol was added and the tubes were vortexed for 40 sec at 3000 rpm, centrifuged (touch 4000 rpm and stop), and the supernatant was poured off (pellet stuck well to bottom)

[0437] 30 ml NXS buffer (10 mM tris-HCl pH 8.0, 100 mM NaCl, 1% (v/v) Triton X-100, 1% (v/v) SDS) was added and the tubes were vortexed for 1.5 min at 3000 rpm (vortex more if pellet was still stuck at bottom), centrifuged (maintain 4000 rpm for 15 sec and stop), and the supernatant was pipetted (carefully since the pellet did not stick to the bottom very well this time). 100 μΐ of TE was added, and the pellet was resuspend by pipetting. The solution was transferred to a 1.5 siliconized Eppendorf tube, washed lx with 200 μΐ NXS, washed 2x with 200 μΐ of TE, incubated for 5 min in ΙΟΟμΙ of 100 mM NaOH at RT, washed lx with 120 μΐ of 100 mM NaOH, washed 2x with 150 μΐ TE, resuspended in 30μ1 of TE and transferred to a new siliconized tube for storage.

Sequencing by ligation diagnostic of beads

[0438] Sequencing by ligation of the minus one position was conducted using methods known in the art.

Capture bead on acrylamide slide for SBL

[0439] An acrylamide bound-silane slide was prepared as follows:

• Beads in TE 7μ1

• 40% Acryl l9:l 1.25μ1

• 5% TEMED 0.5μ1

• 0.5% APS 0.75μ1

[0440] This was put on a slide by half wicking under coverslip and sliding a coverslip on top and the slide was flipped upside down. The slide polymerized (~30 min, max 2 hr) and a dry circle formed (prepare wash 1 during this time). Removed coverslip and put slide in conical tube with TE (shake for 10 min)

[0441] Prepared wash 1 :

• lM Tri-HCl pH 7.5 10 ml

• 2M KC1 25 ml

• 0.5M EDTA 4 ml

• 10% Triton X 1 ml

[0442] Prepared primer mix:

• 6X SSPE with 0.01% Triton X-100 ΙΟΟμΙ 1 mM anchor primer Ι μΐ

[0443] Removed slide from conical tube, dried white Teflon surface with Kimwipe, added ΙΟΟμΙ of anchor primer mix, incubated at 56°C for 1 min., placed in conical tube with Wash 1, immediately changed to fresh Wash 1 , incubated at RT for 5 min in Wash 1 with gentle agitation.

[0444] Prepared ligation mix as follow;

• H20 41 μΐ

• 1 Ox T4 DNA ligase buffer 5 μΐ

• Fluorescent nonamer mix 4μ1

• T4 DNA ligase (2Κυ/μ1) 1 μΐ

[0445] Removed slide from conical tube, dried white Teflon surface with Kimwipe, added 50μ1 of ligation mix, incubated at 35°C for 5 min., placed in conical tube with Wash 1, immediately changed to fresh Wash 1 , incubated at RT for 5 min in Wash 1 with gentle agitation, changed Wash 1 for TE, and incubated with gentle agitation for 10 min to 2 hr. Imaged under microscope and analyzed imaging data (See Figures 55-57).

EXAMPLE XI

Illumina VDJ

Objective

[0446] To develop a sample Illumina paired end sequencing protocol for immunoglobulin DNA. Oligonucleotides Primers were ordered having hotplate, standard desalting, first batch plain DNA compatible second section, with the proper Illumina adapter primary extension (not clustering) (Table 15). Plates were stocked at 200μΜ

Ref # Name Pos TM

50494259 VDJ IGHV gDNA 01 Al ACA GAA GTT CCA GGG CAG 54.62 °C

50494263 VDJ IGHV gDNA 02 A2 AGA CTC CAG GAA GGG CAG 56.48 °C

50494264 VDJ IGHV gDNA 03 A3 AGA CTC CAT GAA GGG CCA 55.89 °C

50494265 VDJ IGHV gDNA 04 A4 AGA CTC TGT GAA AGG CCG 54.53 °C

50494266 VDJ_IGHV_gDNA_05 A5 AGC ACA TCT CTG AAG ACC 54.19 °C

AG

50494267 VDJ_IGHV_gDNA_06 A6 AGC ACA TCT CTG AAG AGC 54.46 °C

AG

50494268 VDJ_IGHV_gDNA_07 A7 AGC ACG TCT CTG AAG AAC 54.53 °C

AG

50494269 VDJJGHV_gDNA_08 A8 ATT ATG CAG TAT CTG TGA 53.36 °C

AAA GTC G

50494270 VDJ IGHV gDNA 09 A9 CAG AAG CTC CAG GGC AG 55.68 °C

50494260 VDJ IGHV gDNA 10 A10 CAG ACT CTG TGA AGG GCA G 55.21 °C

50494261 VDJ IGHV gDNA 11 Al l CAG AGA AGT TCC AGG GCA G 55.28 °C

50494262 VDJ IGHV gDNA 12 A12 CAG GGC TTC ACA GGA CG 55.85 °C

50494271 VDJ IGHV gDNA 13 Bl CCC CTC CCT CAA GAG TCG 57.07 °C

50494275 VDJ IGHV gDNA 14 B2 CCC GTC CCT CAA GAG TCT 56.07 °C

50494276 VDJ IGHV gDNA 15 B3 CCG TCC CTC AAG AGT CG 54.86 °C

50494277 VDJ IGHV gDNA 16 B4 CCG TCC TTC CAA GGC CA 57.77 °C

50494278 VDJ_IGHV_gDNA_l 7 B5 CGC ACA GAA ATT CCA GGA 56.24 °C

CAG

50494279 VDJ_IGHV_gDNA_l 8 B6 CGC ACA GAA GTT CCA GGA 56.18 °C

AAG

50494280 VDJ IGHV gDNA 19 B7 CGC GTC TGT GAA AGG CAG 56.79 °C

50494281 VDJ IGHV gDNA 20 B8 GAC TCC GTG AAG GGC CG 58.62 °C

50494282 VDJ IGHV gDNA 21 B9 GAC TCA GTG AAG GGC CG 55.55 °C

50494272 VDJ IGHV gDNA 22 B10 GAC TCC GTG AAG GGC AG 55.55 °C

50494273 VDJ IGHV gDNA 23 Bl l GAC TCT GTG AAG GGC CG 55.55 °C

50494274 VDJ_IGHV_gDNA_24 B12 GCA AAC TCT GTG AAG GGC 56.54 °C

AG

50494283 VDJ_IGHV_gDNA_25 CI GCA CAG AAG TTT CAG GGC 56.54 °C

AG

50494284 VDJ IGHV gDNA 26 C2 GCA CCC GTG AAA GGC AG 57.09 °C

50494285 VDJ IGHV gDNA 27 C3 GCC CAT CTC TGA AGA GCA G 55.37 °C 50494286 VDJ IGHV gDNA 28 C4 GCG TCG GTG AAA GGC AG 56.97 °C

50494287 VDJ IGHV gDNA 29 C5 CTC CGT GAA GCG CCG 56.96 °C

50494288 VDJ IGHV gDNA 30 C6 TGC GTC TGT GAA AGG CAG 55.64 °C

50494292 VDJ_IGHJ_gDNA_01 Dl CTT ACC TGA GGA GAC GGT 58.73 °C

GAC C

50494293 VDJ_IGHJ_gDNA_02 D2 CTC ACC TGA GGA GAC AGT 58.72 °C

GAC C

50494294 VDJ_IGHJ_gDNA_03 D3 CTT ACC TGA AGA GAC GGT 56.83 °C

GAC C

50494295 VDJ_IGHJ_i NA_01I D7 CTC GGC ATT CCT GCT GAA CCG 71.88 °C lluoverPE CTC TTC CGA TCT CTT ACC TGA

GGA GAC GGT GAC C

50494296 VDJ_IGHJ_£ pNA_02I D8 CTC GGC ATT CCT GCT GAA CCG 71.90 °C lluoverPE CTC TTC CGA TCT CTC ACC TGA

GGA GAC AGT GAC C

50494297 VDJ_IGHJ_i NA_03I D9 CTC GGC ATT CCT GCT GAA CCG 71.28 °C lluoverPE CTC TTC CGA TCT CTT ACC TGA

AGA GAC GGT GAC C

50494298 VDJ_IGHV_ gDNA_01 El ACA CTC TTT CCC TAC ACG ACG 69.95 °C

Illuover CTC TTC CGA TCT ACA GAA GTT

CCA GGG CAG

50494302 VDJ_IGHV_ gDNA_02 E2 ACA CTC TTT CCC TAC ACG ACG 70.46 °C

Illuover CTC TTC CGA TCT AGA CTC CAG

GAA GGG CAG

50494303 VDJ_IGHV_ gDNA_03 E3 ACA CTC TTT CCC TAC ACG ACG 70.54 °C

Illuover CTC TTC CGA TCT AGA CTC CAT

GAA GGG CCA

50494304 VDJ_IGHV_ gDNA_04 E4 ACA CTC TTT CCC TAC ACG ACG 69.81 °C

Illuover CTC TTC CGA TCT AGA CTC TGT

GAA AGG CCG

50494305 VDJ_IGHV_ gDNA_05 E5 ACA CTC TTT CCC TAC ACG ACG 69.24 °C

Illuover CTC TTC CGA TCT AGC ACA TCT

CTG AAG ACC AG

50494306 VDJ_IGHV_ gDNA_06 E6 ACA CTC TTT CCC TAC ACG ACG 69.30 °C

Illuover CTC TTC CGA TCT AGC ACA TCT

CTG AAG AGC AG

50494307 VDJ_IGHV_ gDNA_07 E7 ACA CTC TTT CCC TAC ACG ACG 69.25 °C

Illuover CTC TTC CGA TCT AGC ACG TCT

CTG AAG AAC AG

50494308 VDJ_IGHV_ gDNA_08 E8 ACA CTC TTT CCC TAC ACG ACG 67.88 °C

Illuover CTC TTC CGA TCT ATT ATG CAG

TAT CTG TGA AAA GTC G

50494309 VDJ_IGHV_ gDNA_09 E9 ACA CTC TTT CCC TAC ACG ACG 71.06 °C

Illuover CTC TTC CGA TCT CAG AAG CTC

CAG GGC AG

50494299 VDJ IGHV gDNA 10 E10 ACA CTC TTT CCC TAC ACG ACG 70.35 °C Illuover CTC TTC CGA TCT CAG ACT CTG

TGA AGG GCA G

50494300 VDJJGHVj *DNA_ 11 El l ACA CTC TTT CCC TAC ACG ACG 70.42 °C

Illuover CTC TTC CGA TCT CAG AGA AGT

TCC AGG GCA G

50494301 VDJJGHVj *DNA_ .12 E12 ACA CTC TTT CCC TAC ACG ACG 71.03 °C

Illuover CTC TTC CGA TCT CAG GGC TTC

ACA GGA CG

50494310 VDJJGHVj ¾DNA_ 13 Fl ACA CTC TTT CCC TAC ACG ACG 71.14 °C

Illuover CTC TTC CGA TCT CCC CTC CCT

CAA GAG TCG

50494314 VDJJGHVj ¾DNA_ .14 F2 ACA CTC TTT CCC TAC ACG ACG 71.05 °C

Illuover CTC TTC CGA TCT CCC GTC CCT

CAA GAG TCT

50494315 VDJJGHVj ¾DNA_ F3 ACA CTC TTT CCC TAC ACG ACG 70.66 °C

Illuover CTC TTC CGA TCT CCG TCC CTC

AAG AGT CG

50494316 VDJJGHVj ¾DNA_ F4 ACA CTC TTT CCC TAC ACG ACG 71.86 °C

Illuover CTC TTC CGA TCT CCG TCC TTC

CAA GGC CA

50494317 VDJJGHVj ¾DNA 17 F5 ACA CTC TTT CCC TAC ACG ACG 70.19 °C

Illuover CTC TTC CGA TCT CGC ACA GAA

ATT CCA GGA CAG

50494318 VDJJGHVj ¾DNA_ .18 F6 ACA CTC TTT CCC TAC ACG ACG 70.16 °C

Illuover CTC TTC CGA TCT CGC ACA GAA

GTT CCA GGA AAG

50494319 VDJJGHVj ¾DNA .19 F7 ACA CTC TTT CCC TAC ACG ACG 70.93 °C

Illuover CTC TTC CGA TCT CGC GTC TGT

GAA AGG CAG

50494320 VDJJGHVj ¾DNA_ _20 F8 ACA CTC TTT CCC TAC ACG ACG 71.82 °C

Illuover CTC TTC CGA TCT GAC TCC GTG

AAG GGC CG

50494321 VDJJGHVj ¾DNA_ .21 F9 ACA CTC TTT CCC TAC ACG ACG 71.03 °C

Illuover CTC TTC CGA TCT GAC TCA GTG

AAG GGC CG

50494311 VDJJGHVj ¾DNA_ 22 F10 ACA CTC TTT CCC TAC ACG ACG 71.03 °C

Illuover CTC TTC CGA TCT GAC TCC GTG

AAG GGC AG

50494312 VDJJGHVj ¾DNA .23 Fl l ACA CTC TTT CCC TAC ACG ACG 71.03 °C

Illuover CTC TTC CGA TCT GAC TCT GTG

AAG GGC CG

50494313 VDJJGHVj ¾DNA_ 2 F12 ACA CTC TTT CCC TAC ACG ACG 70.65 °C

Illuover CTC TTC CGA TCT GCA AAC TCT

GTG AAG GGC AG

50494322 VDJJGHVj ¾DNA_ 2 Gl ACA CTC TTT CCC TAC ACG ACG 70.65 °C

Illuover CTC TTC CGA TCT GCA CAG AAG

TTT CAG GGC AG

50494323 VDJ IGHV } _DNA 26 G2 ACA CTC TTT CCC TAC ACG ACG 71.50 °C Illuover CTC TTC CGA TCT GCA CCC GTG

AAA GGC AG

50494324 VDJ_IGHV_gDNA_27 G3 ACA CTC TTT CCC TAC ACG ACG 70.51 °C

Illuover CTC TTC CGA TCT GCC CAT CTC

TGA AGA GCA G

50494325 VDJ_IGHV_gDNA_28 G4 ACA CTC TTT CCC TAC ACG ACG 71.35 °C

Illuover CTC TTC CGA TCT GCG TCG GTG

AAA GGC AG

50494326 VDJ_IGHV_gDNA_29 G5 ACA CTC TTT CCC TAC ACG ACG 71.68 °C

Illuover CTC TTC CGA TCT CTC CGT GAA

GCG CCG

50494327 VDJ_IGHV_gDNA_30 G6 ACA CTC TTT CCC TAC ACG ACG 70.40 °C

Illuover CTC TTC CGA TCT TGC GTC TGT

GAA AGG CAG

Table 15.

Extract genomic DNA

[0448] Extracted blood. PBMC extraction (ficoll), froze some in DMOS for eventual live pull down. Frozen cell stocks were used (3 vial, one for day 0 - day 7 and day 21 total cell 5.5 millions 70% viable). Extracted DNA (Agencourt kit; used lOx lysis mix + 50μ1 RNase cocktail; used bead binding at 50% volume, i.e., 300 μΐ of bead for 600 μΐ of solution). Nanodrop: 62.2 ng/μΐ (260/180 1.90, 280/230 2.0) total -18 μg.

Primer setup

[0449] Made a dilute plate at 5μΜ each; 2μ1 of each +78μ1 of H20, but also to pooled tubes at 5μΜ once pooled. V; 3μ1 of each (=90μ1 total) + 30μ1 H20 = 120μ1 at 5μΜ. J; 2μ1 of each (=6μ1 total) + 74μ1 H20 = 80μ1 at 5μΜ

Individual primer testing

[0450] Tested every primer one by one (non-IUumina overlap only): each V against a pool of all 3 J, (30 PCR reaction); each J against a pool of all V (3 PCR reaction). Assembled a reaction as follows:

1 tube 5t 35t

d¾0 9.8μ1 (ΐο 20μ1) 49 343

62.2 ng/μΐ DNA 1.60 μl l00 ng 8 56

5x HF buffer 4 μΐ IX 20 140

lO mM dNTP 0.4 μΐ 0.2 μΜ 2 14

5 μΜ primer v 2 μΐ 0.5 μΜ 10 -

5 μΜ primer J 2 μΐ 0.5 μΜ - 70

phusion hot start 0.2 μΐ 0.02 U/μΙ 1 7

(18 μΐ /tubes)

[0451] Thermal cycled as follows:

1- 98°C for 1 min

2- 98°C for 10 seconds

3- 55°C for 30 seconds

4- 72°C for 30 seconds go to step 2, 30x

5- 72°C for 5 min

6- 4°C pause

[0452] Added 5μ1 of 5X novex buffer and load 6μ1 on agarose gels (couldn't see anything). Ran 15μ1 on 6% TBE, stain SYBR gold 12 min (Figure 58)

Primer setup part 2

[0453] Plate (VDJ_gDNA_April02_10) was diluted at 400μΜ. Diluted plates were made at 5μΜ each: 2μ1 for each V and J +158μ1 of H20 =160μ1, but also to pooled tubes at 5μΜ once pooled. V; 2μ1 of each (=90μ1 total) + 70μ1 H20 = 160μ1 at 5μΜ (well Fl). J; 2μ1 of each (=6μ1 total) + 154μ1 H20 = 160μ1 at 5μΜ (well F2).

Individual primer testing [0454] Tested every primer one by one (non-Illumina overlap only): each V against a pool of all 3 J, (45 PCR reaction); each J against a pool of all V (3 PCR reaction); and all V and J in one reaction (1 PCR reaction) (Figure 59).

[0455] Assembled a reaction as follows: 1 tube 5t (J and all) 50t d¾0 9.8 μΐ (to 20 μΐ) 49 490

62.2 ng/μΐ DNA 1.60 μΙ ΙΟΟ ng 8 80

5x HF buffer 4 μΐ IX 20 140 lO mM dNTP 0.4 μΐ 0.2 μΜ 2 20

5 μΜ primer V 2 μΐ 0.5 μΜ 10 -

5 μΜ primer J 2 μΐ 0.5 μΜ - (10 all) 100 phusion hot start 0.2 μΐ 0.02 U/μΙ 1 10

(18 μΐ /tubes)

[0456] Thermal cycling was as follows:

1- 98°C for 1 min

2- 98°C for 10 seconds

3- 58°C for 20 seconds

4- 72°C for 30 seconds go to step 2, 30x

5- 72°C for 5 min

6- 4°C pause

[0457] With Illumina overhang (Table 16).

ACG CTC TTC CGA TCT CCT

GGA GTG GAT TGG GTA CAT CT

51403102 A7 Il_VDJJGHV_gDNA_trunc 135 04 ACA CTC TTT CCC TAC ACG 71.8

ACG CTC TTC CGA TCT GGA AGG GGC TGG AGT GGA TT

51403103 A8 Il_VDJ_IGHV_gDNA_trunc 135_05 ACA CTC TTT CCC TAC ACG 71.1

ACG CTC TTC CGA TCT AGG GTC TGG AGT GGG TCT CA

51403104 A9 I1_VD J_IGHV_gDNA_trunc 135 06 ACA CTC TTT CCC TAC ACG 71.5

ACG CTC TTC CGA TCT CTG GAG TGG CTT GCA CAC A

51403105 A10 Il_VDJ_IGHV_gDNA_trunc 135_07 ACA CTC TTT CCC TAC ACG 71.2

ACG CTC TTC CGA TCT CTG GAG TGG ATG GGG AGG ATT

51403106 Al l I1_VD J_IGHV_gDNA_trunc 135 08 ACA CTC TTT CCC TAC ACG ' 71.4

ACG CTC TTC CGA TCT AAA GGC CCT GGA GTG GCT T

51403107 A12 I1_VD J_IGHV_gDNA_trunc 135_09 ACA CTC TTT CCC TAC ACG 71.8

ACG CTC TTC CGA TCT CCT GGA GTG GCT TGC ACT CA

51403108 B l Il_VDJ_IGHV_gDNAjrunc 135_13 ACA CTC TTT CCC TAC ACG 70.8

ACG CTC TTC CGA TCT AGG GCT TGA GTG GAT GGG AG

51403109 B2 I1_VD J _IGHV_gDNA_trunc 135_22 ACA CTC TTT CCC TAC ACG 69.8

ACG CTC TTC CGA TCT CAG GGA AGG GAC TGG AAT ATG TTT c

514031 10 B3 I1_VD J_IGHV_gDNA_trunc 135^23 ACA CTC TTT CCC TAC ACG 72.0

ACG CTC TTC CGA TCT GGA AAG GGC TGG AGT GGG TT

51403111 B4 H_VD J JGHV_gDNA_trunc 135_24 ACA CTC TTT CCC TAC ACG 69.8

ACG CTC TTC CGA TCT GAG TGG GTC TCT CTT ATT AGT TGG GA

514031 12 B5 I1_VD J_IGHV_gDN AJrunc 135_14 ACA CTC TTT CCC TAC ACG 71.6

ACG CTC TTC CGA TCT GCT GGA GTG GGT CTC ATC CA

51403113 B6 11 VD J JGHV_gDNA_trunc 135_15 ACA CTC TTT CCC TAC ACG 71.8

ACG CTC TTC CGA TCT GGG CTG GAG TGG GTA GGT TT

514031 14 B7 Il_VDJ_IGHV_gDNA_trunc 135_16 ACA CTC TTT CCC TAC ACG 70.2

ACG CTC TTC CGA TCT GTT GGC CGT ACT AGA AAC AAA GCT

514031 15 B8 I1JVD J JGHV_gDNA_trunc 135_17 ACA CTC TTT CCC TAC ACG 71.4

ACG CTC TTC CGA TCT CTG GAG TGG GTA TCG GGT GT

51403116 B9 Il_VDJ_IGHV_gDNA_truncl35_ l 8 ACA CTC TTT CCC TAC ACG 71.0

ACG CTC TTC CGA TCT GAG TGG ATG GGA TTG GTG TGC

51403117 BIO I1_VD J_IGHV_gDNA_trunc 135_19 ACA CTC TTT CCC TAC ACG 69.9

ACG CTC TTC CGA TCT CTT GAG TGG ATG GGA GGT TTT GAT C

51403118 Bl l I1_VD J_IGHV_gDNA_trunc 135_20 ACA CTC TTT CCC TAC ACG 70.7

ACG CTC TTC CGA TCT AGG CTT GAG TGG ATG GGA TGG 514031 19 B12 Il_VDJ_IGHV_gDNA_trunc 135__21 ACA CTC TTT CCC TAC ACG 71.8

ACG CTC TTC CGA TCT CCT GGA GTG GCT TGC TCA CA

51403120 CI I1_VD J_IGHV_gDNA_trunc 135_25 ACA CTC TTT CCC TAC ACG 69.5

ACG CTC TTC CGA TCT AGT GGG TGG CAG TTA TAT GGT ATG A

51403121 C2 I1_VD J_IGHV_gDNA Jrunc 135_34 ACA CTC TTT CCC TAC ACG 69.9

ACG CTC TTC CGA TCT TGA GTG GAT AGG ATG GAT CGT CG

51403122 C3 I1_VD J JGHV_gDNA Jrunc 135 J 5 ACA CTC TTT CCC TAC ACG 70.0

ACG CTC TTC CGA TCT GGG TTG GCC GTA TTA AAA GCA AAA C

51403123 C4 Il_VDJ_IGHV_gDNA_trunc 135 36 ACA CTC TTT CCC TAC ACG 69.3

ACG CTC TTC CGA TCT ACT GGA GTG GAT TGG GTA CAT CTA TT

51403124 C5 H_VD J_IGHV_gDN A Jrunc 135_26 ACA CTC TTT CCC TAC ACG 70.9

ACG CTC TTC CGA TCT AGG GCT TGA GTG GAT GGG AA

51403125 C6 I1_VD J _IGHV_gDNA_trunc 135^27 ACA CTC TTT CCC TAC ACG 69.9

ACG CTC TTC CGA TCT CTG GAG TGG ATT GGG TAC ATC TAT CA

51403126 C7 I1_VD J_IGHV_gDNA_trunc 135_28 ACA CTC TTT CCC TAC ACG 71.1

ACG CTC TTC CGA TCT CGC TTG AGT GGA TGG GAT GG

51403127 C8 I1_VD J _IGHV_gDNA_trunc 135_29 ACA CTC TTT CCC TAC ACG 71.0

ACG CTC TTC CGA TCT GGG TGG CCA ACA TAA AGC AAG A

51403128 C9 I1_VD J_IGH V_gDNA_trunc 135_30 ACA CTC TTT CCC TAC ACG 71.7

ACG CTC TTC CGA TCT GGG ACT GGA GTG GAT TGG GT

51403129 CIO 11 JVD J JGH V_gDN A Jrunc 135_31 ACA CTC TTT CCC TAC ACG 70.2

ACG CTC TTC CGA TCT GCT AGA GTG GGT GGC AGT TAT ATC A

51403130 Cl l I1_VD J JGHV_gDNA Jrunc 135_32 ACA CTC TTT CCC TAC ACG 70.1

ACG CTC TTC CGA TCT CTT GAG TGG ATG GGA TGG ATG AAC

51403131 C12 I1_VD J JGHV_gDNA_trunc 135_33 ACA CTC TTT CCC TAC ACG 69.2

ACG CTC TTC CGA TCT AGT GGG TCT CAG CTA TTA GTG GTA G

51403132 Dl I1_VD J IGHV gDN A Jrunc 135_37 ACA CTC TTT CCC TAC ACG 71.4

ACG CTC TTC CGA TCT GCT GGA GTG GGT CTC TGG TA

51403133 D2 11 JVD J JGHV_gDNA Jrunc 135_38 ACA CTC TTT CCC TAC ACG 71.5

ACG CTC TTC CGA TCT GCT GGT GTG GGT CTC ACG TA

51403134 D3 I1_VD J JGHV_gDNA Jrunc 135_39 ACA CTC TTT CCC TAC ACG 70.1

ACG CTC TTC CGA TCT GAG TGG GTC TCA GGT ATT AGT TGG A

51403135 D4 11 VDJ IGHV gDNA truncl35 40 ACA CTC TTT CCC TAC ACG 71.1 ACG CTC TTC CGA TCT CAG

GAA AAG GTC TGG AGT GGG T

51403136 D5 I1_VD J_IGHV_gDN Ajrunc 135 1 ACA CTC TTT CCC TAC ACG 70.2

ACG CTC TTC CGA TCT TGG AGT GGG TGG CAG TTA TAT CA

51403137 D6 I1_VD J_IGH V_gDNA_trunc 135_42 ACA CTC TTT CCC TAC ACG 70.9

ACG CTC TTC CGA TCT GGG ACT GGA GTG GGT TTC ATA CA

51403138 D7 I1_VD J JGHV_gDNA_trunc 135_43 ACA CTC TTT CCC TAC ACG 70.7

ACG CTC TTC CGA TCT AGG GCT TGA GTG GAT GGG ATG

51403139 D8 I1_VD J_IGH V_gDNA_trunc 135_44 ACA CTC TTT CCC TAC ACG 69.8

ACG CTC TTC CGA TCT AGG GAA AGG GCT AGA GTT GGT AG

51403140 D9 I1_V D J _IGHV_gDNA_trunc 135_45 ACA CTC TTT CCC TAC ACG 71.6

ACG CTC TTC CGA TCT TCC CCA TCG AGA GGC CTT GA

51403141 El I1_VD J_IGH J_gDNA_01 CTC GGC ATT CCT GCT GAA 71.9

CCG CTC TTC CGA TCT CTT ACC TGA GGA GAC GGT GAC C

51403142 E2 Il_VDJ_IGHJ_gDNA_02 CTC GGC ATT CCT GCT GAA 71.9

CCG CTC TTC CGA TCT CTC ACC TGA GGA GAC AGT GAC C

51403143 E3 Il_VDJ_IGHJ_jDNA_03 CTC GGC ATT CCT GCT GAA 71.3

CCG CTC TTC CGA TCT CTT ACC TGA AGA GAC GGT GAC C

Table 16.

Primer setup part 2

[0458] Plate (VDJ_gDNA_April23_10_illumina) was diluted at 400μΜ. Plates were supplied at 10 nM, resuspend all oligos in 25 μΐ each. They were not tested one by one, instead overall band intensity was tested, and also to pooled tubes at 5 μΜ once pooled. V; 2 μΐ of each (=90 μΐ total) + 70 μΐ H20 = 160 μΐ at 5 μΜ (well Fl). J; 2 μΐ of each (=6 μΐ total) + 154 μΐ H20 = 160 μΐ at 5 μΜ (well F2)

[0459] combined Illumina primer overlap testing

[0460] Assembled a reaction as follows: 1 tube 4 tubes

dH20 14.42 μΐ (to 25 μΐ) 57.68

180 ng/μΙ ϋΝΑ 0.83 μl l 50 ng 3.33

5x HF buffer 5 μΐ IX 20

l O mM dNTP 0.5 μΐ 0.2 μΜ 2

5 μΜ primer V 2 μΐ 0.5 μΜ 8

5 μΜ primer J 2 μΐ 0.5 μΜ 8

phusion hot start 0.25 μ10.02 υ/μ1 1

(25 μΐ /tubes)

[0461] Thermal cycle was performed as follows:

1 - 98°C for i min

2- 98°C for 10 seconds

3- 58 °C for 20 seconds

4- 72°C for 20 seconds go to step 2, 30x

5- 72°C for 5 min

6- 4°C pause

[0462] Qiagen purified, eluted in 30μ1. Nanodrop

70 ng/μΐ no overhang

2 128 ng/μΐ Illuminaovehang

3 90 ng/μΐ Illumina overhang, Veraseq

[0463] To 6 μΐ, added 6 μΐ of 2X blue juice and loaded 6 μΐ. Ran 2x 6 μΐ on 6% TBE (20 min), stained half with ethidium bromide (EtBR) and and SYBR gold 12 min. Inversed loading (so number 3 is Phusion with primer no-overhang) (Figure 60).

[0464] Assembled a reaction as follows:

1 tube 5t

dH20 10.85 μΐ (to 20 μΐ) 54.25

180 ng/μΙ ϋΝΑ 0.55 μΐ 100 ng

5x HF buffer 4 μ1 IX 20

lO mM dNTP 0.4 μΐ 0.2 μΜ 2

5 μΜ primer V 2 μΐ 0.5 μΜ

5 μΜ primer J 2 μΐ 0.5 μΜ

phusion hot start 0.2 μΐ 0.02 U/μΙ

(15.45μ1 /tubes) [0465] Thermal cycling performed as follows (Figure 61):

1- 98°C for l min

2- 98°C for 10 seconds

3- 55°C for 30 seconds

4- 72°C for 30 seconds go to step 2, 30x

5- 72°C for 5 min

6- 4°C pause

[0466] Repeated with cDNA of 62 ng/μΐ and coriel DNA (dilute 1 :5). Tried from FV1 cDNA (RT-PCR done as in heavy chain 454 sequencing).

[0467] Assembled a reaction as follow:

1 tube

dH20 6.4 μΐ (to 20 μΐ)

cDNA 5 μ1 100 ng

5x HF buffer 4 μΐ IX

lO mM dNTP 0.4 μΐ 0.2 μΜ

5 μΜ primer V 2 μΐ 0.5 μΜ

5 μΜ primer J 2 μΐ 0.5 μΜ

phusion hot start 0.2 μΐ 0.02 U/μΙ

(18 μΐ /tubes)

[0468] Thermal cycling performed as follows:

1- 98°C for i min

2- 98 °C for 10 seconds

3- 58°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 25x

5- 72°C for 5 min

6- 4°C pause

Loaded 5μ1 on 6% TBE gel, ran 25 min, stained with 10 μΐ EtBr 15 min (Figure 62). EXAMPLE XII

Rheumatoid Arthritis Immune Sequencing [0469] Sample information is set forth in Table 17.

Table 17.

RNA extraction

[0470] Used mirvana as per manufacturer protocol. QC nanodrop. Diluted all to 250 ng/μΐ (Table 18). Π> ng/ul RNA 260/280 260/230 1/3 Volume Water to

dilution for 500ul 7

1 768.6 2.06 1.4 260.6 1.92 5.08

2 644.7 2.09 2.05 213.1 2.35 4.65

3 349.3 2.07 2.05 1 12.0 4.46 2.54

4 181.7 2.04 1.7 - 2.75 4.25

5 434.6 2.1 1.11 141.6 3.53 3.47

6 1071.3 2.09 1.59 360.4 1.39 5.61

7 597 2.04 1.82 199.2 2.51 4.49

8 18.7 /134.0 1.88 1.13 - 3.73 3.27

Table 18.

[0471] Concentrated sample 8 by EtOH precipitation, reuspended in 20 ml, nanodrop=134.0.

Reverse transcription. Proceeded as follows for RT-PCR:

2x 1 tube

• H20 (DEPC) 0 μ1 (ΐο 12 μ1)

• 2 μΜ Gene-specific primer (IGHC K and L) 5 (5 pmole)

• Total RNA 7 μΐ (500 ng)

Heated at 95 °C for 1 min. followed by 65 °C for 5 min., than ice for 1 min. Spun down and added the following:

1 tube 10 tubes

• 5 First strand buffer 4μ1 40

• lO mM dNTP mix Ι μΐ 10

• 0.1 M DTT Ι μΐ 10

• RNase Inhibitor-Enzy Ι μΐ 10

• Superscript III Ι μΐ 10

[0472] Incubated at 55 °C for 60 min. ^l/tubes). Inactivated enzyme by heating at 70°C for 15 min. Removed RNA/DNA hybrid by adding 1 μΐ of E. coli RNaseH. Incubated at 37°C for 20 min., then ice. Assembled PCR reaction as follows (used half for PCR, kept other half as backup): lx x2per sample x 12samples (T6f)

• d¾0 21 μ1 (to 50 μΐ) 420

• cDNA 5 μΐ • 5 HF buffer 10 μΐ 240

• dNTP(lO mM) 1 μΐ 24

• primer up (IGHV new-short) (4 μΜ) 6.25 μΐ (25 pmole) 150

• primer low (IGHC new-short)(4 μΜ) 6.25 μΐ (25 pmole) 150

• phusion 0.5 μΐ 12

Added 45 ml to 5 μΐ twice for each cDNA sample. Thermal cycled as follows:

1- 98 °C for l min.

2- 98 °C for 10 seconds

3- 62 °C for 20 seconds

4- 72 °C for 20 seconds went to step 2, 23x

5- 72 °C for 5 min.

6- 4 °C pause

Pooled both tubes together (total 100 μΐ). Added 2 μΐ of Exonuclease I (20υ/μ1) to each 100 μΐ tube and incubated at 37°C for 20 min. AMPure XP purified, ratio 1.8:1. Resuspended in 40 μΐ, transferred to PCR strip. Conducted SPRI purification as follows:

• Added the require amount of AMPure XP beads (1.8: 1 ratio) to the DNA sample in buffer EB.

• Vortexed to mix.

• Incubated for 5 minutes at room temperature.

• Magnet (MPC) for 5 minutes. Left the tube of beads in the MPC during all wash steps.

• Removed the supernatant (kept in case of failure) and washed the beads twice with 500 μΐ of 70% ethanol, incubating for 30 sec. each time.

• Removed all the supernatant, quick spun, removed last drop and allowed the AMPure beads to air dry completely (2 min.).

• Removed the tube from the MPC, added 40 μΐ of 10 mM Tris-HCl, 0.1 mM EDTA, pH 8.0 (or Qiagen's Buffer EB), and vortexed for 30 sec. to resuspend the beads, let sit for 3 min. Magnet for 2 min. and transfer supernatant to a new tube. [0475] A diagnostic gel was used to check PCR efficiency. 2 μΐ was run on a 2% Egel-X for 12 min. (Figure 68). Blunting reactions were performed using Enzymatics End repair kit as follows:

It 12t

• H20 0 μ1(ΐο 50 μΐ) 0

• Purified DNA 38 μΐ -

• 10x End repair buffer 5 μΐ 60

• 1 mM dNTP mix 5 μΐ 60

• enzyme mix. 5 μΐ 60

[0476] Incubated at 25 °C temperature for 30 min. Heat inactivated at 75 °C for 20 min.

AMPure XP purified, ratio 1.8:1. Resuspended in 37 μΐ (kept non-bind volume as backup). Saved 2 μΐ of each sample for gel diagnostic. A diagnostic gel was run to check efficiency of blunting and ampure beads. 2 μΐ of sample was run on a 2% Egel-X for 12 min. (Figure 69). AMPure purified to remove all dNTP, eluted in 44 μΐ. E Gel diagnostic 2 μΐ. Tested the following steps on one sample only: (sample 10 FV1, the one with the extra band at 275 bp).

A-tailing - FV1 sample only

[0477] Klenow exo- "A" and "T" tailing. The following reaction mix was prepared:

• H20 42 μΐ (to 50 μΐ)

• DNA sample 41 μΐ

• 1 OX Klenow buffer 5 μΐ

• lO mM dATP 1 μΐ

• Klenow exo (3' to 5' exo minus) 3 μΐ

[0478] Incubated for 30 minutes at 37 °C. AMPure purified, eluted in 26 μΐ. Ran on diagnostic gel (Figure 70). Lnl post A-tail, ln2, second round of AMpure of supernatant non-bind post end it. Everything looked fine. Without intending to be bound by scientific theory, the previous gel bands of FVl (samples 9 and 10), were probably faint from bad gel loading.

Y Adaptor ligation

[0479] Self annealed 454 oligo into adapter A and B together. Followed 454 protocol (10 μΐ of 100 μΜ of each primer + 30 μΐ of (10 mM Tris, 0.1 mM EDTA at 50 mM NaCl)) (each adapter was at 20μΜ final), 95 °C for 3 min., ramp to 15 °C forever at 0.1 °C/sec.

[0480] Ligation of rapid 454 Y adapter as follows (kept 2 μΐ of DNA on the side for gel comparison):

1 tube

• H20 0 μΐ (to 50 μΐ)

• 2x Quick ligase buffer 25 μΐ

• VDJ DNA 23 μΐ

• 20 μΜ adapter 1 μΐ

• T4 DNA ligase (quick) 2 μΐ

[0481] Incubated on PCR at 22°C for 15 min. AMPure XP purified, ratio 1.8: 1. Resuspended in 25 μΐ. Ran sample on a diagnostic gel.

[0482] Tested all combined reactions, like in the 454 rapid protocol. Used sample 9 (FVl for this), pretended endit was not done yet (cause need buffer in the mixture). Performed blunting reaction using Enzymatics End repair kit as follows (simultaneous Endit and A- tailing):

1 tube

Η20 0 μ1(ΐο 50 μΐ)

Purified DNA 40 μΐ

10χ End repair buffer 5 μΐ

1 mM dNTP mix 5 μΐ

enzyme mix. 2 μΐ (T4 pol + PNK)

TAQ polymerase 2 μΐ [0483] Incubated at 25 °C temperature for 20 min., then 72 °C for 20 min., then 4°C hold. Y adapter ligation, add directly to the reaction as follows:

• Endit A-tailed DNA 50 μΐ

• 2x Quick ligase buffer 50 μΐ

• 20 μΜ adapter 1 μΐ

• T4 DNA ligase (quick) 2 μΐ

[0484] Incubated on PCR at 22 °C for 15 min. (total volume was at 107 μΐ) so 1.8 ampure = 193 μΐ. AMPure XP purified, ratio 1.8: 1. Resuspended in 25 μΐ. Performed diagnostic gel on sample (Figure 71), 2% egel, ran 16 min. Lane 1, marker; lane 2, pre-ligation control; lane 3, Klenow A tail; lane 4, Taq A tail.

[0485] The extra bands in lane 2 were the RNAse H non-specific bands that got ligated. Now the question was to know if ligation will show one Y adapter vs 2 Y adapters. Primer A 41 nt, primer B 43 nt = total 84. Without intending to be bound by scientific theory, this would mean that the first band would be proper ligation and the other one above would be something else because the final product is 100 bp or more, unless the FAM is causing this migration pattern. But ideally a phopho primer set, follow in PCR by a cycle of TAQ, would probably be the way to go... but phusion would compete for A tail of taq. Test ligation of Y adapter on forever ladder test a few sizes, (no a- tailing concern here). Then test Taq A tailing sequencial vs. mixed with the blunt ending.

PCR test

[0486] Used primers (Table 19) that amplified the final product, so only double adapter ligation should get amplifyed exponentially. Started with a 1/10 dillution, did PCR of 15 cycles and see what happen on gel.

Reference Purification Sequence Name Sequence Tm

53164334 Standard 454 rapid top PCR CCA TCT CAT CCC TGC GTG TCT CC 61.4

Desalting 53164335 Standard 454 rapid low PCR CCT ATC CCC TGT GTG CCT TGA 60.9

Desalting GAG

Table 19.

[0487] Assembles a PCR test reaction as follows: lx 5x

• d¾0 15.75 μΐ (to 25 μΐ) 78.75

• 1/10 dilution of DNA 1 μΐ

• 5x HF buffer 5 μΐ 25

• dNTP(lO mM) 0.5 μΐ 2.5

• primer up 10 μΜ 1.25 6.25

• primer low 10 μΜ 1.25 6.25

• phusion 0.25 μΐ 1.25

[0488] Thermal cycled as follows:

1- 98 °C for l min.

2- 98 °C for 10 seconds

3- 65 °C for 20 seconds

4- 72 °C for 20 seconds went to step 2, 15x

5- 72 °C for 5 min.

6- 4° C pause

[0489] Loaded 2 μΐ and 20 μΐ samples on 2% ex gel and ran for 16 min. (Figure 72). Sample 1, pre-ligation control; sample 2, Klenow A tail; sample 3, Taq A tail; sample 4, no template PCR control. Without intending to be bound by scientific theory, it appeared that the upper band was the correct one, the absence of FAM there would make it migrate slightly lower. An extraction would confirm once and for all, but the resulting enrichment looked very nice. (Re-ordered the primer with a 5' FAM on top primer and both HPLC purified.)

[0490] Performed a pippin prep extraction test. Band extraction pattern was as follows:

1 475 450-500

2 500 475-525 nicely done

3 538 500-575 4 500 460-540 100 bp ladder (7 μΐ pippin) extract 500 bp

[0491] Loaded 20 μΐ of resulting elution chamber (60-80 μΐ) on 2% exgel (Figure 73. Left panel pre-pippin; right panel, post-pippin. Lane 1, control FV-μΙ VDJ, HC purified. Validated PCR extraction. 1. negative control FV-μΙ (used 1 μΐ). 2. 475-525 (hypo :one Y adapter only). 3. 500-550 (hypo : 2 Y adapter).

[0492] Assembled a PCR test reaction as follow lx 4

• dH20 11.7 5 μΐ (to 25 μΐ) 47

• pipin elution dilution of DNA 5 μΐ

• 5x HF buffer 5 μΐ 20

• dNTP(lO mM) 0.5 μΐ 2

• primer up 10 μΜ 1.25 5

• primer low 10 μΜ 1.25 5

• phusion 0.25 μΐ 1

[0493] Thermal cycled as follows (20 μΐ / tube):

1- 98 °C for l min.

2- 98 °C for 10 seconds

3- 65 °C for 20 seconds

4- 72 °C for 20 seconds went to step 2, 15x

5- 72 °C for 5 min.

6- 4 °C pause

[0494] Loaded 2 μΐ and 20 μΐ samples on an ex gel, ran 16 min. (Figure 74).

Optimize A-tailing

[0495] Tried adding Klenow or Taq right after blunt ending (no cleanup), with an excess of dATP and fresh buffer. Then combined with or without clenup prior ligaiton. Used post- ligation sample for initial testing. Two good-sized bands were obtained to evaluate efficiency: 1, klenow- lig; 2, klenow- clean+lig; 3, Taq lig; 4, Taq clean+lig; 5, bst largefrag lig; 6, bst largefrag clean+lig. [0496] Used one of FV1 heavy chain, post PCR, post cleanup. Split reaction in 6 for testing. Performed blunting reaction using Enzymatics End repair kit as follows (use only half of PCR product maybe?):

It 8

• H20 0 μ1(ΐο 25 μΐ) 104

• Purified DNA 19μ1 (6 DNA + 13 water)

• 1 Ox End repair buffer 2.5 μΐ 20

• I mM dNTP mix 2.5 μ1 (0.1 ηιΜ) 20

• enzyme mix (HC) 1 μΐ 8

[0497] Incubated at 25 °C temperature for 30 min. (19/t). Heat inactivated at 75 °C for 20 min.

A-tailed by adding the following directly to the mixture (also did with TAQ and BST with proper buffers) :

It 2t

• H20 20 μί(βάά 25 to 50 μΐ) 40

• Blunt DNA sample 25 μΐ 50

• 1 OX Klenow buffer 2.5 μΐ 5

• lO mM dATP 0.5 μΐ 1

• Klenow exo HC (3' to 5' exo minus) 2 μΐ 4

[0498] Total reaction was now 50 μΐ. Klenow, incubated at 37 °C for 30 min., heat inactivated at 75 °C for 20 min. Taq, incubated at 72 °C for 30 min. BST, incubated at 65 °C for 30 min., heat inactivated at 80 °C for 10 min. Split each reaction in 2 tubes of 50. Apure XP purified half of each reaction, eluted in 50ul. The other half was run directly in the ligaiton.

[0499] Y adapter ligation. The following were add directly to the reaction:

It 7t

• H20 0 (add μΐ ΐο 100 μΐ) -

• A-tailed DNA 50 μΐ -

• 2x Quick ligase buffer 46 μΐ 322

• 20 μΜ adapter 2 μΐ 14

• T4 DNA ligase (quick) 2 μΐ 14 [0500] Incubated on PCR at 22°C for 15 min. Total reaction was then 100 μΐ. Ampure, 1.8 ratio. Eluted in 25 μΐ (Figure 75).

Pippin prep test 2 (loading quantity)

[0501] Pooled all samples. Nanodrop : 25¾/μ1 ratio were way high (FAM?). Load on pippin prep at different quantity. Kept some to run as negative control. Extract range 475 to 550. Loaded on pippin nanodrop post-pippin. Sample 1, 2.5 μΐ; sample 2, 5; sample 3, 10; sample 4, 20; sample 5, ref. Ampure XP, eluted in 20 μΐ. Nanodrop all 0. Loaded 5 μΐ on 2% e-gel ex (Figure 76). Did not look like the correct size was extracted. Without intending to be bound by scientific theory, this may be due to the fact that 475-550 was used instead of 475-525.

Finalize library

[0502] The following protocol was designed to finalize remaining library. Plate was setup as follows (Table 20):

Table 20.

[0503] Perform blunting reaction using Enzymatics End repair kit as follows (use only half of PCR product maybe):

It 60 • ¾0 0 μΐ (to 25 μΐ) 0

• Post PCR Purified DNA 19μ1

• 10 End repair buffer 2.5 μΐ 150

• 1 mM dNTP mix 2.5 μΐ (0.1 mM) 150

• enzyme mix (HC) 1 μΐ 60

[0504] Incubated at 25 °C temperature for 30 min. (19/t). Heat inactivated at 75 °C for 20 min.

A-tailed by adding the following directly to the mixture:

It 60t

• ¾0 20 μ1( ΐο 50 μ1) 1200

• Blunt DNA sample 25 μΐ

• 1 OX Klenow buffer 2.5 μΐ 150

• lO mM dATP 0.5 μΐ 30

• Klenow exo HC (3' to 5' exo minus) 2 μΐ 120

[0505] Total reaction was then 50 μΐ (25/t). Incubated at 37 °C for 30 min. Heat inactivated at 75 °C for 20 min.

[0506] Prepared 454 Y-adapters. 10 μΐ of 100 μΜ of each primer A and B + 30 μΐ of (10 mM Tris, 0.1 mM EDTA at 50 mM NaCl)) (each adapter was at 20 μΜ final). Incubated at 95 °C for 3 min., ramp to 15 °C forever at 0.1 °C/sec.

[0507] Y adapter ligation. The following was added directly to the reaction:

It 2x30t

• ¾0 0 (add nl to 100 μΐ) -

• A-tailed DNA 50 μΐ

• 2x Quick ligase buffer 46 μΐ 1380

• 20 μΜ adapter 2 μΐ

• T4 DNA ligase (quick) 2 μΐ 60

[0508] Incubated on PCR at 22 °C for 15 min. (48/t). Total reaction was then 100 μΐ. Ampured, eluted in 40 μΐ (used the liquidator). Library QC foor pooling. Tested on HIV sample, tested only first 5 samples (progressor). Appendix A sets forth ScFv primers. Appendix B sets forth methods of SOE-PCR and ScFV generation from single cells. Appendix C sets forth VDJome analysis methods.

ScFv Primers

From Notebook

Contents

■ (for nested PCR strategy)

■ 1 .1 Info

■ 1 .2 Plates

■ 1 3 Mixing

_attB (Gateway cloning)

■ 2.1 Info

■ 2.2 Sequences

■ 2.3 Ordering Info

■ ? 4 Mixing Info

>_scFv_USER and . USER

■ 3.1 Info

■ 3.2 Sequences

■ 3.3 Ordering Info

■ 3.4 Mixing Info

_SOE_PEDS_l 1_405_LLA4

■ 4.1 Info

■ 4.2 Sequences

■ 4.3 Plate information

■ 4.4 Mixing info

■ 5.1 Info

■ 5.2 Sequences

■ 5.3 Plate information

■ S 4 Mixing info

_SOE_PEDS_l 1_405_LLA4

- 6.1 Info

■ 6.2 Sequences

■ 6.3 Plate info

■ 6.4 Mixing i'^f'"1

' ) and . : _ OE_PNAS_85_5879_G4S3

(for nested PCR strategy)

Info

■ These are the same primers used for the original VDJ-ome project

■ See VDJ-ome_Primers for more detail on their design

Plates

■ These primers are ordered on two plates, arranged as:

■ The excel files for IDT are:

■ Media: . _left.xls

■ Media: Lright_ _RT.xls

■ NUia: This plate has oniv 16 primers, so IDT won't let me order it. I ordered it in separate tubes instead.

Mixing

■ The plate are ordered at 200 μΜ

■ The individual tubes are ordered LabReady at 100 uM

■ For plates: To make 2.5 μΜ each primer, add 1 uL stock into 80 uL total volume of each primer

■ For tubes: To make 2.5 uM each primer, add 2 uL stock into 80 uL total volume of each primer

■ Note, the IOHV, IGK/LV. IGHC. IHK LC are four different primer mixes.

bly attB (Gateway cloning)

Info

■ The primer design is on

■ These are the "outer" primers of with attB tags added on for Gateway cloning.

Sequences ■ The _attB primer sequences are:

20100505_IGHV_left_attBl_l

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCCG i>20100505_IGHV_left_attBl_2

■ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCTGG j 20100505_IGHV_left_attBl_3

jggggacaagtttgtacaaaaaagcaggcttcCAGGTCACCTTGAGGGAGTCTGGTCC f 20100505_IGHV_left_attBl_4

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTTCAGCTGTTGCAGCCTGG i 20100505_IGHV_left_attBl_5

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTGCAGCTACAGCAGTGGGG i 20100505_IGHV_left_attBl_6

jggggacaagtttgtacaaaaaagcaggcttcCAGGTGCAGCTGGTGCAATCTGG j>20100505_IGHV_left_attBl_7

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTCACCTTGAAGGAGTCTGGTCC 20100505_IGHV_left_attBl_8

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTCCAGCTGGTACAGTCTGGG !>20100505_IGHV_left_attBl_9

•ggggacaagtttgtacaaaaaagcaggcttcCAGGACCAGTTGGTGCAGTCTGGG |>20100505_IGHV_left_attBl_10

Jggggacaagtttgtac aaaaagcaggcttcCAGGTGCAGCTGGTGGAGTCTGG [>20100505_IGHV_left_attBl_ll

!ggggacaagtttgtacaaaaaagcaggcttcCAGATGCAGCTGGTGCAGTCTGG !>20100505_IGHV_left_attBl_12

!ggggacaagtttgtacaaaaaagcaggcttcCAAATGCAGCTGGTGCAGTCTGGG |>20100505_IGHV_left_attBl_13

jggggacaagtttgtacaaaaaagcaggcttcGAAGTGCAGCTGGTGGAGTCTGGG J>20100505_IGHV_left_attBl_14

!ggggacaagt-ttgtacaaaaaagcaggcttcCAGGTGCAGCTGGTGCAGTCTG 20100505_IGHV_left_attBl_15

IggggacaagtttgtacaaaaaagcaggcttcGAGGATCAGCTGGTGGAGTCTGGG i 20100505_IGHV_left_attBl_16

•ggggacaagtttgtacaaaaaagcaggcttcGAGGTCCAGCTGGTACAGTCTGGG f>20100505_IGHV_left_attBl_17

JggggacaagtttgtacaaaaaagcaggcttcCAGCTGCAGCTGCAGGAGTCC [>20100505_IGHV_left_attBl_l8

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCTGG ! 20100505_IGHV_1eft_attB1_19

!ggggacaagtttgtacaaaaaagcaggc tcCAGGTGCAGCTGGTGCAGTCTG !>20100505_IGHV_left_attBl_20

jggggacaagtttgtacaaaaaagcaggcttcCAGGTACAGCTGCAGCAGTCAGGT [>20100505_IGHV_left attB1_21

!ggggacaagtttgtacaaaaaagcaggcttcGAGATGCAGCTGGTGGAGTCTGGG 20100505_IGHV_left_attB1_22

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCATCTGGTGGAGTCTGGG i>20100505_IGHV_left_attBl_23

■ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCTGG j>20100505_IGHV ieft attB1_24

|ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCTGG p>20100505_IGHV_left_attB1_25

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTCCAACTGGTGTAGTCTGGAGC J 20100505_IGHV_left_attBl_26

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGCAGTCTG !>20100505_IGHV_left_attBl_27

jggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTGGAGTCTCG J>20100505_IGHV_left_attBl_2B

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTTCAGCTGGTGCAGTCTGGG f 20100505_IGHV_left_attBl_29

!ggggacaagtttgtacaaaaaagcaggcttcCAGGTGCAGCTGGTGCAGTCTG !>20100505_IGHV_left_attB1 30

■ggggacaagtttgtacaaaaaagcaggcttcGAAGTGCAGCTGGTGCAGTCTGG j>20100505_IGHV_left_attBl_31

jggggacaagtttgtacaaaaaagcaggcttcGAGGTGGAGCTGATAGAGTCCATAGA f 20100505_IGHV_left_attBl_32

!ggggacaagtttgtaeaaaaaagcaggcttcACAGTGCAGCTGGTGGAGTCTGG ! 20100505_IGHV_left_attBl_33

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGAGGAGTCTGG |>20100505_IGHV_left_attBl_34

jggggacaagtttgtaeaaaaaagcaggettcGAGGTACAGCTGGTGGAGTCTGAAGA f>20100505_IGHV_left_attBl_35

jggggacaagtttgtacaaaaaagcaggcttcCAGGTGCAGCTGCAGGAGTCG t 20100505_IGHV_left_attBl_36

!ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGTTGGAGTCTGGG t 20100505_IGHV_left_attBl_ 7

•ggggacaagtttgtacaaaaaagcaggcttcCAGGTGCAGCTGGGGCAGTC e20100505_IGHV_left_attBl_38

JggggacaagtttgtacaaaaaagcaggcttcCAGCTGCAGCTGCAGGAGTCG f20100505_IGHV_left_attBl_39

IggggacaagtttgtacaaaaaagcaggcttcCAGGTTCAGCTGGTGCAGTCTGGA ! 20100505 IGHV left attBl 40 !ggggacaagtttgtacaaaaaagcaggcttcGAGGTGCAGCTGGTAGAGTCTGGG

j>20100505 _left_attBl_ 1

jggggacaagtttgtacaaaaaagcaggcttcCAGGTCCAGCTTGTGCAGTCTGGG

[ 2010050S _le£t_attBl_42

Jggggacaagtttgtacaa aaagcaggcttcGAGGTGCAGCTGTTGCAGTCTGC^

20100505 _left_attBl_43

IggggacaagtttgtacaaaaaagcaggcttcGAGGTACAACTGGTGGAGTCTGGGGG i>20100505 _left_attBl_44

IggggacaagtttgtacaaaaaagcaggcttcCAGATCACCTTGAAGGAGTCTGGTCC

j>20100505 _left_attBl_45

jggggacaagtttgtacaaa agcaggcttcCAGGTACAGCTGATGCAGTCTGGGG

20100505 _right_attB2_l

IggggaccactttgtacaagaaagctgggtcTTTGATCTCCACCTTGGTCCCTCCGC

i>20100505 _right_attB2_2

!ggggaccactttgtacaagaaagctgggtcTTTGATCTCCAGCTTGGTCCCCTGG

i>20100505 _right_attB2_3

[ggggaccactttgtacaagaaagctgggtcTTTGATATCCACTTTGGTCCCAGGGC

f20100505 _rig t_attB2_4

IggggaccactttgtacaagaaagctgggtcTTTGAT TCCACCTTGGTCCCTTGGC

!>20100505 _right_attB2_5

!ggggaccactttgtacaagaaagctgggtcTTTAATCTCCAGTCGTGTCCCTTGGC

j 20100505_IGLJ_right_attB2_l

jggggaocactttgtacaagaaagctgggtcGAGGACGGTCACCTTGGTGCCA

f 20100505 _right_attB2_2

JggggaccactttgtacaagaaagctgggtcTAGGACGGTCAGCTTGGTCCCTCC

20100505 _right_attB2_3

!ggggaccactttgtacaagaaagctgggtcGAGGACGGTCAGCTGGGTGCC

► 20100505 _right_attB2_4

¾gggaccactttgtacaagaaagctgggtcTAAAATGATCAGCTGGGTTCCTCCAC

c-20100505_IGLJ_right_attB2_5

jggggaccactttgtacaagaaagctgggtcTAGGACGGTGACCTTGGTCCCAGT

f 20100505 _right_attB2_6

IggggaccactttgtacaagaaagctgggtcTAGGACGGTCAGCTCGGTCCCC

■ The linker primers only (note truncation of one of them to match Tm):

Ordering Info

■ The plate is arranged as follows:

■ The excel file for ordering is here:

Media' ' attB.xls Mixing Info

All primers are ordered at 200 μΜ. We make mixes to 2,5 μΜ for each primer. Per 80 mix, add stock of each primer (diluted in Tris-HCl)

_scFv_USER and _USER

Primer design

■ These primers incorporate uracils for later USUK excision.

Sequences

■ ._scFv_USER

20100B26_8CFv_USER_VHl 2for

IgttaggUGAGGAGACRGTGACCAGGGTG

i>20100826 _USER_VH4/5for

jgttaggUGAGGAGACGGTGACCAGGGTT

! 20100826_scFv_USER_VH3for

JgttaggUGAAGAGACGGTGACCATTGT

>20100826_scFv_USER_VH6lor

!gttaggUGAGGAGACGGTGACCGTGGTCC

!>20100826_scFv_USER_VLlback

•gggatcuCAG CTGTSBTGACGCAGCCGCC

^20100826_scFv_USER_VL3back

JgggatcuTCCTATGWGCTGACWCAGCCAC

f>20100826_acFv_USER_VL38back

IgggatCUTCCTATGAGCTGAYRCAGCYACC

!>20100826 _USER_VI.4back

!gggatcuCAGCCTGTGCTGACTCARYC

|>20100826_acFv_USER_VL7/8back

jgggatcuCAGDCTGTGGTGACYCAGGAGCC

p>20100826_scFv USER_VL9back

JgggatcuCAGCCWGKGCTGACTCAGCCMCC

;>20100826_scFv_USER_VLllback

!gggatcuTCCTCTGAGCTGASTCAGGASCC

i 20100826_scFv_USER_VLl Sback

jgggateuCAGTCTGYYCTGAYTCAGCCT

j 20100826_scFv_USER_VL15back

!gggatcuAATTTTATGCTGACTCAGCCCC

20100826_scF _USER_VKlback

IgggatcuGACATCCRGDTGACCCAGTCTCC

i>20100826_scFv_USER_VK2backts

!gggatCuGAAATTGTRWTGACRCAGTCTCC

< 20100826_8cFv_USER_VK9back

JgggatCuGATATTGTGMTGACBCAGWCTCC

p>20100826_scFv_USER_VK12back

!gggatcuGAAACGACACTCACGCAGTCTC

! 20100826_scFv_linker_upper_PEDS_l 1_405_LLA4_term_T

p>20100826_scFv_linker_lower_PEDS_l 1_405_LLA4_term_T

pGAGCAGAACTAGTATTCGGAGCAGAACCACTGTGGCTCGCGCTGTTAGGt

USER

20100827_USER_VHl/2for

la C agUGAGGAGACRGTGACCAGGGTG

i 20100827_USER_VH4/5for

lagtctagUGAGGAGACGGTGACCAGGGTT

j 20100827_USER_VH3for

JagtctagUGAAGAGACGGTGACCATTGT

; 20100827_USER_VH6for

!agtct gUGAGGAGACGGTGACCGTGGTCC

Ordering Info

below:

NOTE: to order deoxyuridine, the IDT code is: /ideoxyU/

120100827_USER_VH1/2for agtctag/ideoxyU/GAGGAGACRGTGACCAGGGTG

120100827_USER_VH /5for agtctag/ideoxyU/GAGGAGACGGTGACCAGGGTT

;20100827_USER_VH3for agtctag/ ideoxyU/GAAGAGACGGTGACCATTGT

;20100827_OSER_VB6for agtctag/ ideoxyU/GAGGAGACGGTGACCGTOGTCC

;20100827_USER_VLlback actagac/ideoxyU/CAGTCTGTSBTGACGCAGCCGCC

;20100827~USER_VL3back actagac/ ideoxyU/TCCTATGHGCTGACWCAGCCAC

|20100827_CSER_VL38back actagac/ideoxyU/TCCTATGAGCTGAXRCAGCYACC

¾0100827_CSER_VL4back actagac/ideoxyU/CAGCCTGTGCTGACTCARYC

;20100827~CSER_VL7/ 8back actagac/ deoxyU/CAGDCTGTGGTGACYCAGGAGCC

;20100827_CSER_VL9back actagac/ideoxyU/CAGCCWGKGCTGACTCAGCCMCC

'|20100827~0SER_VL1lback actagac/ideoxyU/TCCTCTGAGCTGASTCAGGASCC

120100827~USER_VL13back actagac/ideoxyU/CAGTCTGXYCTGAYTCAGCCT

120100827 USE ~VL15back actagac/ideoxyU/ ATTTTATGCTGACTCAGCCCC

!20100827~USER~VKlback actagac/ ideoxyU/GACATCCRGDTGACCCAGTCTCC

!20100 a27_USER~VK2baokts actagac/ ideoxyU/GAAATTGTRWTGACRCAGTCTCC

;20100827_USER_VK9back actagac/ideoxyU/GATATTGTGHTGACBCAGWCTCC

|20100827_USER_VX12back actagac/ ideoxyU/GAAACGACACTCACGCAGTCTC

The plate is here:

Media: plate .xls

Mixing Info

The scFv linker sequences are ordered LabReady as 100 μΜ in pH 8 TE

The primers in the plate are at 200 μΜ so must be mixed and diluted.

Make 2.5 μΜ mix in each primer. Since they are 200 μΜ, we must divide by 80.

Per 80 total, put in 1 of each primer.

Put K and L primers together

Make tubes with Tris-HCl first:

SOE PEDS 11 405 LLA4

Info

Primers based on design from '

Linker is:

j>PEDS_l1_405_LLA4

CCTAACAGCGCGAGCCACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCC

■ The overlap is:

Sequences

f>20100505_IGLV_1eft_33_SOE_PEDS_l1_405_LLA4

[ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGTGCTGACTCAGCCACCC

i>20100505_IGLV_left_34_SOE_PEDS_ll_405_LLA4 ..

t>2 100505_IGLV_left_35_SOE_PEDS_l 1_405_LLA4

p 20100505_IGLV_1eft_36_SOE_PEDS_l1_405_LLA4

p-20100505_IGLJ_right_l

20100505_IGLJ_rlght_2

j>20100505_IGLJ_right_3

P»20100505_IGLJ_right_4

JTAAAATGATCAGCTGGGTTCCTCCAC

i>20100505_IGLJ_right_5

fTAGGACGGTGACCTTGGTCCCAGT

i>20100505_IGLJ_right_6

irAGGACGGTCAGCTCGGTCCCC

Plate information

■ Ordered from IDT:

Mixing info

■ Make 2.5 μΜ mix in each primer. Since they are 200 uM, we must divide by 80.

■ Per 80 uL total, put in 1 uL of each primer.

■ Make tubes with Tris-HCl first:

■ Then using a multichannel, pipette 1 uL per 80 of each column into the tubes.

■ Then combine tubes A+B, C, D+E+F, G

20100505

Info

■ See design

« The Tm was designed for 62°C

20100505_IGHV_left_l

'GAGGTGCAGCTGGTGGAGTCCG

h>20100505_IGHV_left_2

■GAGGTGCAGCTGGTGGAGTCTGG

f>20100505_IGHV_left_3

jcAGGTCACCTTGAGGGAGTCTGGTCC

f>20100505_IGHV_le f t_4

lCAGGTTCAGCIGTTGCAGCCTGG

l>20100505_IGHV_left_5

lCAGGTGCAGCTACAGCAGTGGGG

i>20100505_IGHV_left_6

jcAGGTGCAGCTGGTGCAATCTGG

f>20100505_IGHV_le£t_7

[CAGGTCACCTTGAAGGAGTCTGGTCC

f>20100505_IGHV_le£t_8

!CAGGTCCAGCTGGTACAGTCTGGG

t>20100505_IGHV_le£t_9

■CAGGACCAGTTGGTGCAGTCTGGG

f20100505_IGHV_left_10

JCAGGTGCAGCTGGTGGAGTCTGG

J>20100505_IGHV_-eft_ll

JCAGATGCAGCTGGTGCAGTCTGG

!>20100505_IGHV_left_12

lCAAATGCAGCTGGTGCAGTCTGGG

i20100505_IGHV_left_13

■GAAGTGCAGCTGGTGGAGTCTGGG

p>20100505_IGHV_left_1

JCAGGTGCAGCTGGTGCAGTCTG

20100505_IGHV_left_15

IGAGGATCAGCTGGTGGAGTCTGGG

h>20100505_IGHV_left_16

GAGGTCCAGCTGGTACAGTCTGGG

t>20100505_IGHV_left_17

[CAGCTGCAGCTGCAGGAGTCC

f»20100505_IGHV_left_l8

[GAGGTGCAGCTGGTGGAGTCTGG

i>20100505_IGHV_left_19

!CAGGTGCAGCTGGTGCAGTCTG

i>20100505_IGHV_left_20

CAGGTACAGCGCAGCAGTCAGGT

f>20100505_IGHV_left_21

JGAGATGCAGCTGGTGGAGTCTGGG

20100505_IGHV_left_22

iGAGGTGCATCTGGTGGAGTCTGGG

t>20100505_IGHV_left_23

GAGGTGCAGCTGGTGGAGTCTGG

c>20100505_IGHV_left_24

IGAGGTGCAGCTGGTGGAGTCTGG jcAGCCTGTGCTGACTCAGCCATCT

< 20100505_IGLV_left_22

JTCCTCTGGGCCAACTCAGGTGC

F>20100505_IGLV_left_23 fTCCTATGAGCTGACTCAGCCACCCT t>20100505 _left_24

'CAGACTGTGGTGACCCAGGAGCC

|>20100505_IGLV_left_25 jcAGTCTGCCCTGACTCAGCCTGC f>20100505_IGLV_left_26

[AATTTTATGCTGACTCAGCCCCACTC 20100505_IGLV_left_27

! 20100505_lGLV_left

CAGGCTGTGGTGACTCAGGAGCC

j>20100505_IGLV_left_29

JCAGCTTGTGCTGACTCAATCGCCC

f-20100505_IGLV_left_30 lCAGACTGTGGTGACTCAGGAGCCC 20100505_IGLV_left_31 frcCTATGAGCTGACTCAGCCACACTC

>20100505 V_le£t_32

[CAGGCTGTGCTGACTCAGCCG p>20100505_IGLV_left_33

JTCCTATGTGCTGACTCAGCCACCC

20100505_IGLV_left_34

JCAGTCTGCCCTGACTCAGCCTCG

!>20100505_IGLV_le£t_35

'CAGTCTGTTCTGACTCAGCCTCGCT i>20100505_IGLV_left_36

[CAGTCTGTGCTGACGCAGCCG

|>20100505_IGKJ_right_l h'TTGATCTCCACCTTGGTCCCTCCGC

!>20100505_IGKJ_right_2 fTTTGATCTCCAGCTTGGTCCCCTGG j>20100505 _right_3

^TTTGATATCCACTTTGGTCCCAGGGC p>20100505_IGKJ_right_4

[TTTGATTTCCACCTTGGTCCCTTGGC

!»20100505_IGKJ_right_5 frTTAATCTCCAGTCGTGTCCCTTGGC

|>20100505_IGLJ_right_l JGAGGACGGTCACCTTGGTGCCA

p>20100505_IGLJ_right_2 iTAGGACGGTCAGCTTGGTCCCTCC !>2010O505_IGLJ_right_3 iGAGGACGGTCAGCTGGGTGCC l>20100505_IGLJ_right_4 TAAAATGATCAGCTGGGTTCCTCCAC

f>20100505_IGLJ_right_5 JTAGGACGGTGACCTTGGTCCCAGT

! 20100505 IGLJ_right_6 fTAGGACGGTCAGCTCGGTCCCC

Plate information

■ Ordered form IDT:

Mixing info

Make 2.5 μΜ mix in each primer. Since they are 200 μΜ, we must divide by 80. Per 80 uL total, put in 1 uL of each primer.

Make tubes with Tris-HCl first:

■ Then using a multichannel, pipette 1 uL per 80 of each column into the tubes.

■ Then combine tubes A+B, C, D+E+F, G

_SOE_PEDS_11_405_LLA4

Info

Uses Timers with a new linker sequence.

• Example overlap is: Primer target Number of primers

IGHV (VH/heavy left) 22

IGHJ (VHrtieavy right) |5

; IGK/LV (VL/light left) (76

I IGKLI (VL/light right) 110

Sequences

i>20100329_yH4back| 1

|>20100329_VH4back|2

jCAGGTGCAGCTGCAGGAGTCGG

F>20100329_VH5back| 1

SAGGTACAGCTGCAGCAGTCA

!>20100329_VH6back| 1

!CAGGTGCAGCTACAGCAGTGGG

;>20100329_VH10back| 1

JGAGGTGCAGCTGGTGGAGACC

!>20100329_VH10back|2

EAGGTGCAGCTGGTGGAGACT

!>20100329_VH10back|3

!>20100329_VH10back|4

JGAGGTGCAGCTGGTGGAGTCT

; 20100329_VH10back|5

EAGGTGCAGCTGTTGGAGACC

t>20100329_VH10baok|6

f>20100329_VH10baok|7

!>20100329_VH10baok|8

JGAGGTGCAGCTGTTGGAGTCT

!>20100329_VH12back|l

|>20100329_VH12baCk| 2

JCAGGTCCAGCTGGTGCAGTCTGG

i>201Q0329_VB12back|3

!CAGGTCCAGCTTGTACAGTCTGG

!>20100329_VH12baCk|4

!CAGGTCCAGCTTGTGCAGTCTGG

f»201OO329_VH14back| 1

|CAGATCACCTTGAAGGAGTCTG

f 20100329_VH14baok|2

!CAGGTCACCTTGAAGGAGTCTG

fc-20100329_VH22baCk|l

!cAGGTGCAGCTGGTGCAATCTGG

»20100329_VH22back|2

t»20100329_VH22back|3

tAGGTGCAGCTGGTGOAATCTGG

l>20100329_VH22back|4

!CAGGTGCAGCTGGTGGAGTCTGG

;> 20100329_VH 1 / 2 f o r I l_SOE_PED S_l 1_405_LLA4

JCTAGTATTCGGAGCAGAACCACTGTGGCTCGCGCTG TAGGTGAGGAGACAGTGACCAGGGTG

f 20100329_7Hl/2£or |2_S0E_PEDS_11_405_LLA4

iCTAGTATTCGGAGCAGAACCACTGTGGCTCGCGCTGTTAGGTGAGGAGACGGTGACCAGGGTG !>20100329_VH4 /5 for 11_S0E_PEDS_11_ 05_LLA4

j>20100329_VH3for | 1_S0E_PEDS_11_405_LLA4

JCTAGTATTCGGAGCAGAACCACTGTGGCTCGCGCTGTTAGGTGAAGAGACGGTGACCATTGT

f 20100329_VH6 f or | l_SOE_PEDS_l 1_ 05_LLA4

STAGTATTCGGAGCAGAACCACTGTGGCTCGCGCTGTTAGGTGAGGAGACGGTGACCGTGGTCC

1>2010032 _VL 1 b c k I 1_S0E_PEDS_11_405_LLA4

i>20100329_VLlbaok| 2_SOE_PEDS_11_405_LLA4

jACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCOAGTCTGTCGTGACGCAGCCGCC ;>20100329_VLlback| 3_SOE_PEDS_11_405_LLA4

lACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTCTTGACGCAGCCGCC !> 20100329_VL lback I 4_SOE_PEDS_l 1_405_LLA4 jACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTGCTGACGCAGCCGCC !>20100329_VLlback | 5_SOE_PEDS_11_405_LLA4

lACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTGGTGACGCAGCCGCC !>20100329_VLlback | 6_SOE_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTGTTGACGCAGCCGCC i>20100329_VL3back | l_SOE_PEDS_l1_ 05_LLA4

j>20100329_VL3back | 2_SOE_PEDS_l1_405_LLA4

|ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGACTCAGCCAC 20100329_VL3back| 3_SOE_PEDS_11_405_LLA4

iACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGTGCTGACACAGCCAC !>20100329_VL3back| 4_SOE_PEDS_11_405_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGTGCTGACTCAGCCAC

< 20100329_VL38back | l_SOE_PEDS_l1_405_LLA4

JACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGACACAGCCACC

201O0329_VL38back | 2_SOE_PEDS_11_405_LLA4

^.CAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGACACAGCTACC i 20100329_VL38back | 3_SOE_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGACGCAGCCACC

1>20100329_VL3 Bback | 4_SOE_PEDS_ _405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGACGCAGCTACC f 20100329_VL3 Bback | 5_SOE_PEDS_l 1_405_LLA4

■ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGATACAGCCACC >20100329_VL38back | 6_SOE_PEDS_l1_ 05_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGATACAGCTACC

t>20100329_VL38back| 7_SOE_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGATGCAGCCACC

) 20100329_VL3 Bback | 8_SOE_PEDS_l1_405_LLA4

[ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTATGAGCTGATGCAGCTACC J>20100329_VL4back| 1_SOE_PEDS_11_405_LLA4

jACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAACC !>2010032 _VL4back | 2_SOE_PEDS_l1_405_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAATC

-20100329_VL4back | 3_S0E_PEDS_11_405 LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAGCC j20100329_VL back | 4_S0E_PEDS_11_40S_LLA4

JACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAGTC

!>20100329_VL7/Bback | 1_SOE_PEDS_11_405__LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGACTGTGGTGACCCAGGAGCC

!»20100329_VL7 /8back | 2_SOE_PEDS_11_405_LLA4

'lACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGACTGTGGTGACTCAGGAGCC .20100329_VL7 /Bback | 3_S0E_PEDS_11_405_LLA4

|ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGGCTGTGGTGACCCAGGAGCC f>20100329_VL7 /Bback | 4_S0E_PEDS_11_405_LLA4

JACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGGCTGTGGTGACTCAGGAGCC

l>20100329 VL7/Bback |5_SOE_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTGGTGACCCAGGAGCC

'o20100329_VL7/8back| i_SOE_PEDS_ll_ 05_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTGGTGACTCAGGAGCC p-20100329_VL9back | 1_S0E_PEDS_11_405_LLA4

JACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCAGGGCTGACTCAGCCACC

20100329_VL9back | 2_S0E_PEDS_11_405_LLA4

JACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCAGGGCTGACTCAGCCCCC

!>20100329_VL9back| 3_SOE_PEDS_11_40S_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCAGTGCTGACTCAGCCACC

j>20100329_VL9back | 4_SOE_PEDS_11_405_LLA4

■ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCAGTGCTGACTCAGCCCCC f>20100329_VL9back | 5_S0E_PEDS_11_405_LLA4

JftCAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGGGCTGACTCAGCCACC 20100329_VL9back | 6_SOE_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGGGCTGACTCAGCCCCC i 20100329_VL9back | 7_S0E_PEDS_11_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAGCCACC f>20100329_VL9back|B_SOE_PEDS_ll_405_LLA4

'ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGCCTGTGCTGACTCAGCCCCC f>20100329_VLllbank| 1_SOE_PEDS_11_405_LLA4

lACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTCTGAGCTGACTCAGGACCC fc-20100329_VLllback| 2_SOE_PEDS_11_405_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTCTGAGCTGACTCAGGAGCC

e>20100329_VLllback|3_SOE_PEDS_U_405_LLA4

JACAGTGGTTOTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTCTGAGCTGAGTCAGGACCC

J>20100329_VL1 lback | 4_SOE_PEDS_11_405_LLA4

JVCAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCTCCTCTGAGCTGAGTCAGGAGCC

20100329_VL13back | l_SOE_PEDS_l1_405_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGCCCTGACTCAGCCT i>20100329_VL13back | 2_SOE_PEDS_l1 40S_LLA4

!ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGCCCTGATTCAGCCT

| 20100329_VL13back | 3_SOE_PEDS_11_405_LLA4

]ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGCTCTGACTCAGCCT f»20100329_VL13back | _SOE_PEDS_11_405_LLA4

! 20100329_VL13back | 5_50E_PEDS_11_ 05_LLA4

ACAGTGGTTCTGCTCCGAATACTAGTTCTGCTCCGGGATCCCAGTCTGTCCTGACTCAGCCT Plate info

The primers were ordered from IDT in IDTE pH 8 at 200 μΜ concentration.

Mixing info

Make 2.5 μΜ mix in each primer. Since they are 200 μΜ, we must divide by 80. Per 80 uL total, put in 1 uL of each primer.

Make tubes with Tris-HCl first:

Then using a multichannel, pipette 1 uL per 80 of each column into the tubes. Then combine tubes A3, C+D+E+F, G+H

SOE_PNAS_85_5879_G4S3

A.-J

scFv linker sequence:

(G_4 S)_3 scFv linker from Huston et al, PNAS 85: 5879

SSGTGGCGGTGGCTCGGGCGGTGGTGGGTCGGGTGGCGGCGGATCT

■ The counts are: Primer target Number of primers

1 IGHV (VH/heavy left) 7

i IGHJ (VH/heavy right) 4

i lG /LV (VL/light left) 13

; IGK/LJ (VL light right) 6

■ The primers are below, "back" are the 5' primers (to the left) and "for" are the 3' primers (to the right),

■ The IDT plate is arranged as follows:

■ I also ordered "linker primers" that are only complementary to the linker,

■ These are arranged in the plate as follows:

Appendix B

SOE_PCR and ScFV generation in single cells

SOE VDJ (heavy and light chain pairing)

Use extra mix to make 5x FV1 (180ng/ul... 1.67ulRNA+5.33ul H20) for light chains and 5 for heavy chains

1. Reverse transcription; Proceed as follow for RT-PCR

Did 5 tubes for heavy chain and 5 tubes for light chain (mix shown here was because this was done at the same time as HIV VDJ

1.1 Assemble a RT reaction as follow; 2x ltube

• H20(DEPC) 0μ1(ίο 12μ1)

• 2μΜ Gene-specific primer(heavy or light) 5ul (5pmole)

• Total RNA 7 μ1 (15(^)

Heat at 95 °C for lmin followed by

65CC for 5 min than ice for 1 min

Spin down and Add the following: ltube 30tubes

• 5 x First strand buffer 4μ1 120

• lOmM dNTP mix Ι μΐ 30

• 0.1M DTT Ι μΐ 30

• Rnaselnhibitor-Enzymatics Ι μΐ 30

• Superscript III Ι μΐ 30

Incubate at 55 °C for 60 min (δμΙ/ηΛββ)

1.2 Inactivate enzyme by heating at 70°C for 15 min

1.3 Remove RNA/DNA hybrid by adding Ιμΐ of E.coli RNaseH (E:

Incubate at 37°C for 20 min, then ice.

2. Assemble PCR reaction as follow :

Use half for PCR keep other half as backup... extra amount made because done in parallel with HIV_VDJ project

2.1 Assemble a PCR test reaction as follow

lx x2per sample x 15samples (45t) f!2t light chain)

• d¾0 21 μ1 (ίο 50μ1) 945(1084.46)

252(259.2)

• cDNA 5μ1

• 5x HF buffer ΙΟμΙ 450 120

• dNTP(10 mM) (25niM) Ι μΐ (0.4) 45 (18)

12(4.8)

• primer up (IGHV new-short) (4μΜ) 6.25 μΐ (25pmole) 281.25(225)

75

• primer low (IGHC new-short)^M) 6.25 μΐ (25pmole)

281.25(224) 75 Appendix B

• phusion 0.5μ1 22.5

6

Add 90 per mix to lOul cDNA, split PCR rx in 2 tube of 50, for each sample

Was low on primer, so did number in red

2.2 Thermal cycle as follows:

1- 98°C for 1 min

2- 98°C for 10 seconds

3- 62°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 23x

5- 72°C for 5 min

6- 4°C pause

2.3 Repool each 2 reaction into 1

2.4 Add 2μ1 of Exonucleasel (20υ/μ1) to each tube and incubate at 37°C for 20 min

2.5 AMpure XP purify ratio 1.8: 1. Ressuspend in 40ul [lower if possible)

Conduct SPRI purification as follow:

• Add the require amount of AMPure XP beads (1.8: 1 ratio) to the DNA sample in buffer EB.

• Vortex to mix

• Incubate for 5 minutes at room temperature.

• Magnet (MPC) for 5 minutes. Leave the tube of beads in the MPC during all wash steps

• Remove the supernatant (keep in case of failure)and wash the beads twice with 500 μΐ of 70% Ethanol,incubating for 30 sec each time.

• Remove all the supernatant, quick spin , remove last drop and allow the AMPure beads to air dry completely (2 min).

• Remove the tube from the MPC, add 40μ1 of 10 mM Tris-HCl, 0.1 mM EDTA, pH 8.0 (or Qiagen's Buffer EB), and vortex for 30 sec to resuspend the beads, let sit for 3 min Magnet for 2 min and transfer supernatant to a new tube.

3. Diagnostic gel (check PCR efficiency)

Run 2ul on a 2% Egel-X for 12 min

VH =410bp

VL= 360bp

Appendix B

Pool all 5 tubes. And re-concetrate with ampure down to 60ul so that it can be loaded across 2 lane on the pipipin prep.

3.1.1 Phusion PCR of SOE LLA4 primers from cDNA

Plan

Reactions

Make a master mix of the following components.

■ Aliquot 19.6 μΙ_ into 4 PCR tubes. Add 0.2 μΙ_ of each appropriate primer, as follows (8 different primer mixes total):

1. VH primers

2. LLA4 SOE VH primers

3. VL primers

4. LLA4 SOE VL primers

Cycling

1. 98°C, 30 s

2. 98°C, 10 s

3. 65°C, 30 s

4. 72°C, 30 s

5. Goto 2, 29x

6. 72°C, 5 min

7. 4°C, forever

Results

The gel is below. 2% E-gel EX run for 10 min. Appendix B

3.1.2 Gradient PCR of LLA4 primers with Phusion from cDNA Reactions

■ Mix the following. There are two master mixes. Appendix B

■ Aliquot 20 μΙ_ of each mix into 4 tubes of a PCR strip, using tubes 1 , 3, 5, 7.

The strips are to be placed in positions 3-10 of the gradient block

The gradient temperatures are:

1. 64.9°C

2. 66.9°C

3. 70.0°C

4. 72.5°C

Cycling

1. 98°C, 30 s

2. 98°C, 10 s

3. Grad 64°C-74°C (machine set), 30 s

4. 72°C, 30 s

5. Goto 2, 24x

6. 4°C, forever

Results

■ The el is below: 2% E-gel EX run for 10 min

Appendix B

3.1.3 Kapa 2G Robust PCR with LLA4 from cDNA

Plan

■ I will try the Kapa 2G Robust enzyme to see if it performs better using the same primer set than Phusion

I also believe that Kapa has no exo activity, and I think that the primer dimer band may require exo in order to form robustly, so perhaps this will help avoid it.

Reactions

Mix the followin in se arate PCR tubes

Appendix B

Cycling

95°C, 1 min

95°C, 20 s

65°C, 20 s

72°C, 30 s

Goto 2, 24x

4°C, forever

Results

Gel is below (2% E-gel EX)

Appendix B

3.1.4 Heavy/light chain clone matching

Manually matched some possible heavy and light chains for our synthesis is on the spreadsheet.

3.1 .5 Phusion PCR using different numbers of cycles

Plan

■ See if reducing the number of cycles more will help the PCRs

Reactions

NOTE: I ran out of one of the cDNA samples so I had to use two different cDNA samples: Appendix B

VH VL

Aliquot 20 μΙ_ into 5 PCR tubes for each of VH and VL

- The PCR tubes are cut apart and loaded onto a thermocycler

Cycling

■ Testing different amounts of cycling: 9, 13, 17, 21 , 25 cycles.

■ After 9 cycles, we pull out one of the tubes for VH and VL, and then pull out a tube every 4 cycles thereafter till the last tube does 25 cycles.

The program is:

1 98°C, 30 s

2 98°C, 10 s

3 72°C, 30 s

4 Goto 2, 8x

5 20°C, forever (pull tube)

6 98°C, 10 s

7 72°C, 30 s

8 Goto 6, 3x

9 Goto 5, 3x

10.4°C, forever

Results

■ The gel is below (2% E-gel E>

Lane Sample Amount

M NEB 50 bp ladder 1 μΐ in 20

1 VH 9 cycles 10 μΐ in 20

2 VH 13 cycles 10 μΐ in 20

3 VH 17 cycles 10 μΐ in 20

4 VH 21 cycles 10 μΐ in 20

5 VH 25 cycles 10 μΐ in 20

6 VL 9 cycles 10 μΐ in 20

7 VL 13 cycles 10 μΐ in 20

8 VL 17 cycles 10 μΐ in 20

9 VL 21 cycles 10 μΐ in 20 Appendix B

10 VL 25 cycles 10 μΐ in 20

3.1.6 cDNA synthesis using Superscript III

■ Used the RNA labeled PBMC RNA that Francois gave me. I finished the whole tube

(which is why I used somewhat less RNA than in the previous cDNA synthesis)

Reactions

Mix the followin :

NOTE: The actual mix is overdiluted because instead of adding 16.5 pL water like I should've, I actually added 22.5 for some strange reason.

I aliquoted 10 pL of this mix into 16 PCR tubes

Incubate @ 65°C for 5 min

Incubate @ 4°C for >1 min

Meanwhile, make the following mix: Appendix B

Aliquot 10 μΙ_ into each tube

Incubate @ 25°C, 10 min

Incubate @ 50°C, 50 min

Incubate @ 85°C, 5 min

Chill on ice

■ I combined all 16 reactions into a single Eppy

I added 16 pL of RNase H and incubates @ 37°C for 20 min

3.1 .7 Primer concentration gradient for Phusion PCR from cDNA

Plan

■ One of the final optimizations that I want to perform before moving on to the cross- linking is checking for the optimal primer concentrations

■ I will do a primer concentration gradient to check for secondary products and

efficiency

Reactions

■ Make the following master mix. (I can do VH and VL together because primers will be

Aliquot 8.8 μΙ_ into each of 16 PCR tubes (8 VH, 8 VL)

The rimers will be added as follows: Appendix B

■ Note that the amounts added are for each primer mix, so that each individual tube requires 4 pipetting steps (right primer + water, left primer + water).

Cycling

98°C, 30 s

98°C, 10 s

72°C, 30 s

Goto 2, 24x

4°C, forever

Results

Gels are below (2% E-gel EX)

Appendix B

Analysis

■ The VH PCR shows a clear maximum of produced product. It is a bit difficult to see any secondary products (probably because of the slightly reduced number of cycles), but it seems that the optimal amount is probably 40-70 nM of each primer (0.32-0.56 μΙ_ primer mix at 2.5 μΜ each primer).

3.1.8 PCRs for gel purification of VH and VL chains

Plan

■ Perform PCR using SOE primers and USER primers to gel extract the material Reactions

■ Prepare the following reactions:

Appendix B

Phusion 0.2 0.2

Cycling

LLA4 SOE

1. 98°C, 30 s

2. 98°C, 10 s

3. 67°C, 30 s

4. 72°C, 30 s

5. Goto 2, 24x

6. 4°C, forever

USER

1. 95°C, 1 min

2. 95°C, 10 s

3. 55°C, 30 s

4. 72°C, 15 s

5. Goto 2, 4x

6. 95°C, 10 s

7. 60°C, 30 s

8. 72°C, 15 s

9. Goto 6, 19x

10. 4°C, forever

Extraction

The ~450 bp bands are cut out and purified using the Qiagen MinElute kit.

The DNA is eluted using 10 pL of EB buffer, and afterwards I add 9 μΙ_ of Tris-HCI to each tube. Appendix B

Results

Appendix B

3.1.9 Assembling linked VHA/L from size-selected immune chains via SOE- PCR or USER/T4 ligase

3.1.9.1 SOE-PCR assembly

Reactions

■ Mix the following.

NOTE: DO NOT ADD THE PRIMERS. They will be added after the first 5 cycles of PCR.

■ NOTE: The VH amplicons here are the LLA4 SOE primed amplicons

Cycling

1 . 98°C, 30 s

2. 98°C, 10 s

3. 67°C, 30 s

4. 72°C, 30 s

5. Goto 2, 4x

6. 16°C, forever (ADD primer here)

7. 98°C, 10 s

8. 67°C, 30 s

9. 72°C, 30 s

10. Goto 7, 24x

1 1 .4°C, forever

3.1.9.2 USER/T4 ligase

Protocol

NOTE: The amplicons here are the 0827 primed amplicons for USER digestion scFv) Appendix B

USER digestion

Combine the following:

3 μΙ_ VH amplicon

3 μΙ_ VL amplicon

4 μΙ_ dH20

0.5 μΙ_ UDG (Enzymatics)

0.5 μΙ_ Endo VIII (Enzymatics) Incubate at 37°C, 30 min

Ligation reaction

■ To the digestion reaction, add the following:

7 μΙ_ dH20

■ 1 μΙ_ 10x T4 ligase buffer

1 μΙ_ T4 ligase (NEB)

Incubate at 16°C, 30 min

Incubate at 65°C, 10 min

PCR amplification of linked product

Make the following PCR mix:

Cycle as follows:

1. 95°C, 1 min

2. 95°C, 10 s

3. 55°C, 30 s

4. 72°C, 15 s

5. Goto 2, 4x

6. 95°C, 10 s

7. 60°C, 30 s Appendix B

8. 72°C, 15 s

9. Goto 6, 19x

10. 4°C, forever

3.1.9.3 Results

3.1.10 Multistep PCR of VH and VL

■ Attempt to get scFvs using serial PCR reactions with different primer sets 3.1.10.1 Control PCR with original primers Appendix B

Cycle:

1 . 98°C, 1 min

2. 98°C, 10 s

3. 62°C, 20 s

4. 72°C, 20 s

5. Goto 2, 24x

6. 4°C, forever

3.1.10.2 Multistep PCR

PCR A

First PCR using the original PCR outer primers

Mix the following. Heavy and Light chains are amplified together.

Cycle:

1 . 98°C, 1 min

2. 98°C, 10 s

3. 62°C, 20 s

4. 72°C, 20 s

5. Goto 2, 9x

6. 4°C, forever

Add 1 L Exo I and incubate for: Appendix B

37°C, 30 min

80°C, 20 min

PCR B & C

Inner nested PCR using the original primers. Trying with both the non-SOE and SOE versions just to test the PCR reactions.

Cycle:

1 . 98°C, 30 s

2. 98°C, 10 s

3. 67°C, 30 s

4. 72°C, 30 s

5. Goto 2, 9x

6. 4°C, forever

Add 1 μΙ_ Exo I and incubate for:

37°C, 30 min

80°C, 20 min

D

We are now adding the SOE LLA4 tags to PCR B

Mix the followin

Appendix B

Cycle:

1. 98°C, 30 s

2. 98°C, 10 s

3. 67°C, 30 s

4. 72°C, 30 s

5. Goto 2, 9x

6. 4°C, forever

« Add 1 μΙ_ Exo I and incubate for:

37°C, 30 min

80°C, 20 min

■ NOTE: The rest was performed another day

Overlap extension cycling

■ This is some cycling with no primer to get SOE scFv fragments.

■ To PCR reactions C and D, add the following:

Cycle:

1. 98°C, 30 s

2. 98°C, 10 s

3. 62°C, 30 s

4. 72°C, 30 s

5. Goto 2, 9x

6. 4°C, forever

Final outer-PCR

This is the final PCR to amplify up the scFv. We do 25 cycles here.

■ To the above cycled reactions, now add the following. Note, we are only adding the "outer primers":

Cycle:

98°C, 30 s

98°C, 10 s

67°C, 30 s

72°C, 30 s

Goto 2, 24x Appendix B

6. 4°C, forever

The results are in the gel below (2% EX E-gel, 10

Appendix B

Full cDNA->scFv pipeline with reduced cycles PCR from cDNA with primers

Mix the followin . The primers are the primers:

Cycle:

1. 98°C, 30 s

2. 98°C, 10 s

3. 60°C, 30 s

4. 72°C, 30 s

5. Goto 2, 14x

6. 10°C, forever

Add 1 μΙ_ Exo I and incubate for:

37°C, 30 min

80°C, 20 min

7. PCR from PCR A using SOE attB primers

PCR B

Mix the followin . Not the primers are the SOE-attB

Cycle: Appendix B

1. 98°C, 30 s

2. 98°C, 10 s

3. 65°C, 30 s

4. 72°C, 30 s

5. Goto 2, 14x

6. 10°C, forever

■ Add 1 μΙ_ Exo I and incubate for:

37°C, 30 min

80°C, 20 min

NOTE: The rest of the experiment to be finished tomorrow.

8. PCR from PCR B using attB universal primers

PCR C

NOTE: The individual VH and VL reactions must now be combined to get scFvs. This combined reaction will be labeled "VH/VL sep."

Mix the followin :

Add 1 μί. each 10 μΜ universal attB primers at pause point

Cycle:

1. 98°C, 30 s

2. 98°C, 10 s

3. 67°C, 30 s

4. 72°C, 30 s

5. Goto 2, 9x

6. 10°C, forever

Add primer here

7. 98°C, 30 s

8. 98°C, 10 s

9. 63°C, 30 s Appendix B

10. 72°C, 30 s

1 1. Goto 8, 21x

12. 10°C, forever

Run on 2% E-gel EX for 10 min

Appendix C VDJome/ Immune-seq / light chain only

Conduct light chain library prep on sample of day 1, 7 and 21 only

1. Sample ID

Sample were extracted from 9 ML of blood from a single individual at various time point and processed using the Leukolock extraction kit from Ambion:

Then samples were concentrated using RNeasy kit form Qiagen, elute in 2x 30μΙ and nanodro

2. Light chain , the real deal

Used original sample Or second batch

ID for 500ng water to 7 for 500ng water to 7

3 90.57ng/ul 5.52 1.48 2.0 5

5 84.74ng/ul 5.9 1.1 2.16 4.84

7 71.89ng/ul 6.96 0 2.7 4.3

FV1 180ng/ul 2.78 4.22

Then samples were concentrated using RNeasy kit formQiagen, elute in 2x 30μΙ and nanodrop

Tube ID notes

1 old-3 Appendix C old-5

old-7 barely nothing lul maybe

FV1

rneasy-3

rneasy-5

rneasy-7

Reverse transcription; Proceed as follow for RT-PCR

Assemble a RT reaction as follow; 2x ltube

• H20(DEPC) 0μΙ(ίο 12μΙ)

• 2μΜ Gene-specific primer(IGHC K and L) 5 (5pmole)

• Total RNA 7 μΙ (500ng)

Heat at 95°C for lmin followed by

65CC for 5 min than ice for 1 min

Spin down and Add the followi ltube 9tubes

5x First strand buffer 4μΙ 36

lOmM dNTP mix ΙμΙ 9

0.1M DTT ΙμΙ 9

Rnaselnhibitor-Enzy ΙμΙ 9

Superscript III ΙμΙ 9

Incubate at 55°C for 60 min ^l/tubes)

3.2 Inactivate enzyme by heating at 70°C for 15 min

3.3 Remove RNA/DNA hybrid by adding ΙμΙ of E.coli RNaseH (Enzy)

Incubate at 37°C for 20 min, then ice.

4. Assemble PCR reaction as follow :

Use half for PCR keep other half as backup

4.1 Assemble a PCR test reaction as follow

x2per sample χ 7samples (16t)

dH20 21μΙ (ίο 50μΙ) 336 cDNA 5μΙ

5x HF buffer 10μΙ 160 dNTP(10 mM) ΙμΙ 16

primer up (IGHV new-short) (4μΜ) 6.25μΙ (25pmole) 100 (50of each K and L) primer low (IGHC new-short)^M) 6.25μΙ (25pmole) 100 phusion 0.5μΙ

Add 90 per mix to lOul cDNA, then split in 2 tube of 50 for each sample

4.2 Thermal cycle as follows:

1- 98°C for l min

2- 98°C for 10 seconds

3- 62°C for 20 seconds

4- 72°C for 20 seconds go to step 2, 23x

5- 72°C for 5 min

6- 4°C pause Appendix C

Feeze sample

5. Diagnostic gel (check PCR efficiency)

Run 2ul on a 2% Egel-X for 12 min (did 11 min)

5.1 Add 2μΙ of Exonucleasel (201)/μΙ) to each tube and incubate at 37°C for 45 min (did 20 min)

5.2 AMpure XP purify ratio 1.8:1. Ressuspend in 40ul (keep non-bind volume as backup)

Save 2ul of each sample for gel diagnostic

Conduct SPRI purification as follow:

• Add the require amount of AM Pure XP beads (1.8:1 ratio) to the DNA sample in buffer EB.

• Vortex to mix

• Incubate for 5 minutes at room temperature.

• Magnet (MPC) for 5 minutes. Leave the tube of beads in the M PC during all wash steps

• Remove the supernatant (keep in case of failurejand wash the beads twice with 500 μΙ of 70% Ethanol,incubating for 30 sec each time.

• Remove all the supernatant, quick spin , remove last drop and allow the AMPure beads to air dry completely (2 min).

• Remove the tube from the MPC, add 40μΙ of 10 mM Tris-HCI, 0.1 mM EDTA, pH 8.0 (or Qiagen's Buffer EB), and vortex for 30 sec to resuspend the beads, let sit for 3 min Magnet for 2 min and transfer supernatant to a new tube.

5.3 Diagnostic gel (just to check efficiency of

AMPure beads)

Run 2ul on a 2% Egel-X for 12 min

First 4 lanes

Looks good

Blunt ends

Perform blunting reaction using Enzymatics End repair kit as follows:

It

• H20 0μΙ(ίο 50μΙ)

• Purified DNA 38μΙ

• 10x End repair bufferbuffer 5ul

• ImM dNTP mix 5μΙ

• enzyme mix. 5μΙ

Incubate at 25°C temperature for 30 min

Heat inacticate at 75°C for 20 min.

6.2 AMpure XP purify ratio 1.8:1. Ressuspend in 37ul (keep non-bind volume as backup) Appendix

Save 2ul of each sample for gel diagnostic

Diagnostic gel (check efficiency of blunting and

ampure beads)

Run 2ul on a 2% Egel-X for 12 min

Last 4 lanes

Looks good

7. Adaptor ligation (25x excess)

7.1 Self Anneal 454 oligo into adapter A and B together

Follow 454 protocol (ΙΟμΙ of ΙΟΟμΜ of each primer + 30μΙ of (lOmM Tris O.lmM EDTA at 50mM NaCL)) (each adapter are at 20μΜ final), 95 for 3 min, ramp to 15 forever at 0.1°C/sec

Prepare adapter A MID 3-5-8 and adapter B only.

Ligation of adapter 454-A and 454-B use a 15:1 ratio of adapter DNA)

It

• H20 ΙΟμΙ (to ΙΟΟμΙ)

• 2x Quick ligase buffer 50μΙ

• VDJ DNA 35μΙ (-1.25 pmole at 400bp)

• 20μΜ 454-A 1.5μΙ (~30pmole)

• 20μΜ 454-B 1.5μΙ (~30pmole)

• T4 DNA ligase (quick) 2μΙ

Incubate on PCR at 22°C for 30 min

7.3 AMpure XP purify ratio 1.8:1. Ressuspend in 37ul

7.4 Diagnostic gel (test )

Run 2ul on a 2% Egel-X for 12 min

lOObp ladder

1- FV1 pre ligation

2- 5 post ligation, post purification

8. Fill-in Reaction

*lf using BST be aware of the presence of a A-tail at the 3' ends

8.1 In a microcentrifuge tube, add the following reagents, in the order indicated, and mix:

It 5t

• H20 5.5 (ΐο 50μΙ) 27.5

• DNA 35

• lOx Thermopol bufferl 2.5μΙ 12.5 Appendix C

10x Phi29 buffer 2.5 12.5

lOOx BSA (10mg/ml) 0.5 2.5

lOmM dNTP Mix 1 μΙ (0.2mM) 5

Bst Polymerase (811/μΙ) 2 μΙ 10

Phi29 lul 5

Incubate at 30°C for 10 min, then 60°C for 15 min (thermocycler)

Heat inactivate at 80°C for 15 min

8.2 AMpure XP purify ratio 1.8:1. Ressuspend in 30ul

. Gel extraction of heavy chain-ligated

library

1 Test loading capacity with FV1 sample

only, load lOul 5 ul and 2.5 ul (space

between each lane)

Run on a 2% e-gel ex, run 15 min

9.2 Load other sample across 3 lanes

(lOul/lanes)

9.3 Use qiagen buffer gel extraction kit (melt

band at room temp on thermomixer)

Elute in 17 ul (use mini-elute column)

10. QC and pooling

10.1 Nanodrop: number are weird (230 is real high)

10.2 Add 34ul of TE, AMpure XP purify ratio 1.8:1. Ressuspend in 20ul (remagnet manually in PCR tube)

10.3 Nanodrop Qubit dsDNA HS area density

ID ng/ul

FV1 6.4 9.84

24hr 7.6 16.6 18.0=15.6

7days 7.9 13.8 15.9=13.8

21days 9.1 16.0 18.7=16.23

10.4 Diagnostic gel (2% e gel ex 11 min, 2ul each

sample)

(sage lader, lOObp lader, 25bp ladder, VDJ samples)

Dilute all sample to same concentration of lowestng/ul;

Sample volumes waterQbit water gel Appendix C 4hr 12ul 2.43 1.56

days 12ul 0 0

1days 12ul 1.91 2.11 0.5 Mix 12 ul of each sample together. Store at -20

vdj_package.txt

Attachment D

import types

import xml .etree. cElementTree as ElementTree import numpy as np

mport

Bio.seqio

import seqtools

# import refseq

# import sequtils

# import alignment

# import

clustering

# import LSF

# import pa rams

# import analysis

# ===================

# = DATA

STRUCTURES =

# ===================

class immunechain(ob ect) :

"""Data structure to

represent an immune chain."""

def init (self,**kw):

"""initialize

immunechai n

seq is 5 ' ->3 '

def kw_ini t(attr b) : if kw.has_key(attrib) :

sel f setatt r (att ri b , kw[att ri b] ) k _init('seq')

kw_init('descr')

kw_init(' locus')

kw_init('v') kw_init('d')

kw_init(' j ')

kw_init("c')

kw_i ni ( ' j uncti on ' ) vdj_package.txt if kw. has_key('tags' ) :

tags = kw[' tags']

if

i si nstanceCtags,types. Stri ngTypes) : tags = [tags]

self. tags = set(tags) el se:

self.tags = set([])

def get_cdr3(self) :

return

1 en(self. junction)

def set_cdr3(self.value) :

pass

cdr3 =

property(fget=get_cdr3 , fset=set_cdr3)

def add_tags(self,tagset) :

f

i si nstanceCtagset,types. Str ngTypes) : tagset = [tagset] sel f.tags .update(tagset)

def add_taq(self,tag) :

sel f.adcLtags(tag)

def

remove_tags(self, tagset) :

if i si nstance(tagset,types. stri ngTypes) : tagset

[tagset]

for tag in tagset: self.tags. remove(tag) def

remove_tag(self,tag) :

self. remove_tags(tag)

def has_tag(self,tag) : if tag in self.tags:

return True

else:

return False def _len_(self):

return len(self.seq)

def str (self):

return

self. repr ()

def repr (self):

return self.get_XML() vdj_package.txt

def

get_XML(self) :

format_xml = lambda attrib, value:

"\t<%(attrib)s>%(value)s</%(attrib)s>\n" % {'attrib' : attrib, 'value xml stri ng

= '<lmmunechain>\n'

for (attrib, value) in self diet iteritems():

if

attr b == 'tags' :

for tag in self. tags:

xmlstring +=

f ormat_xml ( ' tag ' , tag)

el se:

xmlstring +=

f ormat_xml (att rib, val ue)

xmlstr ng += '</lmmuneChain>\n'

return

xmlstring

# ==========-=====._

# = INPUT/OUTPUT =

# =================

class

ParserVD3XML(object) :

"""parser for VDDXML"""

def nit (self):

self .chain

= None

def start_handler(self ,elem) :

if el em. tag == 'ImmuneChain': self. chain = ImmuneChain ()

def end_handler(self ,elem) :

if el em. tag ==

'tag' :

sel f . chai n . add_tags (el em . text)

el if el em. tag == 'v_end_idx' or

elem.tag == ' _start_idx' :

sel f . chai n . setatt r (el em . tag , i nt (el em . text) ) sel f . chai n . setatt r (el em . tag , el em . text) vdj_package.txt parseCself ,i nputfi le) :

for event, el em

El ementTree . i terparseCi nputf i 1 e , events=C ' start 1 , ' end 1 ) ) if event == 'start': self, startJiandlerCelem)

el if event == 'end' :

if

'immuneChain' :

yield self. chain

else: self . end_handlerCelem) PredicateParserVDHX LCParservDJXML)

'VDJXML parser that takes a predicate function

def init Cself .predicate) :

ParserVDJXMl i ni t Csel f )

self .predicate = predicate

def

parseCself , i nputfi le) :

for event, el em in

El ementTree . i terparseCi nputfi 1 e , events=C ' start '

if event == 'start' : self . start_handlerCelem)

el if event == 'end' :

if

'ImmuneChain' :

if self .predicateCself. chain) == True: yield self. chain

else: self .end_handl erCelem) def parse_VDDX LCi nputfi 1 e) :

vdjxml parser = Parser DJXMLQ return vdjxml parser . parse Ci nputf il e) def f 1 ter_parse_VD3XMLCi nputfi 1 e , predi cate) vdj_package.txt

vdjxml parser = PredicateParserVDJXML(pred cate)

return vdjxml parser .parse(inputfile)

#

# = Counting =

# ======------===

def counts_VJ (i nputfi1e) :

if

i si nstance(i nputfi 1 e , types . Str ngTypes) :

ip = open(i nputfi1e, ' r')

el if

isinstance(inputfile.file) :

ip = inputfile

counts = np.zeros(

(1enCrefseq . IGHV_1i st) , 1en(refseq . IGH:_1i st)) )

for chain in parseVDDXML(ip) : counts[refseq.lGHV_idx[chain.v] , refseq. lGH3_idx[chai n.j]] += 1

if

i si nstance(i nputfi1e , types . Str ngTypes) :

ip.closeO

return counts def

counts_VDJ(rep) :

cn = np. zeros (

(1en(refseq . IGHV_1i st) , 1en(refseq . IGHD_1 st) ,1en (refseq . IGHJ_l i st)) )

for chain in

rep. chains: cn [refseq . lGHV_i dx[chai n . ] , refseq . lGHD_idx [chai n . d] , refseq . lGH3_idx [chai n . ] ] += 1 return cn def reshape_counts_VD3_2D(counts) :

return

counts . reshape(1en(refse . IGHV_1i st) , 1en (refseq . IGHD_1i st)*1en(refseq . IGHJ_1i st)) def

count_di ct_cl one_i dxs(cl one_idxs , reference_clones=None) : vd _package.txt

"""Takes a dictionary of

cluster names mapped to a sequence of indices into an immunechain list.

Returns an

np array of the same length as reference_clones with the counts of each cluster in

reference_clones.

The need for reference_clones is due to the fact that splitting a given repertoire

may result in some parts not observing any of a given clone, so there needs to be a common way

to compare two clone sets.

if reference_clones is left

out, then the set of clones present in clone_idxs is used. if

reference_clones == None:

reference_clones = clone_idxs.keysO

counts =

np . zeros (1 en (ref erence_cl ones))

for (i,name) in enumerate(reference_clones) : counts[i] = len(clone_idxs.get(name, []))

return counts def

count_di ct_cl one_counts (cl one_counts , ref erence_cl ones=None) :

if ref erence_cl ones ==

None:

reference_clones = clone_counts . keysO

counts =

np . zeros (1 en (ref erence_cl ones) )

for (i.name) in enume rate ( ref erence_cl ones) : counts [i] = clone_counts. get (name, 0)

return counts

#

# = Retrieving tags and filtering = vdj_package.txt

def get_tag_with_prefix(chain , prefix) :

for tag in

chain. tags:

if tag. startswith (prefix) :

return tag

raise ValueError,

"Tag that starts with " + prefix + " not found." def get_clone(cha n) :

return

get_tag_wi th_prefi x(chai n , ' clone' ) def get_barcode(chain) :

try:

return

get_tag_wi th_prefi x(chai n , ' barcode ' )

except ValueError:

return 1 ' def

f 1ter_tags_and(tags , nhandl e , outhandl e) :

if i si nstance(tags, types. stringTypes): tags =

[tags]

nhandl e) :

chain. all_tags: # test that everything in tags is in all_tags pri nt

»outhandle, chain def filter_tags_or(tags,inhandle,outhandle) :

if

i si nstance(tags, types. Stri ngTypes) : tags = [tags]

tags = set(tags)

empty_set =

setO

for chain in parse_VDJXML(i nhandl e) :

if tags & chain. all_tags !=

empty_set: # test that tags and all_tags share something print »outhandle,

chain def i s_ful 1_VJ (chai n) :

if (chain.v in refseq.lGHV_seqs.keys()) and (chain. in refseq . IGHJ_seqs . keys ()) : vdj_package.txt

return True

se:

return False def

get_cl one_i dxs (i nhandl e) :

clusters = {}

i = 0

for chain in

parse_VDJXMl_(i nhandl e) :

try: clusters[get_clone(chain)] += [i]

except

KeyError: clusters [get_clone(chain)] = [i]

i += 1

return clusters def

get_clone_counts(i nhandl e) :

clusters = {}

for chain in parse_VD3XML(i nhandl e) : try: clusters[get_clone(chain)] += 1

except KeyError: clusters[get_clone(chain)] return clusters

# ======================

# = Pipeline functions =

# def vd j xml 2f asta(i nhandl e , outhandl e)

for chain in

parse_VDJXML(i nhandl e) :

print »outhandle, ">'+chain

pri nt

»outhandle, chain. seq

# for generating identifiers from VJ combos

def

vj_id(v_seg, _seg) :

return seqtools.c!eanup_id(v_seg)+'_'+seqtools.cleanup_id(j_seg) def split_vd xml_into_VJ_parts(inhandle,outname) :

parts = []

vj_ids = [] vdj_package.txt outhandles = {}

# open output files for all VJ combos i = 0

for v_seg in

refseq . lGHV_seqs . keysO :

for j_seg in refseq. IGHJ_seqs. keysQ :

.outname = outname + '.' + str(i)

curr_vj_id = vj_id(v_seg,j_seg) parts . append(curr_outname)

vj_ids .append(curr_vj_id) outhandles [curr_vj_id] = open(curr_outname

i += 1

for chain in

parse_VDJXML(inhandle) :

curr_vj_id = vj_id(chain.v, chain. j print

»outhandles[curr_vj_id] , chain

for handle in outhandles. itervaluesQ : handle. closeO

return (parts, vj_ids) def parse_VDJX L_parts(parts) :

for part

in parts:

for chain in parse_VDDXML(part) : yield chain def

wai t_for_subprocesses(process_l i st , i nterval=30) : finished = False

while not

finished:

finished = True

ti me . si eep(i nterval)

for p in

process_li st:

i f p . pol 1 () == None :

finished = False break

import warnings vdj_package.txt mport copy

mport numpy as np

mport seqtools

mport vdj

import

refseq

import sequtils

import alignmentcore

warni ngs . si mpl ef i 1 ter ( ' always ' )

class

vdj_al gner (object) :

def nit (self,**kw): self .numcrudevcandi dates = 5

self . numcrudeDCandi dates = 10 self . numCrudeJCandi dates = 2

# Define seed patterns patternA=' 111011001011010111'

patternB=' 1111000100010011010111" patternC= ' 111111111111'

patte r nD= ' 110100001100010101111 ' patternE=' 1110111010001111'

self . seedpatterns =

[patternA.patternB, patternc, patternD, patternE]

self .m n seedpatterns =

['111011' , '110111']

self .patternPos = '111111111111'

self .minvscore

= 100 # derived from calibration data 20090710

self .minDscore = 4 self .minJscore = 13

# set reference sequences (locus) and generate hashes from ref data

self. locus = kw['locus']

self. ref _seqs = vdj_package.txt

refseq—getattri bute (sel f.1ocus+ 'v_seqs ' )

self.vseqli stkeys =

vd _al gner. seqdi ct2kmersC self. refv_seqs, self.seedpatterns ) self . refJ_seqs = refseq. getattri bute (self.locus+'H.seqs')

self.Jseqli stkeys =

vdj_al i gner. seqdi ct2kmers( self. ref:_seqs, sel f. seedpatterns )

try: #

this locus may not have D segments

self. refD_seqs =

refseq . getattri bute (sel f.1 ocus+' D_seqs ' )

self.Dseq istkeysmini =

vdj_ali gner. seqdi ct2kmers( self. refD_seqs, self.miniseedpatterns )

except

AttributeError :

pass

sel f. refV_offset =

refseq . getattri bute (sel f.1ocus+' v_offset' )

se f. refj_offset =

refseq—getattri bute (sel f.1 ocus+" J_offset " )

# Generate reference data

for positive sequence ID

posvseqli stkeys = vd _ali gner. seqd ct2kmers(

self. refv_seqs, [self.patternPos] )

posJseqli stkeys = vdj_ali gner. seqdi ct2kmers(

self. refJ_seqs, [self.patternPos] )

negvseql i stkeys = vdj_ali gner. seqdi ct2kmers(

vdj_al i gner . seqdi ct2revcompseqdi ct(sel f. refv_seqs) , [se f. patternPos] ) negjseqli stkeys = vdj_aligner.seqdict2kmers(

vd _a igner . seqdi ct2revcompseqdi ct(sel f. refJ_seqs) , [self. patternPos] )

#

collect possible keys

posset = set([])

for key in posvseql i stkeys. keys() : posset . update(posVseql i stkeys [key] [self, patternPos] ) for key in

seql i stkeys . keys () vdj_package.txt

posset . update(posJseql i stkeys [key] [sel f. patternpos] ) negset = set([])

for key in negvseqli stkeys. keys(): negset . update(negVseql i stkeys [key] [sel f. patternPos] )

for key in

negJseql i stkeys . keys() :

negset . update(negjseql i stkeys [key] [sel f. patternPos] )

# get keys unique to positive or negative versions of reference set possetnew = posset - negset

negsetnew = negset - posset

self.posset

= possetnew

self. negset = negsetnew def

val i gn_chai n(sel f, chai n ,verbose=Fal se) :

query = chain.seq

# compute

hashes from query seq

querykeys = vdj_aligner.seq2kmers(query,self. seedpatterns)

# for each reference V segment and each pattern, how many shared k-mers are there?

Vscoresjiash = vd _al i gner . hashscoreCsel f. vseql i stkeys , querykeys)

# get numcrudevcandidates highest scores in vscores and store their names in descending

order

goodvseglist = sorted(self.refv_seqs.keys(),key=lambda k:

Vscoresjiash [k] , reverse=True) [0: self.numcrudevcandi dates]

goodvsegdict =

dict([(seg,self. refv_seqs[seg]) for seg in goodvseglist])

#

Needleman-wunsch of v segment

(bestvseg , bestvscore , bestVscoremat , bestvtracemat) = vd _package.txt

vdj_al i gner . bestal i gnNWCgoodvsegdi ct , query, sel . mi nvscore)

# if successful

al ignment

if bestvseg is not None:

chain. v = bestvseg

# find CDR3 boundary

# construct alignment alnref, alnrefcoords, valnquery,valnquerycoords = vdj_al i gner . construct_al ignment( self. refv_seqs [bestvseg] , query, bestvscoremat, bestvtracemat )

#

find CDR3 boundary

chain. v_end_idx = vdj_aligner .pruneVregionC valnref,

valnrefcoords, valnquery, valnquerycoords, self. refv_offset [bestvseg] ) return bestvscore def Dal ign_chai n(sel f, chai n , verbose=Fal

# try

pruning off v region for 3 alignment

try:

query =

chai n . seq [chai n . v_end_i dx : ]

except AttributeError:

query = chain. seq

# compute hashes from query seq

querykeys =

vdj_al i gner . seq2kmers(query , sel f. seedpatterns)

# for each reference 3

segment and each pattern, how many shared k-mers are there?

JscoresJiash =

vdj_al i gner . hashscore(sel , liseql i stkeys , querykeys)

# get

numCrudeJCandi dates highest scores in Jscores and store their names in descending order goodDsegl st = sorted(self. refD_seqs. keysQ ,key=lambda k: vdj_package.txt

Jscores_hash[k] , reverse=True) [0 : sel f .numcrudeJCandi dates]

goodJsegd ct =

dict([(seg,self . refJ_seqs[seg]) for seg in goodJseglist])

#

Needl eman-Wunsch of J segment

(bestJseg , bestJscore , bestJscoremat , bestJtracemat) =

vd _al i gner . bestal i gnNW(goodJsegdi ct , query , sel f . mi nJscore)

# if successful

al ignment

if bestJseg is not None:

chain.] = bestJseg

# find CDR3 boundary

# construct alignment

Jal nref, Jal nrefcoords , Jal nquery , Jal nquerycoords = vdj_al i gner . construct_al ignment( self . refJ_seqs [bestJseg] , query, bestjscoremat, bestJtracemat )

#

find CD 3 boundary

j_start_offset = vdj_aligner.pruneJregion( Jalnref,

Jal nrefcoords, Jalnquery, Jal nquerycoords, self . refJ_offset [bestJseg] )

try: chain. j_start_idx = chai n . v_end_i dx + j_start_offset

except

AttributeError:

chain. j_start_idx = j_start_offset

return

bestJscore def Dalign_chain(self, chain, verbose=False) :

# prune off V

and J regions for D alignment

# we should not be attempting D alignment unl

have

# a well-defined CDR3

query = chain. unction

# compute

hashes from query seq

querykeys = vdj_package. txt

vdj_al igner. seq2kmers (query , self.m ni seedpatterns)

# for each reference D

segment and each pattern, how many shared k-mers are there?

Dscores_hash =

vdj_al i gner . hashscore(sel f . Dseql stkeysmi ni , querykeys)

# get

numCrudeJCandidates highest scores in Jscores and store their names in descending order goodDseglist = sorted(self . refD_seqs.keys() ,key=lambda k:

Dscores_hash[k] , reverse=True) [0: sel f.numCrudeDCand dates]

goodDsegdict =

dict([(seg, self . refD_seqs[seg]) for seg in goodDseglist])

#

Needleman-wunsch of 3 segment

(bestDseg , bestDscore , bestDscoremat , bestDtracemat) =

vdj_al gner . bestal gnsw(goodDsegdi ct , query , sel f.mi nDscore)

# if successful

alignment

if bestDseg is not None:

cha n.a = bestDseg return bestDscore def align_chain(self, chain, verbose=False) : if not chai n.has_tag(' positive') and not chai n.has_tag(' coding") : warnings.warnCchain %s may not be the correct strand' % chain. descr) scores = {}

scores['v'] = self.valign_chain(chain, verbose) scores ['j'] = self .Jalign_chai n (chain, verbose)

# only process junction if v

and J successful

if hasattr(chain, 'v') and hasattr(chain, ' j') : vdj_package.txt chai n . uncti on = chai n . seq [chai n . _end_i dx : chai n . _start_idx]

#

only align D if I am in a locus that has D chains

if self. locus in

['IGH' , 'TRB' , 'TRD1 ] :

scores['d'] = self.Dalign_chain(chain, verbose) return scores def al ign_seq(self, seq, verbose=False) :

chain =

vd . lmmunechain(descr=' sequence' , seq=seq)

sel f . al i gn_chai n(chai n , verbose) return chain def codi ng_chai n (sel f, chai n , verbose=Fal se) :

strand =

sel f. seq2codi ng(chai n . seq)

if strand == -1:

cha n. seq =

seqtool s . reverse_compl ement(chai n . seq)

chai n . add_tag( ' revcomp ' ) chai n . add_tag( ' codi ng ' ) def seq2codi ng(sel f, seq) :

seqkeys =

vdj_aligner . seq2kmers(seq, [self. patternPos])

seqwords = seqkeys [self.patternPos] strandid = 1

if len(self.negset & seqwords) > len(self.posset & seqwords); strandid = -1

return strandid

Ostat cmethod

def

seq2kmers (seq , patterns) :

"""Given sequence and patterns, for each pattern, compute all corresponding k-mers from sequence.

The result is vdj_package.txt

seqannot [pattern] [key]=[posl,pos2 posN] in seq

seqkeys [pattern] =

set([kmers]) seqkeys = {}

patlens = []

for

pattern in patterns:

patlens .append(len(pattern))

seqkeys [pattern] =

setO

maxpatlen = maxCpatlens)

for i in xrange(len(seq)) : word = seq[i :i+maxpatlen]

for pattern in patterns: patlen = Ten(pattern)

if 1 en (word) >= patlen:

key = for in xrange(patlen) :

if pattern [j] == " : key += word[j]

seqkeys [pattern] .add(ke seqkeys

@stat cmethod

def seqd ct2kmers(seqdict, patterns) : seqlistkeys = {}

for seq in seqdi ct.iteriterns() : seql stkeys [seq [0]] = vdj_al gner. seq2kmers (seq [1] .patterns) return seqlistkeys

Ostati cmethod

def hashscore(refkeys,querykeys) :

"""compute number of

common keys for each reference sequence.

querykeys is diet of sets, where diet

keys are patterns

reference keys is diet of ref seqs, where each elt is a vdj_package.txt diet of patterns with sets as values, the patterns must be the same scores = {}

for seg in refkeys.iterkeysO :

score = 0

for

pattern in querykeys.iterkeysO :

score += lenC refkeys [seg] [pattern] &

querykeys [pattern] )

scores [seg] = score

return scores

@staticmethod

def bestal i gnNWCcandi datedi ct , query, mi nscore)

bestseg = None bestscore = mi nscore

bestscoremat = None

besttracemat = None seq2 = query

for (seg.seql) in candi datedi ct. iteri terns() :

# c

implementation;

# carve out memory

# note that we are using zero

initial conditions, so matrices are in tialized too

# notation is like Durbin

p.29

scores = np.zerosC [len(seql)+l, len(seq2)+l] ) ix = np.zerosC

[lenCseql)+l, lenCseq2)+l] )

Iy = np.zerosC [lenCseql)+l, lenCseq2)+l] ) trace = np.zerosC [lenCseql)+l, lenCseq2)+l] , dtype=np.int) al gnmentcore.alignNWC scores, ix, iy, trace, seql, seq2 ) currscore =

vdj_al i gner . scorevjal gnCscores)

if currscore > bestscore: vdj_package.txt

bestscore = currscore

bestseg = seg

bestscoremat = scores besttracemat = trace

return

(bestseg , bestscore , bestscoremat , besttracemat)

@stati cmethod

def

bestal i gnsw(candi datedi ct , query,mi nscore) :

bestseg = None

bestscore =

mi nscore

bestscoremat = None

besttracemat = None

seq2 =

query

for (seg,seql) in candi datedi ct.iteri terns() :

# C implementation:

# carve out memory

# note that we are using zero initial conditions, so matrices are initialized too

# notation is like Durbin p.29 scores = np.zeros( [len(seql)+l, len(seq2)+l] )

trace = np.zeros( [len(seql)+l,

len(seq2)+l] , dtype=np.int)

alignmentcore.aligns C scores, trace, seql, seq2 ) currscore = vdj_al gner.scoreDalign(sco if currscore

bestscore:

bestscore = currscore

bestseg = seg bestscoremat = scores

besttracemat = trace

return

(bestseg , bestscore, bestscoremat , besttracemat)

©stati cmethod

def vd _package.txt

pruneVregionC ainref, alnrefcoords, alnquery, al nquerycoords, offset ):

"'Prune v

region out of query sequence based on alignment.

Given ref and query

alignments of v region, refID, and the original

query sequence, return a sequence

with the V region cut out, leaving

the 2nd-CYS. Also needs query alignment coords.

# F 3end = self. refv_offset[reflD] - alnrefcoords [0]

irst candidate position

FR3end = offset - ainrefcoords [0] # f rst

candidate position

refgaps = ainref[:FR3end] .count('-') # count gaps up to

putative CYS pos

seengaps = 0

while refgaps > 0: # iteratively find all

gaps up to the CYS

seengaps += refgaps

FR3end += refgaps #

adjust if for gaps n ref alignment

refgaps = ainref[: FR3end] .count('-') - seengaps # any add'l gaps?

querygaps = alnquery [:FR3end] .count('-')

# v_end_idx = idx of start of aln of query + distance into aln - # of gaps v_end_idx = al nquerycoords [0] + FR3end - querygaps

return v_end_idx

@stati cmethod

def pruneJregionC ainref, alnrefcoords, alnquery, al nquerycoords,

offset ):

"""prune J region out of query sequence based on alignment. ven ref and query alignments of J region, reflD, and the original

query vd _package.txt

sequence, return a sequence with the 3 region cut out, leaving

the J-TRP. Also

needs query alignment coords.

# FR4start =

self . ref3_offset[reflD] - alnrefcoords [0] # first candidate position of J-TRP start

FR4start = offset - alnrefcoords [0] # first candidate position of J-TRP start refgaps = alnref[:FR4start] .countC'-') # count gaps up to putative TRP pos

seengaps

= 0

while refgaps > 0: # iteratively find all gaps up to the TRP seengaps += refgaps

FR4start += refgaps # adjust for gaps in ref alignment refgaps = alnref[: FR4start] . countC - ') - seengaps # any add'! gaps? querygaps = alnquery[:FR4start] .countC '-')

# j_start_offset = idx of

start of aln of query + distance into aln - # of gaps

# note: j_start_offset is from

the pruned query seq

j_start_offset = alnquerycoords[0] + FR4start return j_start_offset

Ostati cmethod

def

construct_al i gnment(seql, seq2 , scoremat , tracemat) :

"""Construct alignment of ref

segment to query from score and trace matrices."""

nrows, ncols = scoremat. shape

# do some error checking

if len(seql)+l != nrows or len(seq2)+l !=

ncol s :

raise Exception, "nrows and ncols must be equal to len(seql)+l and len(seq2)+l" vdj_package.txt

# translate integer traces to coords

deltas = {

0 : (1,1),

1 : (1,0),

2 : (0,1),

3 : (0,0)

# compute col where alignment should start

i nrows <= ncols: col = np.argmax( scoremat[nrows-l, :] )

row = nrows-1

el se: col = ncols-1

row = np.argmax( scoremat[: , ncols-1] )

# if

row is coord in matrix, row-1 is coord in seq (b/c of init conditions) alnl

= seql[row-l]

aln2 = seq2[col-l]

alnlend = row

aln2end =

col

while (row-1 > 0) and (col-1 > 0):

# compute direction of

moves

rowchange, col change ~ deltas[ tracemat[row,col] ]

# emit appropriate symbols

if rowchange == 1:

row -= 1 alnl = seql[row-l] + alnl

el if rowchange == 0:

alnl = '-'

+ alnl

else:

ra se Exception, "Trace matrix contained jump of greater than one row/col."

if col change == 1:

col vdj_package.txt

-= 1

aln2 = seq2[col-l] + aln2

el if col change == 0: aln2 = '-' + aln2

else:

raise Exception, "Trace matrix

contained jump of greater than one row/col."

alnlstart = row-1 aln2start = col-1

# the coords refer to coords in the sequence (pythonic) return alnl, (alnlstart, alnlend) , aln2, (aln2start,aln2end)

@stati cmethod

def scoreV3al gn(scorematrix) :

"""Computes score of v alignment

given Needleman-Wunsch score matrix

ASSUMES num rows < num cols, i.e.,

refseq V seg is on vertical axis nrows.ncols =

scorematrix. shape

if nrows <= ncols:

return np.maxC

scorematrix[nrows-l, :] )

else:

return np.max( scorematrix[: ,ncols-l] ) @stati cmethod

def scoreDalign(scorematrix) :

"""Computes score of D

alignment given Smith -waterman score matrix return np.max(

scorematrix )

Ostati cmethod vdj_package.txt

def seqdict2revcompseqdict(seqdict) : revcompdict = {}

for item in seqdi ct.iteri ternsO :

revcompdict[item[0]] =

sequti 1 s . reverse_compl ement (item[l] )

return revcompdict class

vdj_al igner_combi ned(obi ect) :

"""vdj aligner for ""light' chain

this class will

perform alignment for both loci, e.g

and pick the one with the better

score

def init (self,**kw):

self. loci = kw['loci'] self.aligners = [vdj_aligner(locus=locus) for locus in self. loci] self.patternPos = '111111111111'

self. posset = set()

self.negset = setQ for aligner in self.aligners:

sel f. posset . update(al i gner. posset) el f . negset . update(al gner. negset)

def al ign_chai n (self, chai n , erbose=Fal alignments = []

for aligner in self.aligners:

curr_chain =

copy . deepcopy(chain)

curr_score = aligner.align_chain(curr_chain) al i gnments . append((curr_chai n , curr_score))

alignments = sorted(filter(l ambda a:

hasattr(a[0] , 'ν') .al gnments) ,key=lambda a:a[l] ['ν'] , reverse=True) if

1 en (alignments) > 0 :

bestchain = al ignments [0] [0]

if vdj_package.txt

hasattr(bestchain, 'ν') :

chain.v = bestchain.v chain. _end_idx = bestchain.v_end_idx

if hasattr(bestchain, ' ') : chain.] = bestchain. j

chain. j_start_idx = bestchain.j_start._idx if hasattr(bestchain, 'junction') :

cha n. junction = bestchain. unct on if hasattr(bestcha n, 'd') :

chain.d = bestchain. d

return

alignments[0] [1] # OTE: I only return the scores upon successful aln def

al gn_seq(self, seq, verbose=Fal se) :

chain =

vdj .lmmunechain(descr=' sequence' ,seq=seq)

sel f. al gn_chai n(chai n ,verbose) return chain

def cod ng_chain(self.chain) :

strand =

sel f. seq2codi ng(chai n . seq)

if strand == -1:

chain. seq =

seqtool s . reverse_compl ement(chai n . seq)

chain. add_tag( ' revcomp ' ) chai n . add_tag( ' codi ng ' )

def seq2coding(self,seq) :

seqkeys =

vdj_al i gner . seq2kmers(seq , [se f. patternPos] )

seqwords = seqkeys [self.patternPos] strandid = 1

if len(self.negset & seqwords) > 1 en (self.posset & seqwords): strandid = -1

return strandid

def igh_aligner() :

return vdj_package.txt

vdj_al i gnerCI ocus= 1 IGH ' )

def igk_alignerO :

return vdj_al i gnerClocus=' IGK' )

def

igl_alignerO :

return vdj_alignerClocus='lGL')

def igkl_alignerO :

return

vdj_aligner_combinedCloci=['lGK' , 1 IGL ' ] )

def trb_alignerO :

return

vdj_aligner(locus='TRB")

def tra_alignerO :

return vdj_al igner(locus='TRA')

def

trd_alignerO :

return vdj_aligner(locus='TRD')

def trg_alignerO :

return

vdj_al igner(1 ocus= 'TRG ' )

import numpy as np

from numpy import ma

import scipy as sp

import

scipy. stats

import scipy. special

import matplotlib as mpl

import matplotlib.pyplot as pit

import vdj

def barcode_clone_counts(inhandle) :

"""Return count diet from vdjxml file

with counts [barcode] [clone] """

counts = dictO

for chain in

vd .parse_VD3XML(inhandle) :

try: # chain may not have barcode counts_barcode = counts. setdefaultCchain. barcode,dictO)

except AttributeError: continue

counts_barcode[chain. clone] = counts_barcode. get(chain. clone, 0) + 1 vdj_package.txt

counts def barcode_junction_counts(inhandle) :

"""Return count diet from

vdjxml file with counts [barcode] [junction] """

counts = dictO

for chain in

vdj .parse_VDDXML(inhandle) :

try: # chain may not have barcode counts_barcode = counts. setdefault(chain. barcode, dictO)

except AttributeError : cont nue

counts_barcode [chai n . j uncti on]

counts_barcode . get(chai n . juncti on , 0) +

return counts def

barcode_cl one_counts2mat ri x (counts , barcodes=None , cl ones=None) :

"""Generates matrix from

count diet"""

if barcodes == None:

barcodes = counts. keys ()

if clones ==

None:

clones = list( reduceC lambda x,y: x|y, [set(c. keys()) for c in counts. itervaluesO] ) )

matrix = np.zeros((len(clones) , len(barcodes)))

for

(col .barcode) in enumerate(barcodes) :

for (row, clone) in enumerate(clones) : matr x [row, col] = counts. get(barcode, dictO) .get(clone,0)

return

(cl ones , barcodes , mat ri x)

barcode_j uncti on_counts2matrix = barcode_clone_counts2matrix

#

# = OLD OLD OLD OLD OLD

OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD OLD =

# vd _package.txt

# =

Time series =

# =============

def clone_timeseries(i nhandl e, barcodes,

reference_clones=None) :

# generate count data

for chain in

vdj . parse_VDJX l_(i nhandl e) :

counts

def

cl one_timeseri es(i nhandl e , time_tags , reference_clones=None) :

# get count data time_tags_set = set(time_tags)

clone_counts = {}

for tag in time_tags: clone_counts[tag]={}

for chain in vdj . parse_VDJX L(i nhandl e) :

try: curr_time_tag = (chain.tags&time_tags_set) .popO

except KeyError: continue

try: clone_counts[curr_time_tag] [vdj .get_clone(chain)] += 1 except KeyError: one_counts[curr_time_tag] [vdj .get_clone(chain)]

# set up reference clones if reference_clones == None:

reference_clones = setO

for counts in

clone_counts.itervaluesO :

reference_clones . updateCcounts . keysQ) reference_clones = list(reference_clones)

# build timeseri es matrix

num_clones vd _package.txt

en(reference_clones)

num_times = len(time_tags)

countdata =

zeros C(num_clones , num_ti mes))

for (i.tag) in enumerate(time_tags) : countdata[: ,i] = vdj . count_di ct_clone_counts(clone_counts[tag] , reference_clones) return countdata, reference_cl ones def

timeseri es2proporti onsCcountdata , freq=True , 1og=True, pseudocount=le-l) :

num_time_seri es ,

num„times = countdata. shape

num_transitions = num_times - 1

if pseudocount != 0: proportions = np. zeros((num_time_series,num_transitions))

countdata_pseudo =

countdata + np.float_(pseudocount)

if freq == True:

countdata_pseudo =

countdata_pseudo / countdata_pseudo.sum(axis=0)

for i in rangeCnum_transitions) : proportions[: ,i] = countdata_pseudo[: ,i+l] / countdata_pseudo[: ,i] else: #

only look at time series that are non-zero the whole way through

idxs =

np . sum(countdata>0 , axi s=l)==num_times

proportions =

np . zeros((np . sum(i dxs) , num_transi ti ons))

if freq == True: countdata_modi ied = np.float_(countdata) / countdata. sum(axis=0)

else: countdata_modified = np.float_(countdata)

for i in range(num_trans tions) : proportions[: ,i] = countdata_modified[ dxs,i+l] / countdata_modi ied[idxs,i] log==True:

return np. loglOCproportions) vdj_package.txt

a ;

return proportions def

timeseries2autocorrelation(timeser es) :

ac = [1.] +

[sp. stats. pearsonr(timeseries[:-i] ,timeseries[i :])[0] for i in

range (1 , 1 en (ti meseri es) -2) ] return ac

# ================

# = spectratypes =

# ================

def

cdr3s2spectratype(cdr3s) :

mi n_raw_cdr3 = np.m n(cdr3s)

max_raw_cdr3 = np.max(cdr3s) min_cdr3 = np.int(np.ceil ( min_raw_cdr3 / 3.) * 3) # will be a nonzero mult of 3 max_cdr3 = np.int(np.floor(max_raw_cdr3 / 3.) * 3) # will be a mult of 3

# bin the

CDR3s lengths. The first elt is rep zero len (and should be zero)

# and the last bin

always represents one greater than the biggest mult of 3

binnedcdr3s =

np. histogram(cdr3s,bins=np. arangeCO, max_cdr3+2)) [0] # the +2 is due to the pecul . np.hist.

aussians = []

or cdr31en in np.arange(min_cdr3 ,max_raw_cdr3, 3) : totalcdr3s = np.sum(binnedcdr3s[cdr31en-l:cdr31en+2])

goodcdr3s =

bi nnedcdr3s [cdr31 en]

if total cdr3s == 0:

continue

mu = cdr31en x = cdr31en-0.5

tail = (1 - (np.float(goodcdr3s)/totalcdr3s)) / 2. sigma = (x-mu) / (np. sqrt(2.)*sp. special .erfinv(2*tail-l))

rv = vdj_package.txt

sp . stats . norm(l oc=mu , seal e=si gma)

gaussians.appendC (total cdr3s, rv) )

t =

np .1 i nspace(0 , max_cdr3+l, 1000)

y = np.zeros(len(t))

for (s,rv) in gaussians: y += s*rv.pdf(t)

return (t,y) def spectratype_curves(inhandle) :

# NOTE: requires

chains with V and 3 alns

# init data structure

cdr3s = {}

for v_seg in

vd . refseq . iGHV_seqs . keys() :

for j_seg in vdj .refseq. lGH3_seqs. keysQ : cdr3s[vdj .vj_id(v_seg, j_seg)] = []

# load data

for chain in

vdj . parse_VD3XML(i nhandl e) :

if chain.v == ' ' or chain.j == 1 ' or chain. junction == continue

cdr3s [vdj . vj_id(chai n . v , chai n . j)] . append(chai n . cdr3) spectras = {}

for v_seg in vdj .refseq.lGHV_seqs. keys():

for ]_seg in

vdj . refseq . lGH3_segs . keys () :

if len(cdr3s[vdj . vj_id(v_seg, j_seg)])

# empty V3 combo:

spectras [vdj .vj_id(v_seg, j_seg)] =

(np. array([0, 150] ),np.array( [0,0]))

else: spectras [vdj .vj_id(v_seg, j_seg)] = cdr3s2spectratype(cdr3s[vdj .vj_id(v_seg, j_seg)]) return spectras vd _package.txt

# ==-.====================:-

# = Diversity estimation =

# def estimator_chaol(counts) :

"""Bias corrected. See

Estimates doc (Colwell)"""

Sobs = len(counts)

Fl =

np. f1oat_(np. sum(np . int_(counts)==l))

F2 = np.float_(np.sum(np.int_(counts)==2)) chaol = Sobs + Fl*(Fl-l)/(2* (F2+l))

return chaol def

estimator_chaoL_variance(counts) :

Fl = np.float_(np.sum(np.int_(counts)==l))

F2 =

np. f1oat_(np. sum(np. i nt_(counts)==2))

if Fl > 0 and F2 > 0 :

chaol_var =

(Fl*(Fl-l)/ (2* (F2+l))) + (Fl* (2*Fl-l) * (2*Fl-l)/(4* (F2+l) * (F2+l))) +

(Fl*Fl*F2*(Fl-l)*(Fl-l)/(4* (F2+l) * (F2+l) *(F2+l)* (F2+l)))

el if Fl > 0 and F2 == 0 :

Schaol = estimator_chaol(counts)

chaoLvar = (Fl*(Fl-l)/2) +

(Fl* (2*Fl-l)* (2*Fl-l)/4) - (Fl*Fl*Fl*Fl/(4*Schaol))

elif Fl == 0:

N =

np .f1oat_(np. sum(counts))

Sobs = np.float_(len(counts))

chaol_var =

Sobs*np.exp(-l*N*sobs) * (l-np.exp(-l*N*Sobs))

return chaol_var def

estimator_ace(counts , rare_cutoff=10) :

Sobs = np.float_(len(counts))

Srare =

np . f1oat_(np. sum(np . i nt_(counts)<=rare_cutoff))

Sabund = sobs - Srare vdj_package.txt

Fl =

np . f1 oat_(np . sum(np. i nt_(counts)==l))

F = lambda i :

np . f1 oat_(np . sum(np . nt_(counts)==i ))

Nrare = np.float_(np.sum([i*F(i) for i in

range(l, rare_cutoff+l)]))

#Nrare =

np . f1oat_(np. sum(counts [np . i nt_(counts)<=rare_cutoff] ))

if Nrare == Fl: # in accordance

with Estimates

return estimator_chaol(counts)

Cace = 1 - (Fl/Nrare) gamma_squared = Srare*np. sum([i *(i-l)*F(i) for i in ranged, rare_cutoff+l)])/(cace*Nrare*(Nrare-l))

f gamma_squared < 0: gamma_squared = 0

Sace = Sabund + (srare/cace) + (Fl/Cace)*gamma_squared return

Sace def accumulation_curve(sampl e , sampl i ng_l evel s) :

pass

# = Statistical utilities = def

counts2sample(counts) :

"""computes a consistent sample from a vector of counts.

Takes a vector of counts and returns a vector of indices x such that len(x) - sum(c)

and each elt of x is the index of

a corresponding elt in c

X =

np . ones(np . sum(counts) , dtype=np . i nt_)

start_idx = 0

end_idx = 0

for i in vdj_package.txt

xrangeClen(counts)) :

start_idx = end_idx

end_idx = end_idx + counts [i] x[start_idx:end_idx] = x[start_idx:end_idx] * i

return x sample2counts (sample) :

"""Return count vector from list of samples

The

ordering etc is ignored; only the uniqueness

of the objects is considered. num_categories = 1 en (set (sample))

count_dict = {}

for elt in sample:

try:

count_dict[elt] += 1

except KeyError: count_dict[elt]

return

count_di ct . al ues ()

# def sample2counts (sample, categories=0) :

# """Return count

vector from list of samples.

#

# Take vector of samples and return a vector of

counts. The elts

# refer to indices in something that would ultimately map to the #

originating category (like from a multinomial). Therefore, if there

# are,

say, 8 categories, then valid values in sample should be 0-7.

# If categories is not

given, then i compute it from the highest value

# present in sample (+1).

#

counts = np.bincount(sample)

# if (categories > 0) and (categories > 1 en (counts) ) :

#

counts = np.append( counts, np.zeros(categories-len(counts)) )

# return

counts vdj_package.txt scoreatpercenti 1 e(val ues , rank) ;

return

stats . scoreatpercenti 1 e(val ues , ran def percentileof score (values, score) : values.sortO

return val ues . searchsorted (score) / np.float_(l en (values)) def

bootstrap(x, nboot, theta, *args):

'''return n bootstrap replications of theta from

X" '

N = len(x)

th_star = np.zeros(nboot)

for 1 in xrange (nboot) : th_star[i] = theta( x[ np. random. rand nt(0,N,N) ], *args ) # bootstrap repl from x return th_star def subsample(x, num_samples, sample_size, theta, *args):

"""return

num_samples evaluations of the statistic theta

on subsamples of size sample_size"""

N = len(x)

th_star = np. zeros (num_samples)

for i in xrange(num_samples) : th_star[i] = theta( x[ np. random. randi nt(0,N, sample_size) ], *args ) # subsample from

from x

return th_star def randi nt_wi thout_repl acement (1 ow, hi gh=None , si ze=None) : if high == None:

high = low

low = 0

if size == None: vd _package.txt

size = 1

True

size = N - size

sample = []

for i in xrange(size) :

draw =

np. random. randint(0,N-i)

sampl e . append (urn . pop(d raw) )

if not flip: return np.asarray (sample)

else:

return np.asarray(urn) def

subsample_without_replacement(x, num_sampl es , sample_size, theta, *args) :

""^return

num_samples evaluations of the statistic theta

on subsamples of size sampl e_size"""

N ~ len(x)

th_star = np.zeros(num_samples)

for i in xrange(num_samples) : th_star[i] = theta( x[ randint„without_replacement(0,N, sampl e_size) ], *args ) # subsample from from x

return th_star

# =================

# = visualization =

# ass Constwi dthRectangl e(mpl . patches . patch)

def init (self,

yl, y2, w, **kwargs):

self.x = x

self .yl = yl

self ,y2 = y2 vd _package .txt self.w = w

mpl . patches . atch i ni t (se f , **kwargs)

def

get_path(self) :

return mpl .path. Path. unit_rectang e()

def

get_transform(self) :

box = np.array([[self .x.self .yl] ,

[self .x, self .y2]])

box = self .axes. transData.transform(box)

w =

self.w * self .axes. bbox. width / 2.0

box [1,0! return mpl . transforms. BboxTransformTo(mpl .transforms. Bbox(box)) class

ConstwidthLine(mpl . lines.Line2D) :

def init (self ,x,y,w, **kwargs) :

self .x

= x

self.y = y

self.w = w mpl .lines. Li ne2D init (self , [0,1] , [0,0] , **kwargs) # init to unit line def

get_transform(self) :

# define transform that takes unit horiz line seg

# and

places it in correct position using display

# coords

box =

np.array([[self.x, self.y] ,

[self. x, self. y+l]])

box =

sel f . axes . transData . t ransf orm(box)

w = self.w * self .axes. bbox. width / 2.0 vdj_package.txt box[0,0] -= w

box [1,0] += w

#xdisp,ydisp =

sel f. axes . transData . transform_poi nt( [sel f. x , sel f. y] )

#xdisp -= w

#xleft =

xdisp - w

#xright = xdisp + w

return

mpl .transforms. BboxTransformTo(mpl .transforms.Bbox(box))

#return

mpl . transforms.Affine2D() .scale(w.l) . translate(xdisp.ydisp)

def

draw(self, renderer) :

# the ONLY purpose of redefining this function is to force the

Line2D

# object to execute recache(). Otherwise, certain changes in the scale

# do not invalidate the Line2D object, and the transform will not be

# recomputed

(and so the Axes coords computed earlier will be obsolete)

self. recacheO return mpl . l nes. Line2D.draw(self, renderer) class

ConstHeightRectangle(mpl . patches. Patch) :

def init (self, xl, x2, y, h,

**kwargs) :

self.xl = xl

self.x2 = x2

self.y = y

self.h =

h

mpl . patches . Patch i ni t (sel f, **kwargs)

def get_path(self) : return mpl . path . Path . uni t_rectangl e()

def get_transform(self) :

box = vdj_package.txt

np.array([[self .xl.self .y] ,

[self. x2, self. y]])

box =

sel f . axes . transData . transf orm(box)

h = self.h * self .axes. bbox. height /

2.0

box [0,1] -= h

box [1,1] += h

return

mpl .transforms.BboxTransformToCmpl . transforms. Bbox(box))

class

ConstHeightLineCmpl .lines. Li ne2D) :

def in t (self ,x,y,h,**kwargs) : self .x = x

self.y =

self.h = mpl .lines. Line2D init (self , [0,0] , [0, 1] , **kwargs) # init to unit line

#

self.x = x

# self.y = y

# self .w = w

#

mpl .lines. Line2D. init (self , [0,1] , [0,0] ,**kwargs) # init to unit line def

get_transform(self) :

# define transform that takes unit horiz line seg

# and

places it in correct position using d splay

# coords

box =

np.array([[self .x.self .y] ,

[self .x+l.self .y]])

box =

sel f . axes . transData . t ransf o rm (box)

h = self.h * self .axes. bbox. height /

2.0

box [0,1] -= h

box [1,1 += h vdj_package.txt

#xdisp,ydisp =

sel . axes . t ransData . t ransf orm_poi nt ( [sel f . x , sel f . y] )

#xdisp -= w

#xleft =

xdisp - w

#xright = xdisp + w

return

mpl .transforms . BboxTransformTo(mpl .transforms. Bbox(box))

#return

mpl .transforms .Affine2D() . scale(w, 1) .translateCxdi sp,yd sp)

def

drawCself , Tenderer) :

# the ONLY purpose of redefining this function is to force the

Line2D

# object to execute recacheQ. Otherwise, certain changes in the scale

# do not invalidate the Line2D object, and the transform will not be

# recomputed

(and so the Axes coords computed earlier will be obsolete)

self . recacheQ return mpl . lines. Line2D.draw(self , renderer) def boxplot(ax, x, positions=None,

widths=None, vert=l):

# adapted from matplotl b

# convert x to a list of

vectors

if hasattr(x, 'shape'):

f 1 en (x. shape) == 1:

if

hasattr(x[0] , 'shape'):

x = list(x)

else:

x =

[x,]

el if 1 en (x. shape) == 2:

nr, nc = x. shape

if nr == 1: x = [X]

el if nc == 1:

x = [x. ravel ()] vdj_package.txt

el se:

x = [x[:,i] for i in xrange(nc)]

else:

rai se

ValueError, "input x can have no more than 2 dimensions"

if not hasattr(x[0] ,

_len_'):

x = [x]

col = len(x)

# get some plot info

if positions

is None:

positions = range(l, col + 1)

if widths is None:

widths =

minCO.3/len(positions) ,0.05)

if i sinstance(widths, float) or isinstance(widths, i widths = np. ones ((col ,) , float) * widths

# loop through columns, adding each

to plot

for i.pos in enumerate(positions) :

d = np. ravel (x[i])

row =

len(d)

f row==0:

# no data, skip this position

continue

# get distrib info

cjl, med, q3 = mpl .ml ab.prctile(d, [25,50,75])

Jmax =

np.max(d)

dmin = np.min(d)

line_color = '#074687' face_color = '#96B7EC'

if vert == 1:

medline =

constwi dthLi ne(pos , med , wi dths [i ] , col or=l i ne_col or , zorder=3)

box =

constwi dthRectangl e(pos , ql , q3 , wi dths [i ] , f acecol or=f ace_col or , edgecol or=l ne_col or , zo rder=2) vertline =

mpl .lines. Li ne2D([pos , pos] , [dmin, dmax] ,color=line_color,zorder=l) vdj_package.txt medl i ne = ConstHei ghtLi ne(med , pos , wi dths [i ] , col or=l i ne_col or , zorder=3) box =

ConstHei ghtRectangl e (ql , q3 , pos ,wi dths [i ] , facecol or=face_col or , edgecol or=l i ne_col or , z order=2)

vertline =

mpl . lines. Line2D([dmin,dmax] , [pos, pos] ,color=line_color ,zorder=l) ax . add_l i ne(vertl i ne)

ax . add_patch (box) ax . add_l i ne(medl i ne)

def

rep2spectratype(rep) :

"'"Compute spectratype curves from Repertoire object.' cdr3s = np.array([c.cdr3 for c in rep if c. junction != ''])

min_raw_cdr3 =

np.min(cdr3s)

max_raw_cdr3 = np.max(cdr3s)

min_cdr3 = np.int(np.ceil ( min_raw_cdr3 /

3.) * 3) # will be a nonzero mult of 3

max_cdr3 = np.int(np.floor(max_raw_cdr3 / 3.) *

3) # will be a mult of 3

# bin the CDR3s lengths. The first elt is rep zero len

(and should be zero)

# and the last bin always represents one greater than the biggest

mult of 3

binnedcdr3s = np.histogram(cdr3s,bins=np.arange(0,max_cdr3+2)) [0] # the +2 is due to the pecul . of np.hist.

aussians = []

or cdr31en in

n . arange (mi n_cdr3 , max_raw_cdr3 , 3) : vdj_package.txt

total cdr3s =

Cbinnedcdr3s[cdr31en-l:cdr31en+2])

goodcdr3s = binnedcdr3s[cdr31en] if total cdr3s == 0:

continue

mu = cdr31en

x = cdr31en-0.5 tail = (1 - (np.float(goodcdr3s)/totalcdr3s)) / 2.

sigma = (x-mu) /

(np . sqrt (2. )*sp . speci al . erf i nv(2*tai 1 -1))

rv = sp. stats. norm(loc=mu, seal e=sigma) gaussians.appendC (total cdr3s, rv) )

t - np.linspace(0,max_cdr3+l,1000)

y =

np.zeros(len(t))

for (s,rv) in gaussians:

y += s*rv.pdf(t)

return

Ct.y) def

scatter_repertoi res_ontol ogy (reps , nfo= ' VDCDR3 ' , gooddata=Fal se , measurement= ' proporti ons') :

"""Create a grid of scatter plots showing corelations between all pairs of repertoi res . reps — list of Repertoire objects numreps = len(reps) datalist = [

for rep in reps:

datalist.appendC

vd j . counts_ontol ogy_lD ( r ep , i nf o , gooddata) )

if measurement == 'proportions': for i in xrange(l en (datalist)) :

data! i st [i] = np.float_(datalist[i]) / vdj_package.txt

np.sum(datalist[i])

min_nonzero = np.min([np.min(data[data>0]) for data in

datalist])

max_nonzero = np.max([np.max(data[data>0]) for data in datalist]) axi slo

= 10**np. floorC np.frexp(min_nonzero) [1] * np.logl0(2) )

axishi = 10**np.ceil(

np.frexp(max_nonzero) [1] * np.logl0(2) )

fig = plt.figureC)

hist_axs = [] for row in xrange(numreps) :

col = row

plotnum = numreps*row + col + 1

. add_subpl ot(numreps , numreps , pi otnum) ax . hi st (datal i st [ row] , bi ns=100 , 1 og=True , f acecol or= ' k ' )

hi st_axs . append (ax) scatter_axs = []

for row in xrange(numreps-l) :

for col in

x range (row+1, numreps) :

plotnum = numreps*row + col + 1

ax =

f i g . add_subpl ot (numreps , numreps , pi otnum) ax. scatter (datalist [row] .datal st [col] ,c='k' ,marker='o' , s=2 ,edgecolors=None) ax . set_xscal e ( ' 1 og ' )

ax . set_yscal e ( ' 1 og ' ) ax . axi s ( [axi si o , axi shi , axi slo, axi shi ] )

scatter_axs . append (ax)

return

fig

def scatter_repertoi res_clusters(reps, ref clusters, measurements' proportions') :

"""Create a grid of scatter plots showing corelations between all pairs of repertoi res . vd _package.txt reps -- list of Repertoire objects numreps = len(reps) datalist = []

for rep in reps:

clusters - vd .getclusters(rep) datali st. append ( vdj .countsClusters(clusters,refclusters) ) if measurement ==

'proportions' :

for i in xrange(len(datalist)) :

datali st[i] =

np.float_(datalist[i]) / np.sum(datalist[i])

m n_nonzero =

np.min([np.min(data[data>0]) for data in datalist])

max_nonzero =

np.max([np. max (data [data>0]) for data in datalist])

axislo = 10**np.floor(

np.frexp(min_nonzero) [1] * np.logl0(2) )

axishi = 10**np.ceil( np.frexp(max_nonzero) [1]

* np.logl0(2) )

fig = plt.figure()

hist_axs = []

for row in

xrange(numreps) :

col = row

plotnum = numrepsVow + col + 1

ax =

f g . add_subpl ot (numreps , numreps , plotnum) ax . hi st (datal i st [row] , bi ns=100 , 1 og=True , f acecol or= ' k ' ) hi st_axs. append (ax) scatter_axs = []

for row in xrange(numreps-l) :

for col in

xrange(row+l, numreps) :

plotnum = numreps*row + col + 1

ax =

f i g . add_subplot (numreps , numreps , plotnum) vdj_package.txt

ax.scatter(datalist[row] ,datalist[col] ,c='k' ,marker='o' ,s=0.5,edgecolors=None) ax . set_xscal e C 1 og ' )

ax . set_yscal e C Ί og ' ) ax . axi s ( [axi si o , axi shi , axi si o , axi shi ] )

scatter_axs . append(ax)

return

fig

def reps2timeseries(reps, refclusters) :

'" Return time series matrix from list or

Repertoire objs in chron order.

reps is list of Repertoire objects

refcl usters

is the master list of reference clusters

numreps = len(reps)

numcl usters =

len(refclusters)

countdata = np.zeros((numcl usters, numreps))

for (i , rep) in

enumerate(reps) :

clusters = vdi .getclusters(rep)

countdata [: , i] =

vd j . countscl usters (cl usters , refcl usters)

return countdata

def

ti meseri es_repertoi res (ti mes , reps , refcl usters , i dxsbool =None , al 1 posi ti ve=Fal se) :

"""create a time-series of the different clusters in refclusters.

If all positive is

True, then it will limit itself to drawing ti meseri es

only for those clusters that are

non-zero at all timepoints. ax = plt.gcaO

numreps = len(reps) numcl usters = len(ref clusters) vd _package.txt

countdata = np. zeros ((numclusters.numreps))

for

C , rep) in enumerate(reps) :

clusters = vdi .getclusters(rep)

countdata[: , i J =

vdj . countsClusters(clusters, refclusters)

sums = countdata. sum(0)

proportions =

np.float_(countdata) / sums

if idxsbool == None:

if all positive == True: idxsbool = np.sum(proportions,axis=l) > 0

else:

idxsbool =

np . array( [True] *proportions . shape[0] ) ax. plot(times .countdata[idxsbool , :] .transposeO , 'k-' ,linewidth=0.2) pi t . draw_i f_i nteract ve()

return ax def rep2spectratype(rep) :

""''Compute

spectratype curves from Repertoire object."""

cdr3s = np.array([c.cdr3 for c in rep

if c. junction != ' '])

imn_raw_cdr3 = np.min(cdr3s)

max_raw_cdr3 = np.max(cdr3s) min_cdr3 = np.int(np.ceil ( min_raw_cdr3 / 3.) * 3) # will be a nonzero mult of 3 max_cdr3 = np.int(np.floor(max_raw_cdr3 / 3.) * 3) # will be a mult of 3

# bin the

CDR3s lengths. The first elt is rep zero Ten (and should be zero)

# and the last bin

always represents one greater than the biggest mult of 3

binnedcdr3s =

np.histogram(cdr3s,bins=np.arange(0,max_cdr3+2)) [0] # the +2 is due to the pecul . np.hist. vdj_package.txt

aussians = []

or cdr31en in np.arange(min_cdr3,max_raw_cdr3,3) : totalcdr3s = np. sum(binnedcdr3s[cdr31en-l:cdr31en+2])

goodcdr3s =

binnedcdr3s[cdr31en]

if total cdr3s == 0:

conti nue

mu = cdr31en x = cdr31en-0.5

tail = (1 - (np.float(goodcdr3s)/total cdr3s)) / 2. sigma = (x-mu) / (np. sqrt(2.)*sp. special .erfinv(2*tail-l))

rv =

sp . stats . norm(loc=mu , seal e=sigma)

gaussians.appendC (total cdr3s , rv) )

t =

np .1 i nspace(0 ,max_cdr3+1, 1000)

y = np.zeros(len(t))

for (s,rv) in gaussians: y += s*rv.pdf(t)

return (t,y)

def

ci rcl emapVJ (ax , counts , rowl abel s=None , col 1 abel s=None , seal e= ' 1 i near ' ) : numv =

counts . shape[0]

numJ = counts. shape[1]

X,Y = np.meshgrid(range(numj) , range(numv))

# mask zero position:

X,Y = ma.array(X) , m, .array(Y)

C = ma.array(counts)

zeromask = (counts = 0)

X.mask = zeromask

Y.mask = zeromask

C.mask =

zeromask

# ravel nonzero elts (deletes zero-pos t ons)

x = ma. compressed(x) y = ma. compressed(Y)

c = ma. compressed(C) vdj_package.txt

# log normalize counts if requested f scale == ' log' :

c - ma.loglO(c)

if scale == 'linear' or scale ==

log' :

# normalize counts to desired size- range

max_counts = ma. max (

.counts = ma.min(c)

counts_range = max_counts - min_counts max_s ze = 100

min_size = 5

size_range = max_size - m n_size sizes = (np.float(size_range) / counts_range) * (c - min_counts) + m n_size if

seal e == ' custom1 :

trans_counts = 1000

l near_positions = c >= trans_counts log_positions = c < trans_counts

m n_size = 3

trans_size =

40 # 30

max_size = 200 # 150

log_size_range = trans_size - min_size l near_s ze_range = max_size - trans_size

linear_max_counts =

ma . max (c [1 i near_posi ti ons] )

linear_min_counts = ma.m n(c[l inear_positions]) l near_counts_range = linear_max_counts - linear_min_counts

log_max_counts =

ma . max(c [1 og__posi ti ons] )

log_min_counts = ma.min(c[log_positions]) log_counts_range = np.loglOClog_max_counts) - np. logl0(log_min_counts) sizes = np.zeros(lenC ) vdj_package.txt

sizes[linear_positions] = (np.float l near_size_range) /

l near_counts_range) * (c[l near_pos t ons] - li near_mi n_counts) + trans_size sizes[log_positions] = (np.float(log_s ze_range) / log_counts_range) *

(ma. loglO(c[log_pos tions]) - ma.loglO(log__min_counts)) + min_size

collection =

mpl .collections.Ci rcleCollect onC

sizes, offsets = zip(x,y), transoffset = ax.transData, # i may need to expl citly set the xlim and ylim nfo for this

to work correctly

facecolors = '#1873C1' , linewidths = 0.25, clip_on = False)

ax . add_col 1 ecti on (col 1 ecti on)

ax . set_aspect ( ' equal ' ) ax . autoscal e_vi ew() ax . xaxi s . set_ma or_l ocator (mpl . ti cker . Fi xedLocator (range (count s . shape [1] ))) ax . yaxi s . set_ma or_l ocator (mpl . ti cker . Fi xedLocator (range (counts . shape [0] ) ) )

f

row/labels != None: ax . xaxi s . setjna or_f ormatter (mpl . ti cker . Fi xedFormatter (col 1 abel s) )

if col labels !=

None:

ax . yaxi s . set_ma or_f ormatter (mpl . ti cker . Fi xedFormatter (rowl abel s)) for ticklabel in ax. xaxi s.get_tickl abel s () : ti ckl abel . set_hori zontal al i gnment ( ' 1 eft ' )

ti ckl abel . set_rotati on (-45) vdj_package.txt

ticklabel .set_size(8)

for ticklabel in ax.yaxis.get:._ticklabelsQ : ticklabel .set_size(8)

if scale == 'linear' or scale == 'log':

return

(min_counts,max_counts) , (min_size,max_size)

else:

return

(1 i near_mi n_counts , trans_counts , 1og_max_coi_nts) , (mi n_si ze, trans_si ze, max_size) # define

colormap for -1 to 1 (green-black-red) like gene expression

redgreencdict = {'red': [(0.0,

0.0, 0.0),

(0.5, 0.0, 0.0),

(1.0,

1.0, 0.0)],

'green' : [(0.0, 0.0, 1.0),

0.0, 0.0),

(1.0, 0.0, 0.0)],

'blue': [(0.0, 0.0, 0.0),

(0.5, 0.0, 0.0),

(1.0, 0.0, 0.0)]}

redgreen =

mpl .colors . LinearSegmentedColormapC redgreen' , redgreencdict ,256)

redgreen . set_bad(col or='w' )

import numpy as np

import scipy as sp

import scipy. cluster

import vd

import clusteringcore def pdist(X, metric) :

m = len(x)

dm = np.zeros((m

* (m - 1) / 2,), dtype=np. double)

k = 0

for i in xrange(0, m - 1) :

for in vdj_package.txt

xrangeCi+1, m) :

dm[k] = metric(x[i] , x[j])

k += 1

return dm def cl uster_seqs (seqs , cutof =4.5 , 1 nkage= ' si ngl e ' ) :

# check trivial cases

if

1 en (seqs) == 0:

return (np.array([]) , {})

# raise Exception, "chains has

nothing it"

# collapse identical seqs into each other

unique_seqs =

list(setCseqs))

seq_idxs = dictC [(j,i) for (i,j) in enumerate(unique_seqs)] )

# check trivial case

if len(unique_seqs) == 1:

T = np.array(.[l]*len(seqs)) return (T,seq_idxs)

# compute the distance matrix

Y = pdistC unique_seqs,

clusteringcore.levenshtein )

# compute the linkage

z =

sp . cl uster . hi erarchy .1 i nkage (Y, method=l i nkage)

# determine the clusters at level

cutoff

T = sp . cl uster . hi erarchy . f cl uster (z , cutof f, cri teri on= ' di stance ' ) return

(T, seq_idxs)

import types

import vdj

# def parse_VD3XMLC nputfile) :

# 'Generator to

return immuneChain objects from a vdjxml file.

#

# Utilizes python XML libraries.

#

# # NOTE: this can probably be made more elegant if implemented vd _package.txt

# # as a

class

#

# # global state variables.

# chain = None

# data_buffer = None

#

# def startjiandl er (name, attri butes) :

# if name == ' immunechain' :

#

chain = immunecha n O

# else:

# data_buffer = "

#

# def

end_handl er (name) :

# if name == 'immunechain':

# yield chain

#

el if name == 'tag' :

# chain. add_tags(data_buffer)

# else:

#

chai n . setattr (name , data_buf f er)

#

# def data_handler(data) :

#

data_buffer += data

#

# xmlparser = xml .parsers. expat. ParserCreate() #

xmlparser . startElementHandler = start_handler

# xml parser. EndElementHandler =

end_handler

# xmlparser .characterDataHandler = data_handler #

# if not

hasatt r (i nputf 1 e , ' read ' ) :

# inputfile = open(inputfile, 'r')

#

#

xml parser . ParseFi 1 e (i nputf i 1 e)

#

# = START DEPRECATED

# vdj_package.txt def

parse_VDJXML_old(inputfile) :

"""Load a data from a VDJXML file as a Repertoire or list of immunechains

NOTE: this fn does NOT util ze the XML libraries; it implements manual parser

that takes input line by line.

THIS ASSUMES THAT EVERY XML

ELEMENT TAKES ONE AND ONLY ONE LINE if

i si nstanceCi nputf i 1 e , types . Stri ngTypes) :

ip = open (i nputf i 1 e, ' r')

el if

i si nstanceCi nputfile, file) :

ip = inputfile

numchains = 0 possible_elements = [

'descr'

'seq',

'ν',

'd',

'igh>c',

'cdr3' ,

'junction' ,

'func1 ,

•tag' for line in ip:

line = line. stri pC)

endelementpos = line.findC'>') + 1 xml element = line[0: endelementpos]

element = xmlelement[l:-l] vdj_package.txt

if xml element == '<lmmunechain>' :

chain = vdj . immuneChainO

elif

xml element == ' </immuneChain>' :

numchains += 1

yield chain elif element in possible_elements:

i f el ement == ' tag ' :

tagdata

= line [endel ementpos: -l*(endelementpos+l)] .splitC I ')

if tagdata [0] ==

'experiment':

chain. setattr ('experiment' , ' [ ' . join(tagdata[l:])) elif tagdata [0] == 'clone': chain setattr _((*'cclloonnee''I,''||_''. join(tagdata[l:]))

elif tagdata [0

'barcode' :

chain. setattr ('barcode' , ' | ' . join (tagdata [1:])) elif tagdata [0] == 'v_end_idx': chain setattr ('v_end_idx' , Ί ' . join(tagdata[l:]))

elif tagdata [0] ==

' j_.start_.idx' :

chain setattr (' _start_idx' , ' | ' . join(tagdata[l:])) el se: chai n . add_tags (1 i ne [endel ementpos : -1* (endel ementpos+1)] )

elif element ==

ighc' :

eltdata = 1 ine [endel ementpos : -1* (endel ementpos+1)] if eltdata != " :

chain.c = eltdata

else: pass

elif element == 'func':

pass

else: eltdata = line [endel ementpos :-l* (endel ementpos+1)]

if eltdata != vd _package.txt chai n setattr (el ement , el tdata)

else: pass

if i si nstanceC nputf le, types. StringTypes) :

ip.closeO

#

# = END DEPRECATED

#

# def

f i 1 ter_parse_VD3XMLCi nputf i 1 e , predi cate) :

# "*"'Load a data from a VDJXML file as a

Repertoire or list of immuneChai ns

#

# predicate is a function that takes a chain

and return True or False. Things

# that return false are skipped.

#

# NOTE :

this fn does NOT utilize the XML libraries; it implements a manual

# that takes

input line by line.

#

# THIS ASSUMES THAT EVERY XML ELEMENT TAKES ONE AND ONLY ONE

LINE

# j

#

# if i si nstanceCinputf ile, types. St ri ngTypes) :

# ip

= open (i nputf 1 e, ' r')

# el if isinstance(inputfile.file) :

# ip = inputfile

#

# numchains = 0

#

# possible_elements = [

# 'descr',

#

'seq' ,

# 'v', vdj_package.txt

# 'd\

# 11

I 3 '

'ighc' ,

# 'cdr3',

# 'junction',

#

'func' ,

# ' tag '

# ]

#

# for line in ip:

#

line = line.stripO

# endel ementpos = line.find('>') + 1

# xml element =

1 i ne [0 : endel ementpos]

# element = xmlelement[l:-l]

#

# if

xml element == '<lmmunechain>' :

# chain = immunechainO

# el if xml element

== ' </immunechai n> ' :

# numchains += 1

# if predicate (cha n) ==

True:

# yield chain

# else:

# pass

#

el if element in possible_elements:

# if element == 'cdr3':

#

chain. cdr3 = eval (line [endel ementpos :-l* (endel ementpos+1)])

# el if element ==

'tag' :

# chai n . add_tags ( i ne [endel ementpos : - 1* (endel ementpos+1) ] ) #

el se:

#

chai n . setatt r (el ement , 1 i ne [endel ementpos : -1* (endel ementpos+1)] )

#

# if

i si nstance (i nputf i 1 e , types . Stri ngTypes) :

# ip.close()

"""params.py

Def i ne vdj_package.txt directory and file names that must be manually modified to point to certain resources.

# HACK. Figure out better way to refer to this directory vdj_di r =

' /users/1 aserson/research/church/code/1 i b/vdj '

# packaged data dir

data_di r = 'data'

iGHV_fasta = 'iGHV.fasta'

iGHD_fasta = 'iGHD.fasta'

iGH3_fasta = 'iGHJ.fasta'

iGKV_fasta =

'iGKV.fasta'

iGKD_fasta = 'iGKJ.fasta'

iGLV_fasta = 'iGLV.fasta'

iGL3_fasta = 'iG .fasta'

TRBV_fasta = 'TRBV.fasta'

TRBD_fasta = 'TRBD.fasta'

TRBJ_fasta = 'TRBJ.fasta'

TRAV_fasta =

'TRAV.fasta'

TRAj_fasta = 'TRAJ.fasta'

TRDV_fasta = 'TRDV.fasta'

TRDD_fasta = 'TRDD.fasta'

TRDJ_fasta = 'TRDJ.fasta'

TRGV_fasta = 'TRGV.fasta'

TRG3_fasta = 'TRGD.fasta'

# The

following directory and files will not be packaged with

# but will be computed the first

time refseq is imported. After

# that, it will not be recomputed unless it is forced #

persistent data directory

pickle_dir = 'pickle'

# Relevant LIG records in pickle format

#

if the file exists, refseq will not try to recompute it

# unless it's forced

IGHV_pickle =

'IGHV. pickle'

lGHD_pickle = 'IGHD. pickle'

IGHJ_pickle = 'IGH-I. pickle'

iGKV_pickle =

'IGKV. pickle'

iGKJ_pickle = 'IGKJ. pickle'

iGLV_pickle = 'IGLV. pickle' vdj_package.txt

IGLJ_pickle =

'IG .pickle'

TRBV_pi ckl e = 'TRBV. pickle'

TRBD_pi ckl e = 'TRBD. pickle'

TRBJ_pickle =

'TRBJ .pickle'

TRAV_pickle = 'TRAV. pickle'

TRAJ_pickle = 'TRAJ .pickle'

TRDV_pickle =

'TRDV. pickle'

TRDD_pi ckl e = 'TRDD. pickle'

TRD3_p ckle = 'TRDJ .pickle'

TRGV_pickle =

' TRG . pi ckl e '

TRGJ_pickle = 'TRGJ. pickle'

# # full IMGT flatfile database dir

# imgt_dir =

'/Users/laserson/research/church/vd -ome/ref-data/lMGT'

# 1 i gm_f i 1 ename = 'imgt.dat'

#

refdatad r = '/users/laserson/research/church/vdj-ome/ref-data/l GT'

# imgtdat =

'imgt.dat'

# imgtfasta = 'imgt.fasta'

# imgtvseq = ' vdj_ref . fasta'

# imgtrefseqfasta =

' imgtref seq. fasta'

# imgtspecrasta = 'imgtspec. fasta'

# imgtspecvd xml =

' imgtspec. vd xml '

# imgtrefseqFR3endcoords = 'imgtrefseqFR3endcoords.dat'

#

imgtrefseqJTRPstartcoords = 'imgtref seqJTRPstartcoords.dat'

# functions for pipeline

operations

import vd

import vdj .clustering

import seqtools

def

iterator2parts (iterator, basename, packetsi ze, pref ix=' ' ,suffix=' ') :

"""Split data from

iterator into multiple files"""

parts = []

nunuprocessed = 0

file_num = 1 vdj_package.txt curr_outname = basename+' . '+str(file

for obj in iterator:

f

num_processed == 0:

op = open(curr_outname, ' print »op, prefix parts ,append(curr_outname)

print »op, chain

num_processed += 1 if num_processed == packetsize:

pr nt »op, suffix op.closeO

num_processed = 0

file_num += 1

curr_outname

= basename+' . '+str(file_num)

if not op. closed:

print »op, suffix op. close ()

return parts

def load_barcodes(barcode_file)

bcip =

open (barcode_f 1 e , ' r ' )

barcodes = {}

for (descr.seq) in

seqtool s . Fastalterator (bci p) :

barcodes [seq.upperO] =

bcip.closeQ

# check that barcodes meet necessary criteria barcode_len = 1 en (barcodes. keys Q [0]) for be in barcodes . keys O :

if len(bc) != barcode_len:

raise Exception,

"ERROR: All barcode lengths must be equal."

return barcodes vdj_package.txt

def

id_barcode(chai n, barcodes) :

# barcodes assumed to be single length

barcode_len =

1 en(barcodes . keysO [0] )

try:

curr_barcode =

barcodes [chai n . seq [ : barcode_l en] . upper()]

except eyError: # barcode not found; chain

unchanged

return # chain remains unchanged

chain. seq =

chain. seq [barcode_l en:] # prune off barcode from seq

chain. barcode = curr_barcode

def

1 oad_i sotypes(i sotype_fi 1 e) :

ighcip = open(isotype_file, ' r')

isotypes = {}

for

(descr, seq) in seqtool s . Fastalterator(ighcip):

isotypes [seq. upper()] = descr ighcip. closeO

return isotypes

def id_ sotype(chain, isotypes) :

if not

chai n.has_tag(' positive') and not chai n.has_tag(' coding') :

warnings.warn('chain %s

may not be the correct strand1 % chain. descr)

for i so in i sotypes.iten"terns () : if iso[0] in chain. seq[-50:] : # arbitrary cutoff from 3' end chain.c =

iso[l]

def cat_vdjxml (files,outhandle) :

print »outhandle, "<root>"

for f in

files:

inhandle = open(f,'r')

for chain in vdj .parse_VD3XML(inhandle) : print »outhandle, chain

print »outhandle, "</root>" vdj_package.txt

def

parti ti on_V3 (i nhandl e , basename) :

# ignores allele numbers

def

j_i d_no_al 1 el e (chai n) :

return seqtools.cleanup.idCchain.v.splitC1*') [0]) + '_' + seqtool s . cl eanup_i d (chai n . . spl i t ( ' * ' ) [0] )

def outname(basename,vj_id) : return "%s.%s.vdjxml" % (basename, vj_id)

outhandles = {}

for chain in

vd j . parse_VDDX L(i nhandl e) :

curr_vj_id = v _id_no_all el e (chain)

try: print »outhandles[curr_vj_id] , chain

except KeyError: outhandles [curr_vj_id] = open( outname(basename,curr_vj_id) , 'w' ) print

»outhandles[curr_vj_id] , "<root>"

print »outhandles [curr_v _id] , chain for outhandle in outhandles. itervaluesO :

print »outhandle, "</root>" return [outname(basename,vj_id) for vj_id in outhandle. iterkeys

# ==============

# =

matplotlib =

# =========-=====

# some tools to automate MPL manipulations that I makeimport os

mport sys

import types

import cPickle as pickle

import params

import refsequtils

#

# = First-time initializations = vdj_package.txt

# does the pickle directory exist?

if not os. path. exi sts (

os . path . joi n(params . vdj_di r , params . pi ckl e_di r) ) :

os.mkdi r(

os . path . joi n(params . vd _di r , params . pi ckl e_di r) )

# test for each gene type pickle file

i

not

os . path . exi sts(os . path .join(params .vd _di r , params . pi ckl e_di r , params . lGHV_pi ckl e)) : refsequti 1 s . process_l GT_references(refsequti 1 s .VReferenceEntry , os . path . joi n(params . vdj_di r ,

params . data_di r , params . lGHV_fasta) ,os . path . joi n(params .vdj_di r , params . pi ckl e_di r , par ams . IGHV

_pi ckl e) , verbose=True)

if not

os . path . exi sts (os . path . joi n(params .vdj_di r , params . pi ckl e_di r , params . lGHD_pi ckl e)) : refsequti 1 s . process_l GT_references(

refsequti 1 s . ReferenceEntry , os . path . joi n(params .vdj_di r , params . data_di r , params . lGHD_f asta) ,os

. path . joi n(params . vdj_di r , params . pi ckl e_di r , params . lGHD_pi ckl e) , verbose=True) if not

os . path . exi sts(os . path .jo n (params .vdj_di r , params . pi ckl e_di r , params . IGHJ_pi ckl e)) : refsequti 1 s . process_l GT_references(re sequti 1 s . JReferenceEntry ,os . path . oi n(params . vdj_di r ,

params . data_di r , params . IGHJ_fasta) , os . path .join(params . vdj_di r , params . pickle_di r , par ams . IGHJ

_pi ckl e) , verbose=True)

if not

os . path . exi sts (os . path . joi n (params . vdj_di r , params . pi ckl e_di r , params . lGKV_pi ckl e)) : refsequti 1 s . process„l GT_references(refsequti 1 s .VReferenceEntry, os . path . joi n(params . vdj_di r ,

params . data_di r , params . lGKV_fasta) , os . path . joi n(params .vdj_di r , params . pi ckle_di r , par ams . IGKV

_pi ckl e) , verbose=True)

if not

os . path . exi sts(os . path . joi n(params .vd _di r , params . pi ckl e_di r, params . lGKJ_pi ckl e)) : refsequti 1 s . process_lMGT_references(refsequti 1 s . JReferenceEntry,os . path . oi n(params . vdj_di r , vdj_package.txt

params . data_di r , params . lGKJ_fasta) ,os . path . joi nCparams . vdj_di r , params . pi ckl e_di r , par ams.lGKJ

_pi ckl e) , verbose=True)

if not

os . path . exi stsCos . path .joinCparams . vdj_di r, params . pi ckl e_di r , params . lGLV_pi ckl e)) : refsequti 1 s . process_lMGT_referencesCrefsequti 1 s .VReferenceEntry, os . path . joi nCparams . vdj_di r ,

params. data_di r, params. lGLV_fasta) ,os .path. joi nCparams . vdj_di r .params .pi ckl e_di r.par ams.lGLV

_pi ckl e) , verbose=True)

f not

os . path . exi stsCos . path . joi nCparams .vdj_di r , params , pi ckl e_di r , params . IGLJ_pi ckl e)) : refsequti 1 s . process_lMGT_referencesCrefsequti 1 s . JReferenceEntry, os . path . joi n Cparams . vdj_di r ,

params . data_di r , params . IGLJ_fasta) ,os . path . joi nCparams . vdj_di r , params . pickle_di r , par ams .IGLJ

_pickl e) , verbose=True)

if not

os . path . exi stsCos . path . joi nCparams . vdj_di r , params . pi ckl e_di r , params .TRBV_pi ckl e)) : refsequti 1 s . process_lMGT_referencesCrefsequti 1 s .VReferenceEntry ,os . path . joi nCparams . vdj_di r ,

params . data_di r , params .TRBV_fasta) ,os . path . joi nCparams . vdj_di r, params . pi ckle_di r, par ams.TRBV

_pi ckl e) , verbose=True)

if not

os . path . exi stsCos . path . joi nCparams . vdj_di r , params . pi ckl e_di r , params .TRBD_pi ckl e)) : refsequti 1 s . process_lMGT_referencesC

refsequti 1 s . ReferenceEntry, os . path .joi nCparams . vd _di r , params . data_di r , params .TRBD_f asta) ,os

. path .joi nCparams . vdj_di r , params . pi ckl e_di r , params .TRBD_pi ckl e) , verbose=True) if not

os . path . exi stsCos . path . oi nCparams .vdj_di r , params . pi ckl e_di r , params .TRB3_pi ckl e)) : refsequti 1 s . process_lMGT_referencesCrefsequti 1 s .3ReferenceEntry,os . path . joi n Cparams . vdj_di r,

params . data_di r , params .TRBJ_fasta) , os . path . joi nCparams . vdj_di r, params . pi ckle_di r, par ams .TRBj

_pi ckl e) , verbose=True)

if not

os . path . exi stsCos . path . joi nCparams . vdj_di r , params . pi ckl e_di r , params .TRAV_pi ckl e)) : vdj_package .txt

ref sequti 1 s . process jMGT_ref erences (refsequti I s . VRef erenceEntry, os . path . joi n (params . vd j_di r ,

params . data_di r , params .TRAv_f asta) , os . path . joi n (params . vd j_di r , params . pi ckl e_di r , par ams .TRAV

_pi ckl e) , verbose=True)

i f not

os . path . exi sts (os . path . j oi n (params . vd j_di r , params . pi ckl e_di r , params . TRAJ_pi ckl e) ) : refsequti 1 s . process_lMGT_references(ref sequti 1 s . DRef erenceEntry , os . path . oi n (params . vdj_di r ,

params . data_di r , params . TRAJ_f asta) , os . path . joi n (params . vd j_di r , params . pi ckl e_di r , par ams .TRAD

_pi ckl e) , verbose=True)

i f not

os . path . exi sts (os . path . joi n(params . vd j_di r , params . pi ckl e_di r , params .TRDv_pi ckl e) ) : refsequti 1 s . process_lMGT_ref erences (ref sequti 1 s . VRef erenceEntry , os . path . oi n (params . vdj_di r ,

params . data_di r , params . TRDV_fasta) , os . path. joi n (params . vdj_di r , params . pi ckl e_di r , par ams . TRDV

_pi ckl e) ,verbose=True)

i f not

os . path . exi sts (os . path . j oi n (params . vd j_di r , params . pi ckl e_di r , params .TRDD_pi ckl e) ) : refsequt 1 s . process_lMGT_references(

refsequti 1 s . Ref erenceEntry , os . path . joi n (params . vd j_di r , params . data_di r , params .TRDD_f asta) , os

. path . joi n (params . vd j_di r , params . pi ckl e_di r , params .TRDD_pi ckl e) , verbose=True) i f not

os . path . exi sts (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params . TRDJ_pi ckl e) ) : refsequti 1 s . process_l GT_ref erences (ref sequti 1 s .3 Ref erenceEntry , os . path . joi n (params . vd j_di r ,

params . data_di r , params . TRD_i_f asta) , os . path . joi n (params . vdj_di r , params . pi ckl e_di r , par ams .TRDD

_pi ckl e) ,verbose=True)

if not

os . path . exi sts (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params . TRGV_pi ckl e)) : refsequti 1 s . process_lMGT_ref erences (ref sequti 1 s . VRef erenceEntry , os . path . joi n (params . vdj_di r ,

params . data_di r , params . TRGV_f asta) , os . path . joi n (params . vd j_di r , params . pi ckl e_di r , par ams . TRGV

_p ckl e) ,verbose=True)

i f not vdi_package.txt

os . path . exi sts (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params .TRG3_pi ckl e) ) : ref sequti 1 s . process_I GT_ref erences (ref sequti 1 s . JRef erenceEntry ,os . path . joi n (params . vdj_di r ,

params . data_di r , params .TRG_i_f asta) , os . path . joi n (params . vd j_di r , params . pi ckl e_di r , par ams.TRGJ

_pickle) , verbose=True)

# at this point, there should be pickle files with fully processed

reference genes

# (including the LlGM-dependent parts)

# =======================

# = Load

reference data =

# ==================:=====

IGHV =

pi ckl e. load (open (os .path. join (params. vdj_di r, params. pi ckl e_di r , params . lGHV_p ckle)) IGHD =

pi ckl e .1 oad (open (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params . lGHD_pi ckl e) IGHJ =

pickle. load (open (os .path. join (params. vdj_di r, params . pickle_di r , params .lGHJ_pi ckl e)) IGKV =

pi ckl e .1 oad (open (os . path . j oi n (params . vd j_di r , params . pi ckl e_di r , params . lGKV_pi ckl e) )

IGKD =

pi ckl e .1 oad (open (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params . lG 3_pi ckl e) ) IGLV =

pi ckl e .load (open(os . path . joi n(params . vd j_di r , params . pi ckl e_di r , params . lGLV_pi ckl e) ) IGLJ =

pi ckl e .1 oad (open (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params . lGL3_pi ckl e) )

# TRBV pi ckl e .1 oad (open (os . path . j oi n (params . vd j_di r , params . pi ckl e_di r , params . TRBV_pi ckl e) ) #

TRBD =

pi ckl e .1 oad (open (os . path . j oi n (params . vd _di r , params . pi ckl e_di r , params . TRBD_pi ckl e) ) # TRBJ pi ckl e .1 oad (open (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , params .TRB3_pi ckl e)) #

TRAV =

pi ckl e .1 oad (open (os . path . joi n (params . vd j_di r , params . pi ckl e_di r , pa rams . TRAV_pi ckl e))

# TRAJ vdj_package.txt

pi ckl e .1oad(open(os . path . joi n(params . vdj_di r , params . pi ckl e_di r , params .TRA3_pi ckle) ))

TRDV =

pickle. load (open (os .path . joi n(params . vdj_di r , params. pi ckl e_di r .params .TRDV_pi ckl e)))

# TRDD pi ckl e .1oad(open(os . path . joi n(params . vdj_di r , params . pi ckl e_di r , params .TRDD_pi ckl e)))

TRDJ =

pi ckl e .1 oad(open(os . path .join(params . vdj_di r , params . pi ckl e_di r , params .TRDJ_pi ckl e))) # TRGV pi ckl e .1oad(open(os . path . oi n(params . vdj_di r , params . pi ckl e_di r , params .TRGV_pi ckl e)) )

TRG: =

pi ckl e .1oad(open(os . path .join(params .vdj_di r, params . pi ckl e_di r , params .TRGJ_pi ckl e)) )

#

# = Define data structures for

compat bility with aligner =

#

lGHn_list -- list of the refseq identifiers (e.g., IGHJI, IGHV6-1, etc.)

# lGHn_seqs — diet

where the keys are refseq IDs and the values are the actual sequences

# from

refseq.

# lGHn_idx -- diet where the keys are refseq IDs and the values are the indices into the

# lGHn_list list.

# iGHV_offset

def legacy_data(ref_data) :

"""Generate data structure used by aln tools etc."""

locus_list = [el t. allele for elt in

ref_data]

locus_seqs = dict([(elt.allele,elt.seq) for elt in ref_data])

locus_ dx =

dict([(g,i) for i ,g in enumerate(locus_list)])

try: vd _package.txt

locus_offset =

dict([(elt. allele, elt. cdr3_boundary-elt.accession_coords[0]) for elt in ref_data]) return (locus_list,locus_seqs,locus_idx,locus_offset)

except AttributeError : return (1 ocus_l i st , 1 ocus_seqs , 1 ocus_i dx)

_1 i st , iGHV_seqs , iGHV_i dx , iGHV_offset)

legacy_data(lGHV)

_1 i st , iGHD_seqs , .idx) legacy_data(lGHD)

(IGH _l i st , IGHJ_seqs , ,idx,lGH3_offset) legacy_data(lGHJ)

(IGKV_1 st , iG V_seqs , .idx,iGKV_offset) legacy_data(iGKV)

_1 i st , lG J_seqs , IGKJ..idx,lGKJ_offset) legacy_data(lG J)

_1 i st , iGLV_seqs , . dx,lGLV_offset) legacy_data(lGLV)

CiGL _1 i st , iGLj_seqs , .idx,lGL3_offset) legacy_data(lGLJ) _1 i st _seqs _i dx _offset) = legacy_data _list,TR8D_seqs _idx) = legacy_data J_l i st , _seqs , J_i dx, j_offset) = legacy_data _1 i st , _seqs , _i dx , _offset) = legacy_data

(TRAj_list,TRAj_seqs _idx,TRAj_offset) = legacy_data(TRAj)

#

_list _seqs _idx _offset) = legacy_data _list _seqs,TRDD_idx) = legacy_data _1 i st _seqs ,TRDj_i dx ,TRDJ_offset) = 1 egacy_data _1 i st , _seqs , _i dx _offset) = legacy_data _1 i st _seqs ,TRG3_i dx _offset) = legacy_data

# # refseq.py

#

#

"""Contains data and functions for dealing with reference IMGT data.

#

# refdatadir must be vdi_package.txt

set to the directory where the IMGT flat file release

# is present. This must include

imgt.dat, i mgt . fasta , and imgtrefseq.fasta.

#

# lGHn_list — l st of the refseq identifiers

(e.g., iGHDl, IGHV6-1, etc.)

# lGHn_acc — diet where keys are refseq IDs and values are the

IMGT accession numbers

# lGHn_coords — diet where keys are refseq IDs and values are pa rs of coords that are

# extracted from the refseq database. These numbers are unmodified seq

# coords of the reference element within the LIGM entry #

lGHn_seqs -- diet where the keys are refseq IDS and the values are the actual sequences

#

from refseq.

# lGHn_idx — diet where the keys are refseq IDs and the values

are the indices into the

# lGHn_list list.

# lGHV_FR3_IMGT_end_coord -- diet

where the keys are refseq IDs and the values are the coord of

#

the end of FR3-IMGT (incl the 2nd-CYS) unmodified

# lGH3_3_TRP_start_coord -- diet where the

keys are refseq IDs and the values are are the

# coord of the

start of the 3-TRP site unmodified

#

#

# import os

# import cPickle

#

# from Bio

import seqio

#

# mport vd

# mport params

# import sequtils

#

# #

# # = UTILITY FNS for parsing reference

databases =

# # =======

# vdj_package.txt

# def

get_refseq_el ements(1 ocus , all el es , func , speci es , getcoords , refdatad r , imgtrefseqfasta) #

"""Extract all identifiers that meet certain criteria from IMGT/GENE-DB (refseq).

#

#

locus — identifier such as ' IGH 1 , 'T BV' , etc

# alleles -- can be either '01' or

'all '

# func -- list of func IDs, e.g., ['F' , 'ORF' , 'Ρ'] . if empty, includes everyth ng

# species — species of animal (e.g., 'Homo+sapiens')

# getcoords -- determines whether to process and return coords (boolean)

#

# refdatadi r -- directory where IMGT resides

# imgtrefseqfasta -- filename of imgtrefseq fasta file

#

#

# reflDs = []

# refacc = {}

# refseqs = }

# if

getcoords:

# refcoords = {}

# all refseqs = sequtils.load_fasta(

os . path . joi n(refdatadi r , imgtrefseqfasta) )

#

# if func == []:

# func =

['F' , 'ORF' , 'Ρ']

#

# for seq in all refseqs:

# # get info on curr seq currdescr = seq. description

# currlocus = currdescr .splitC ,') [0] . split(' *') [0]

#

currallele = currdescr. splitC ,') [0] .split('*') [1]

# currspecies =

currdescr . splitC ')[1]

# currfunc = currdescr . splitC ,') [2] .splitC) [-1] .stripC

# currlD = currdescr. splitC , ')[0] .lstripC>') vdj_package.txt

# curracc =

currdescr.splitC , ') [3]

# if getcoords:

# try:

#

currcoords = ( eval (currdescr. splitC , ') [4] . spl it(' . ') [0]) , eval (currdescr.splitC , ·) [4] .splitC . ') [2]) )

# except:

# #print

"Coordinates for", currlocus, curracc, "are not interpretable"

# pass

#

# # perform tests to exclude current seq

# if locus not in currlocus:

#

continue

#

# if alleles != 'all':

# if currallele ! =

alleles:

# continue

#

# if currspecies != species:

#

continue

#

# if currfunc not in func:

# continue

#

# # check for "partial"

# if lenCcurrdescr. splitC , ')) > 5 and

'partial' in ' ' .join (currdescr. splitC ,') [5:]) :

# continue

#

#

ref IDs. append ( currlD )

# refacc[currlD] = curracc

# refseqs[currID] =

seq. seq.tostringO .upper()

# if getcoords:

# refcoords [currlD] =

currcoords

#

# ref IDs. append ( ' ' )

# ref IDS. sort O

#

# f not vdj_package.txt

getcoords:

# return ref IDs, refacc, refseqs

# return

ref IDs , refacc , refseqs , ref coords

#

#

#

# # ====================-=========:====

# # =

Definition of reference data =

# # --=======--=====-.========-.=--==-==:--=

#

# LOCI =

[ ' IGH 1 , 1 IGK' , 'IGL' , 'TRA' , 'TRB11 , 'TRD' , 'TRG']

#

# IGHV_list,lGHV_acc,lGHV_seqs,lGHV-_coords =

get_refseq_elements(locus=,lGHV' ,ane1es='01' ,func=[' F' , ' ORF ' ] ,species=,Homo+sapiens , getcoo

rds=True , ref datadi r=params . ref datadi r , i mgt ref seqf asta=params . i mgtref seqf asta) #

IGHD_11 St , lGHD_acc , lGHD_seqs =

get_refseq_e1ements(1ocus='lGHD' ,alle1es=Ol' ,func=['F' , 'ORF'] ,species='Homo+sapiens .getcoo

rds=Fa1 se , ref datadi r=params . ref datadi r , i mgt ref seqf asta=params . i mgt ref seqf asta) #

IGHJ_1 i st , lGHJ_acc , lGHj_seqs , lGHJ_coords - get_refseq_e1ements(locus='lGHJ ' ,ane1es='01' ,func=['F' , 'ORF'] ,species='Homo+sapiens , getcoo

rds=True, ref datadi r=params . ref datadi r , imgt ref seqf asta=params.imgtref seqf asta) #

# IGHV_ldx

= dict([(g,i) for i,g in enumerate(lGHV_list)])

# lGHD_idx = dict([(g,i) for i,g in

enumerate (IGHD_1 i st) ] )

# lGHJ_idx = dict([(g,i) for i,g in enumerate(lGHJ_1 st)])

#

#

IGHC_1ist = [

# ' ' ,

# ' IGHAl' ,

# ' IGHA2 ' ,

#

' IGHD ' ,

# ' IGHE ' ,

# ' IGHGl' ,

# ' IGHG2 ' ,

# vdj_package.txt

' IGHG3 ' ,

# ' IGHG4' ,

# ' IGHM '

# ]

# IGHC_idx =

dict([(g,i) for i,g in enumerate(lGHC_list)])

#

# ALi IDS = list(set(iGHV_list + IGHD_list

+ IGHJ_list + IGHC_list))

# ALL_IDS.SOrt()

#

#

#

# # ====================

# # =

Specificity data =

#

# def

get_LlGM_wi th_speci fi ci ti esCrefdatadi r , i mgtdat , imgtfasta, outputfasta , outputvdjxml ) : #

# Take the IMGT LIGM flat and fasta files, and return a fasta with only those seqs

#

that have a specificity associated with them in a fasta file. The header contains

#

the accession and the specificity.

#

#

vdj . refseq . get_LlGM_wi th_speci fi citi es("imgt . dat" , "imgt . fasta" , "imgt . specifi citi es . f asta'Y'i

mgt . speci fi ci ti es .vd xml ")

#

# specificities = {} # list of 2-tuples:

(ACCESION , speci fi ci ty)

# LlGMflat = openCos.path. join(refdatadi r,imgtdat) , ' r ')

#

LiGMfasta = openCos.path. join(refdatadi r, imgtfasta) , 'r')

# opspecificityfasta =

open(os . path . joi n(refdatadi r,outputfasta) , 'w' )

#

# num ecords = 0

#

numRecordswithspec = 0

#

# ID = "

# DE = "

# for line in LlGMflat: vdj_package.txt

#

split! ine = line.splitO

#

# if splitlineCO] == 'ID':

#

inRecord = True

# ID = splitline[l]

# numRecords += 1

# elif

splitlineCO] == 'DE' :

# if inRecord:

# DE += '

' . oin(split1ine[l:]) + ' '

# elif splitlineCO] == 'xx' :

# if DE == " :

# if i haven't stored the description yet

# continue

# else:

# finished record

# if 'specificity' in DE:

# specidx =

DE . r i nd ( ' speci f i city')

# spec =

DE[specidx+len('specificity') :] .stripO . rstripC . ')

# if

spec . startswi th ( ' anti ' ) :

# speci ficitiesCiD] = spec

#

numRecordswithSpec += 1

# ID = ' '

# DE = "

#

inRecord = False

#

# print "Number of LIGM records read: " +

str(numRecords)

# print "Number of LIGM records that have specificities: " + str (numRecordswithSpec)

#

# numFasta = 0

#

# for seq in

SeqlO.parseCLlGMfasta, 'fasta') :

# spec = specificities. get(seq. id, ' ')

# if

spec == ' ' :

# continue

# else: vdj_package.txt

# print »opSpecificityfasta,

">" + seq.id + " | " + spec

# print »opSpec f cityfasta,

seq.seq.tostringO .upper()

# numFasta += 1

#

# print "Number of Fasta

records with specificities found and printed: " + str(numFasta)

#

#

LlGMfl at.closeO

# LlGMfasta. close ()

# opspecificityfasta.closeO

#

# #

VDJXML and alignment

# rep =

vd j . i ni ti al_i mport ( [os . path . oi n (ref datadi r , outputf asta) ] , os . path .joi n (ref datadi r , ou tputvdjx

ml) ,metatags=[' specif icity_reference : !+vdj .timestampO )

# rep =

vdj .positive_strand(rep)

# rep = vdj .align_rep(rep)

#

# #repfiltered =

re . get_chai ns_f ul 1 J ()

# repfiltered = rep

# for chain in repfiltered:

#

spec = specificities. get(chain.descr, ' ')

# i f spec == f ' :

# print

"Reference chain has empty specificity: " + chain. descr

# continue

#

el se:

# chain. add_tags( ' specificity | "+spec )

#

#

vdj . wri teVDJ (repf i 1 tered , os . path .joi n (ref datadi r , outputvd j xml ) )

#

# return

#

#

#

if not os. path. exists(os. path. join(params. refdatadir, params. imgtspecfasta)) or not os . path . exi sts (os . path .join (params . ref datadi r , params . i mgtspecvd j xml ) ) ;

# vdj_package.txt

get_LlGM_wi th_speci i ci ti es (params . re datadi r , params . mgtdat , params . mgtf asta , params .imgtspe

cf asta, params .imgtspecvdjxml)

#

#

# if

os . path . exi sts(os . path . joi n(params . ref datadi r , params . imgtspecfasta)) and

os . path . exi sts(os . path . joi n (params . ref datadi r , params . imgtspecvd xml )) :

# ipspecfasta =

open (os . pat . j oi n (params . ref datadi r , params . i mgtspecf asta) , ' r ' )

#

# SPEClist =

set()

# for line in ipspecfasta:

# if line[0j == '>' :

# currspec =

' I ' .joindine.splitc | ') [l:]) .stripO

# SPEClist. add (currspec)

#

pspecfasta. close ()

# SPEC_list.add(")

# SPEClist = list (SPEClist)

#

SPEClist.sortO

import sys

import string

from cstringio import stringio

import cPickle as

pickle

import urllib2

import warnings # this is because IMGT has tons of errors

mport

Cl ent Form

from Bio import seqio

import seqtools

import params

identity =

string. maketransC ' , ' ')

# ===================

# = Data structures =

# class eferenceEntry(object) :

'Data structure to hold a reference vdj_package.txt sequence from IMGT/GENE-DB or

IMGT/V-QUEST.

Some of the attributes are

computed, and some are taken from IMGT.

accession_coords uses converted python

numbering

?apped_seq includes IMGT gaps that they provide rame uses python coords:

0 means already in frame.

1 means skip one nt

2 means skip two nts

partial will take values of "partial in 5"', "partial in 3*", or "partial in 5' and 3'"

depending where the del is. def

init (self,**kw) :

def kw_i nit(attri b) :

if kw.has_key(attrib) : self. setattr (attrib,kw[attrib])

kw_i nit('accession') kw_init('seq')

kw_i nit( ' gapped_seq ' )

kw_i ni t( ' descri pti on ' ) kw_init(' locus')

kw_i nit('gene')

kw_init('allele') kw_i nit( ' speci es ' )

kw_init( ' functional ' )

kw_i ni t( ' i mgt_l abel ' ) kw_i ni t( ' accession_coords ' )

kw_init(' length')

kw_init(' frame') kw_in t(' partial ')

def nit_from_imgt(self,fasta_header , seq) :

"""initial ze

object from IMGT fasta header and seq""" vdj_package.txt

data =

fastaJieader.lstripC) . rstripO .splitC | ')

self .accession = data[0] self .gapped_seq = seq

# self. seq = seq.translate(None, ' . ') .upperO # remove periods

(gaps) # python >2.5

self. seq = seq. translateCidentity ,'.'). upperO self .description = data[l]

self. locus = self .description[0:4]

self. gene =

self. desc ri pti on . spl i t ( ' * ' ) [0]

self. allele « self .description

self. species =

data [2]

self .functional = data[3]

self ,imgt_label = data [4] raw_coords_start = int(data[5] .splitC .') [0])

raw_coords_end

int(data[5]. splitC") [-1])

coords = (raw_coords_start - 1, raw_coords_end) # note the conversion to python coord system

self .accession_coords = coords self. length = len(self .seq)

if self. length != int(data[6] .splitQ [0]) : raise valueError, "Lengths are inconsistent: %s" % fasta_header

self. frame =

int(data[7]) - 1 # note change to python numbering (0-based)

self, partial =

data [13]

def pull _LlGM_record (self) :

'""Get SeqRecord object for LIGM

record from IMGT server"""

# NOTE: this can potentially be significantly

simplified by accessing the URL

# interface to LIGM, through:

#

http : //i mgt . ci nes . f r/cgi -bi n/lMGTl ect . j v?query=5+numacc

# where numacc is the

accession number vd _package.txt

request =

url 1 i b2. Request( 1 http ://imgt . ci nes . fr/cgi -bi n/lMGTl ect . v?l vret=0' )

# LIGM page response = urllib2.urlopen(request)

forms = clientForm.ParseResponse(response, form_parser_class=clientForm.XHTMLCompatibleFormParser, backwards_compat=Fal se)

form = forms [1]

formC "1014501x02·] =

self.accession

request2 = form.clickC)

# data format page

response2

= urllib2.urlopen(request2)

forms2 = ClientForm. ParseResponse(response2, form_parser_class=clientForm.XHTMLCompatibleFormParser , backwards_compat=Fal se)

form2 = forms2[0] assertC form2. control s [8] .attrs[' value'] == '2 I GT flat-file' ) form2. controls [8] .id = 'flatfile'

request3 = form2.click(id=' flatfile')

#

LIGM record results

response3 = urllib2.urlopen(request3)

# ghetto

parse of the results, the text of the LIGM record is in <pre>...</pre> tags rawdatal = response3. read()

rawdata2 =

rawdatal. split('<pre>') [1] .split('</pre>') [0] .IstripO

rawdata3 =

Stri nglO(rawdata2)

self. record = Seqio. read(rawdata3, 'imgt')

class

VReferenceEntry(ReferenceEntry) : vdj_package.txt

def init (self,**kw):

ReferenceEntry . init (sel , **kw)

def set_CDR3_boundary(self) : # FR3 end

"""Get coord of end of FR3 from IMGT LIGM database."""

# some records can have

multiple references in them

target_allele = self, allele

feature_iter =

self. record. features. iter ()

v_gene =

seqtool s.advance_to_features (feature_i ter, [ 'V-REGION' , 'v-GENE'])

whi 1 e

v_gene. qual if ers.getC allele' ,['']) [0] != target_allele: # advance to the target gene v_gene = seqtool s.advance_to_features (feature_i ter, ['V-REGION1 , 'v-GENE']) conserved_cys = seqtools.advance_to_feature(feature_iter, '2nd-CYS')

# note:

biopython features already use pythonic indexing

self. cdr3_boundary =

conserved_cys .1 ocati on . start . position

class JReferenceEntry(ReferenceEntry) :

def

i ni t (sel f , **kw) :

ReferenceEntry. init (self, **kw)

def

set_CDR3_boundary(self) : # FR4 start

"""Get coord of start of FR4 from IMGT LIGM

database."""

# some records can have multiple references in them target_allele = self. allele

feature_iter = self. record. features iter Q j_gene = seqtool s .advance_to_features (feature_i ter, [' J-REGION' , ' J-GENE'])

whi 1 e

_gene. qual ifiers.getC 'allele' ,['']) [0] != target_allele: # advance to the target gene vdi_package.txt

j_gene = seqtool s .advance_to_features(feature_iter , [ ' J -REGION ' , ' J -GENE ' ] ) #

note, there can be a conserved TRP or PHE

conserved_trp =

seqtool s.advance_to_features(feature_iter, [ ' J -TRP ' , 1 J - PHE ' ] )

# note:

biopython features already use pythonic indexing

self,cdr3_boundary =

conserved_trp. location .end. position

# ================

# = Parsing IMGT =

#

# import pdb

def

rocess_lMGT_references (ref_entry_cl s , fasta_i nfi 1 ename , pi ckl e_outfi 1 ename , verbose=Fa se):

"""Load references from the IMGT/V-QUEST fasta file refs

e.g., IGHV. fasta, present

in the data directory

ref_entry_cls is the class object for the reference type, e.g., VReferenceEntry , JReferenceEntry, etc.

# pdb. set_trace O references = []

ip = open(fasta_infil ename, ' r')

for record in

SeqiO.parseCip, 'fasta') :

curr_reference = ref_entry_cls()

curr_header =

record . descri ption

curr_seq - record. seq.tostri ngO

# Potential

problems with FASTA headers

try: curr_reference . i ni t_from_i mgt(curr_header , curr_seq) vdj_package.txt

except ValueError: warn ngs.warn("invalid header: %s" % curr_header)

continue

# I

don't want to deal with partial seqs right now

if 'partial' in

curr_reference. partial :

continue curpreference, pull_LlGM_recordO

# Potential problems with finding annotated CDR3

boundary

try:

curr_reference. set_CDR3_boundary()

except

AttributeError:

# ReferenceEntry has no set_CDR3_boundary. Used for D segments pass

except ValueError, e:

warnings.warn ("Failed to find CDR3

boundary in %s. Skipping..." % curpreference, allele)

continue references. append(curr_reference)

if verbose: print "Finished processing %s" %

curpreference . al 1 el e

sys.stdout.flushO

ip.closeO

op =

open (pi ckl e_outf 1 ename , 'w ' )

pi ckl e . dump(references , op, protocol=2)

op.closeQ return references

# setup. py

from numpy.distutils.core import setup, Extension

from

numpy.distutils.misc_util import get_numpy_include_dirs

alignmentcoreext = Extension(

"al gnmentcore" , vdj_package.txt

["alignmentcore.c"] , include_dirs = get_numpy_include_dirs() clusteri ngcoreext = ExtensionC

"clusteringcore",

["cluster ngcore.c"] ,

include_dirs = get_numpy_include_di rs()

)

setup ( name = "vdj",

version = Ό.1",

ext_modules =

[al i cjnmentcoreext , cl usteri ngcoreext]

Lots of scripts for performing vdj operations.

fasta2vdjxml .py Convert fasta file to vdjxml. Takes first white-space del im

field for descr

size_select.py Size select reads

vdjxml2parts.py

Split vdjxml file into parts

barcode_id.py Annotate barcode onto sequences

coding_strand.py Convert chains to coding sequence

i sotype_i d . py

Annote isotypes

align_vdj.py Perform vdj classification

cat_vdjxml .py

cat operation on vdjxml files (handles root elements)

filter_V3.py

Select only chains with v and J alignments

cluster_cdr3.py Perform hierarchical

clustering of ImmuneChai ns using their junctions

parti ti on_V3.py Partitions

vdjxml into f les by VJ combo

update_vdjxml .py update vdjxml from older version

to newer version

Older generation:

cluster_split_V3.py

cl uster_spl i t_VJ_LSF . py

f i 1 ter_tags_and . py

f i 1 ter_tags_not . py

f i 1 ter_tags_or . py

spl i t_on_tags . py

tag_chains.py vdj_package.txt vdj_ful l_pi pel i ne_LSF. py

vdjxml 2clone_counts . py

vd]xml2fasta.py

#! /usr/bin/env python

import sys

import optparse

import vdj

import vdj .alignment

parser =

optparse.OptionParserO

parser. add_option('-L' , '--locus' ,action=' append' ,dest (options, args) = parser. parse_args()

if 1 en(args) == 2:

i nhandle = open(args [0] , ' r ' ) outhandle = open(args [1] , 'w' )

elif len(args) == 1:

inhandle = open(args[0] , ' r ') outhandle = sys.stdout

elif 1 en(args) == 0:

inhandle = sys.std n

outhandle =

sys. stdout

else:

raise Exception, "wrong number of arguments." aligner =

vdj . al i gnment .vdj_al i gner_combi ned(1oci=options .1oc ) print »outhandle, "<root>"

for chain

in vdi .parse_VD3XML(i nhandl e) :

al igner . al i gn_chai n(chai n)

print »outnandle, chain

print »outhandle, "</root>"

#! /usr/bin/env python

import sys

import optparse

import

seqtool s

import vdj

import vdj. pipeline

parser = optparse. OptionParserO

parser. add_option('-b' , '--barcodes' ,dest='barcodes_fasta') (options, args) =

parser . parse_args() vdj_package.txt if 1 en (args) == 2:

inhandle = open(args[0] , ' r1)

outhandle =

open(args[l] , 'w')

elif len(args) == l:

inhandle = open(args[0] , ' r')

outhandle =

sys . stdout

elif len(args) == 0:

inhandle = sys.stdin

outhandle = sys. stdout

# NOTE:

all barcodes must be the same length

barcodes =

vdj . pi pel i ne .1 oad_barcodes Copti ons . barcodes_f asta)

# iterate through chains

print

»outhandle, "<root>"

for chain in vdj ,parse_VD3X L (inhandle) : vdj . pi pel i ne . i d_barcode(chai n , barcodes)

print »outhandle, chain

print »outhandle,

"</root>"

#! /usr/bin/env python

import sys

import optparse

import glob

import

vd . pi pel i ne

parser = optparse. OptionParserO

(options, args) = parser. parse_args()

files for arg in args:

f i Tes . extend (gl ob . gl ob (arg) )

vdj . pi pel i ne . cat_vdi xml (f i 1 es , sys . stdout)

#! /usr/bin/env python

import sys

import

optparse

import vdj

import vd] .clustering vdj_package.txt

parser = optparse.optionParserO

parser .add_opt onC'-c' , '--cutoff ,type= ' f1oat ' ,default=4.5)

parser .add_option('-t' , '--tag' ,default=' ')

parser .add_option('~l ' , '--linkage' ,type=' choice' ,choices=['single' , 'complete'] ,defau lt='sing

le')

(options, args) = parser .parse_args()

if 1 en(args) == 2:

inhandle =

open(args[0] , ' r')

outhandle = open(args[l] , 'w')

el if 1 en (args) == 1:

inhandle =

open(args [0] , 1 r *)

outhandle = sys.stdout

el if 1 en (args) == 0:

inhandle = sys.stdin outhandle = sys.stdout

# NOTE : this script requires there to be a well-defined junction

#

sequence. It raises an exception if not. Therefore, seqs

# must be

pre-filtered for having legit junctions

# NOTE: this script must hold all chains in memory

in order to

# perform the clustering and then assign cluster names

# load data

chains = []

junctions = []

for chain in vdj .parse_VDJXML(inhandle) :

# check for presence

of v. 3, and non-trivial junction

if not hasattr(chain, v') or not hasattr(chain, ' j ') or

not hasattr(chain, 'junction') :

raise valueError, "chain %s has no junction of v-J

aln." % chain. descr

chai ns . append(chai n)

juncti ons . append(chai n . junction)

# perform

the sequence clustering

(T,seq_idxs) =

vdj . cl usteri ng . cl uster_seqs(junctions , opti ons . cutoff, options .1 i nkage)

# tag chains with vdj_package.txt

unique cluster IDS

if options. tag == ' ' :

tag = "

else:

tag = options. tag+' I '

pri nt

»outhandle, "<root>"

for (i , chain) in enumerate(chains) :

clonelD = ' s s' %

(tag ,T[seq_i dxs [chai n . j unction] ] )

chain. clone = clonelD

print »outhandle, chain

print »outhandle, "</root>"

#! /usr/bin/env python

import sys

import optparse

import

subprocess

import time

import vdj

parser = optparse. OptionParserC)

parser. add_option('-c' , '--cutoff' ,default=4.5 ,type

(options, args) =

parser . parse_args()

if len(args) == 2:

i nhandl e = open(args[0] , ' r")

outname =

args[0]

outhandle = open(args[l] , 'w')

el if 1 en(args) == 1:

i nhandl e =

open(args[0] , ' r ')

outname = args[0]

outhandle = sys.stdout

el if 1 en (args) == 0: i nhandl e = sys.stdin

outname = 'vj_parts.vdjxml '

outhandle = sys.stdout

print

»sys.stderr, "NOTE: chains must be filtered for valid VD aln and junctions BEFORE clustering. "

(Vj_parts,vj_iDs) = vdj . spl it_vdjxml_into_Vj_parts(i nhandl e, outname)

Vj_parts_clustered = []

processes = []

for (vj_file,vj_id) in zip(Vj_parts,VJ_lDs) : vdj_package.txt vj_file_cl ustered = v _file + '.clustered'

VJ_parts_cl ustered .append (vj_fi 1 e_cl ustered) params = { 'cutoff : options. cutoff ,

'tag' :vj_id,

1 i nf i 1 e ' : v j_f i 1 e ,

' outf i 1 e ' : v j_f i 1 e_cl ustered}

cluster_cmd = r' python

cluster_cdr3 --cutoff %(cutoff)f --tag %(tag)s %Cinfile)s %(outfile)s' % params

P =

subprocess . Popen (cl uster_cmd , shel l=True)

processes . append (p)

# perform serially:

# vd . cl uster_cha ns(opti ons . cutoff , v j_i d , v j_f i 1 e , vj_f 1 e_cl ustered)

vdj .wait_for_subprocesses (processes)

for chain in

vdj . parse_VDJX L_parts(VJ_parts_cl ustered) :

print »outhandle, chain#! /usr/bin/env

python

import sys

import optparse

import subprocess

import os

import tempfile

import

vdj ' , 'complete'] ,defau

le')

parser. add_opti on C'-q' , '— queue1)

parse r.add_opti on ('-ο' , '--LSFoutput')

(options, args)

= parser. parse_args()

if 1 en (args) == 2:

inhandle = open(args[0] , ' r ')

outname =

args[0]

tempdi rname = args[l]

outhandle = open(args[l] , 'w')

el if 1 en (args) == 1: vdj_package .txt i nhandl e = open(args[0] , ' r')

outname = args[0]

tempdi rname = outname

outnandle =

sys . stdout

el if len(args) == 0:

i nhandl e = sys.stdin

outname = 'VJ_parts.vdjxml ' tempdi rname = outname

outhandle = sys .stdout

print »sys.stderr, "NOTE: chains must be

filtered for valid vj aln and junctions BEFORE clustering."

# temporary directory to dump

intermediate files

tempdi r =

tempfile.mkdtemp(prefix=tempdi rname+' .intermediate. ' ,di r=' . ')

(VJ_parts,VJ_lDs) =

vd j . spl i t_vd jxml_i nto_v:_parts (i nhandl e , os . path . joi n (tempdi r , outname) )

vj_parts_clustered =

le,vj_id) in zip(VJ_parts,VJ_lDs) :

e_clustered =

vj_file+' .clustered' # NOTE: vj_file already has directory prefi

VJ_parts_clustered.append(vj_file_clustered)

params = {'cutoff ' : opti ons. cutoff , kage' : opti ons. linkage,

'tag' :vj_ d,

"infile1 :vj_file,

' outf i 1 e ' : vj_f i 1 e_cl ustered}

cluster_cmd =

r 'cluster_cdr3.py --cutoff %(cutoff)f --tag %(tag)s --linkage %(linkage)s %(infil

%(outfile)s' % params

if os.stat(vj_file) ,st_size < 8e6:

joblD =

vd j . LSF . submi t_to_LSF(opti ons . queue , opti ons . LSFoutput , cl uster_cmd)

else:

joblD = vdj_package.txt

vdj . LSF . submi t_to_LSF(options . queue , opti ons . LSFoutput , cl uster_cmd , mem_usage=4096) jobs . append(joblD)

vd . LSF.wait_for_LSF_jobs(jobs)

for chain in

vdj .parse_VD3XMl parts(VJ_parts_cl ustered) :

print »outhandle, chain

#! /usr/bin/env

python

import sys

import optparse

import vdj

import d] .alignment

parser =

optparse . Opti onParserO

parser. add_opt on( ' -L' , '--locus' ,action=' append' ,dest='loci ')

(options, args) = parser. parse_args()

if 1 en (args) == 2:

inhandle = open(args [0] ,' r') outhandle = open(args[l] , 'w' )

el if 1 en (args) == 1:

inhandle = open(args [0] ,' r') outhandle = sys.stdout

el if 1 en (args) == 0:

inhandle = sys.stdin

outhandle =

sys . stdout

al i gner = vd . al i gnment .vd _al i gner_combi ned(1 oci=options .1 oci )

pr nt

»outhandle, "<root>"

for chain in vd .parse_VDJX L(inhandle) : al i gner . codi ng_chai n(chai n)

print »outhandle, chain

print »outhandle, "</root>"

#!

/usr/bin/env python

import sys

import optparse

import seqtools vdj_package.txt import vdj

parser =

optparse.optionParserO

(options, args) = parser. parse_args()

if len(args) == 2: inhandle = open(args[0] , ' r' )

outhandle = open(args [1] , 'w')

elif len(args) == 1: inhandle = open(args [0] ,' r')

outhandle = sys.stdout

elif 1 en (args) — 0:

inhandle =

sys . stdi n

outhandle = sys.stdout

vd . pipeline.fasta2vd xml (inhandle,outhandle) : #!

/usr/bin/env python

import sys

import optparse

import vdj

parser =

optparse.optionParserO

(options, args) = parser .parse_args()

if len(args) == 2: inhandle = open(args [0] ,' r')

outhandle = open (args [1] ,

elif len(args) == 1: inhandle = open(args [0] , ' r ')

outhandle = sys.stdout

elif 1 en (args) == 0:

inhandle =

sys . stdi n

outhandle = sys.stdout

print »outhandle, "<root>"

for chain in

vdj .parse_VDJXML(i nhandl e) :

if hasattr(chain, 'v') and hasattr(chain, ' j '): print

»outhandle, chain

print »outhandle, "</root>" vdj_package.txt

#! /usr/bin/env python

import sys

import

optparse

import vdj

parser = optparse. opti onParserO

parser. add_option(' -t' , ' --tag' ,action='append' .dest^tags') (options, args) =

parser .parse_args()

if len(args) == 2:

inhandle = open(args[0] , 1 r ')

outhandle =

open (args [1] , 'w')

elif 1 en (args) == 1:

inhandle = open(args [0] , ' r ')

outhandle »

sys . stdout

el f 1 en (args) -= 0:

inhandle = sys.stdin

outhandle = sys. stdout

uery_tags = set (options .tags)

or chain in vdj . parse_VD3X L(inhandle) :

if query_tags <=

cha n. all_tags:

print »outhandle, chain

#! /usr/bin/env python

import sys

mport

optparse

import vdj

parser = optparse.0ptionParser()

parser. add_opti on (' -t' , ' --tag' ,action=' append' ,dest=' tags ') (options, args) =

parser. parse_args()

if 1 en (args) == 2:

inhandle = open (args [0] , ' r')

outhandle =

open (args [1] , 'w')

elif 1 en (args) == 1:

inhandle = open (args [0] , 1 r')

outhandle =

sys . stdout

elif 1 en (args) == 0:

inhandle = sys.stdin

outhandle = sys. stdout vdj_package.txt empty_set = setO

?uery_tags = set(options.tags)

or chain in vd .parse_vl>;iXML (inhandle) : if query_tags & chain. all_tags = empty_set:

print »outhandle, chain

#!

/usr/bin/env python

import sys

import optparse

import vdj

parser =

optparse. OptionParserC)

parser .add_opti on (' -t' , '--tag' ,action=' append' ,dest='tags') (options, args) = parser. parse_argsO

if 1 en (args) == 2:

inhandle = open (args [0] , ' r') outhandle = open(args[l] , ' ')

el if 1 en (args) == l:

inhandle = open (args [0] , ' r ') outhandle = sys.stdout

el if 1 en (args) == 0:

inhandle = sys.stdin

outhandle =

sys . stdout

empty_set = set()

?uery_tags = set(options.tags)

or chain in

vdj . parse_VDJXML (i nhandl e) :

if query_tags & chain. all_tags != empty_set:

pr nt

»outhandle, chain

#! /usr/bin/env python

import sys

import warnings

import optparse

import seqtools

import vdj

import vd]. pipeline

parser = optparse. optionParser()

parser .add_opti on (' -i ' , '--IGHC' ,dest='ighc_fasta')

(options, args) = parser. parse_args()

if vdj_package.txt

1 en (args) == 2:

innandle = open(args[0] , ' r')

outhandle = open(args[l] , 'w')

el if

1 en (args) == 1:

innandle = open(args[0] , ' r')

outhandle = sys.stdout

el if len(args)

== 0:

i nhandl e = sys.std n

outhandle = sys.stdout

# load i sotypes

i sotypes =

vd j . pi pel i ne .1 oad_i sotypes (opti ons . i ghc_f asta) for chain in parse_VD3XML(i nhandl e) : vd . pi pel i ne . d_i sotypeCchai n , i sotypes)

print »outhandle, chain

#! /usr/bin/env

python

import sys

import optparse

import seqtools

import vd

parser =

optparse . opti onParser ()

parser . add_opti on (' -b' , '— basename')

(options, args) =

parser. parse_argsO

if 1 en (args) == 1:

i nhandl e = open (args [0] , 1 r ')

el if 1 en (args) —

0:

i nhandl e = sys.stdin

# NOTE: this script ignores the allele numbers vdi . pi pel i ne . parti ti on_V3 (i nhandl e , opti ons . basename)

# ase name for all data files

basename

# input files (full paths)

input_fasta # the initial fasta data

barcode_fasta

# barcode identifiers

isotype_fasta # isotype identifiers vdj_package.txt

# working directories

analysis_dir # full path; base directory for everythin

# analysis parameters

mi n_si ze

max_si ze

packet_size

loci

#! /usr/bin/env python

import sys

import optparse

import

vdj

parser = optparse. OptionParserC)

parser.add_option('-m' , '--min' ,type=' nt' ,default=0)

parser. add_opti on ('- ' , '—max' ,type='int' ,default=float('inf '))

(options, args) =

parser . parse_args()

if len(args) == 2:

inhandle = open (args [0] ,' r')

outhandle =

open(args[l] , 'w')

el if len(args) == 1:

inhandle = open (args [0] , ' r')

outhandle =

sys.stdout

el if len(args) = 0:

inhandle = sys.stdin

outhandle = sys.stdout

print

»outhandle, "<root>"

for chain in vdj .parse_VDJXML(inhandle):

if 1 en (chain) >=

options. min and 1 en (chain) <= options. max:

print »outhandle, chain

print

»outhandle, "</root>"

#! /usr/bin/env python

import sys

import optparse

import os

import vdj_package.txt vdj

parser = optparse.OptionParserO

parser .add_opti on(' -t' , ' --tag' ,action=' append' ,dest='tags') (options, args) =

parser . parse_args()

if len(args) == 1:

inname = args[0]

nhandle =

open(args[0] , 'r')

else:

raise Exception, "Need a single input file."

(basename.ext) ~

os . path . spl i text(i nname)

basename - os.path.basename(basename)

outhandles = {}

for tag in

options. tags:

outname = basename-t-' . '+vdj .sequti Is. cleanup_id(tag)+ext outhandles [tag] = open(outname, 'w')

uery_tags = set(options .tags)

or chain in

vd .parse_VDJX L(inhandle) :

try:

tag - (query_tags & chain.all_tags) .pop() print »outhandles[tag] , chain

except KeyError:

continue

for handle in

outhandles. itervaluesO :

handle. close()

#! /usr/bin/env python

import sys

mport

optparse

import vdj

parser = optparse.OptionParserO

parser.add_option (' -t' , '--tag' ,action=' append' ,dest='tags') (options, args) =

parser. parse_args()

if 1 en (args) == 2:

inhandle = open (args [0] r') vd _package.txt outhandle =

open(args[l] , ' ')

el if len(args) == 1:

i nhandl e = open(args[0] , ' r')

outhandle =

sys . stdout

elif len(args) == 0:

i nhandl e = sys.stdin

outhandle = sys. stdout

for

chain in vdj . parse_VD3XML(i nhandl e) :

chai n . add_tags(options . tags)

print »outhandle,

chain

#! /usr/bin/env python

import sys

import vdj

import vdj .legacy

if len(sys.argv) ==

3:

i nhandl e = open(sys. argv [1] , ' r')

outhandle = open(sys.argv[2] , 'w')

elif

elif

1 en (sys. argv) == 1:

inhandle = sys.stdin

outhandle = sys. stdout

for chain in

vd .legacy.parse_VDJX L_old(inhandle) :

print »outhandle, chain

#! /usr/bin/env

python

import os

import lsf

import seqtools

import vdq

import vdj .pipeline

join =

os. path. join

# PARAMETER DEFINITION vdj_package.txt

# process jobfile for input parameters

# defines the

following variables:

# basename # unique base identifier for data #

input„fasta # the initial fasta data

# barcode_fasta # barcode identifiers

#

sotype_f asta # isotype identifiers

# anal ysi s_dir # full path; base directory for everything

# min_size # min size selection

# max_size # max size

selection

# packet_size # packet size for alignment jobs

# loci # the

loci to use for VD_i aln

# working directories

parts_dir = 'parts'

log_dir = 'logs'

parti ti on_d r = 'partitions'

# output files

raw_vdjxml = basename+' . raw. vdjxml '

al i gned_f i 1 e = basename+ ' . al i gned . vd j xml '

vj_riltered_file =

basename+' .V_i_filtered. vdjxml 1

size_selected_file = basename + '.size%i-%i' %

(mi n_size,max_size) + '.vdjxml'

locus_options = ' '.join([' — locus %s' % locus for in loci .splitQ])

# PIPELINE STARTS HERE

# 0. CONVERSION TO VDJXML

# 1. SIZE

SELECTION

inhandle = open (i nput_f asta, ' r")

outhandle =

open ( j oi n (anal ysi s_di r , si ze_sel ected_f i 1 e) ,

# iterate through fasta entries

for vdj_package.txt

(descr,seq) in seqtools.Fastalterator(-inhandle, lambda d

# convert to

immunecha n

chain - vdj . immunecha n(descr=descr, seq=seq)

# size select

if

1 en(chain) < options.mi n or 1 en(chain) > options.max:

continue

print

»outhandle, chain

inhandle.close()

outhandle.closeO

# 2. SPLIT INTO PARTS

inhandle =

open(join(anal ysis_di r,size_selected_f le) , 1 r')

parts = vdj .pipeline.iterator2parts(

vdj . parse_VDJXML(inhandle) , join(analysis_di r ,parts_di r, size_selected_file) , packetsize,

prefix='<root> ' , suffi x=' </root> ' )

cmd = 'barcode_id —barcodes %s ' % barcode_file

BARCODE IDENTIFICATION

cmd += 1 I codi ng_strand' + locus_options CODING

STRAND

if ' IGH 1 in loci : ISOTYPE ID (heavy chain only)

cmd +- ' I sotype_id —IGHC ¾s" % i sotype_.fi 1 e

cmd += 1 I align_vd]' +

locus_options # 6. VDJ CLASSIFICATION

# submit cmd to LSF for each part

jobiDs = []

logfiles = []

outnames = []

for part in parts:

partiD = part.splitC . ') [-1] partoutname = basename+' .prealign.vdjxml . '+partlD

outnames . append(partoutname) vdj_package.txt

cmd = 'cat %s I ' + and + ' > %s'

and = cmd % (part,partoutname)

logf le =

jo n (anal ys i s_di r , 1 og_di r , ' p real i gn .1 og . ' ) +partlD

joblD =

1 sf . submi t_to_LSF( ' shared_2h ' , logf i 1 e, cmd)

logfiles .append (logfile) i oblDs . append ( j oblD)

1 sf . wai t_f or_LSF_jobs ( joblDs , 1 ogf i 1 es)

# 7. CONCAT PARTS

outhandle =

open ( j oi n (anal ysi s_di r, ali gned_file) , 'w')

vd j . pi pel i ne . cat_vd jxml (outnames , outhandl e)

outhandl e . cl ose ()

# 8. FILTER VJ

inhandle = open (join (anal ysi s_di r, ali gned_f i 1 e), 'r')

outhandle = open (join (anal ysi s_di r, j_f i 1 tered_f i 1 e) ,

print »outhandle, "<root>

for

chain in vdj .parse_VDDXML(inhandle) :

if hasattr(chain, ' ') and hasattr (chain, 'j ') : print »outhandle, chain

print »outhandle, "</root>"

inhandle. closeO

outhandle. closeQ

######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## ######################################################################## vdj_package.txt

########################################################################

########################################################################

This is analys s

of 454 data generated from the second vaccination experiment

from the second individual. I

believe this data comes from Ido.

The raw data is located at vd -ome/raw-seq-data/454/raw_20100927_f1 u2/

with the relevant files D_anal ysi S/*GAC* . fna

I am concatenating these files into a single FASTA file located here vdj -ome/stabl e-data/raw_f1 u2_20100927/

using this command:

cat *GAC*.fna >

~/research/chu rch/vd -ome/stabl e-data/raw_f1 u2_20100927/heavy_chai ns . f1 u2.20100927. f asta

from the di rectory

vdi-ome/raw-seq-data/454/raw_20100927_flu2/RD_analys s/

The file is

called:

heavy_chai ns . f1 u2.20100927. fasta

The initial read length histograms are

generated in this script:

runstats.py

The output s:

Number of reads: 912388

Shortest read: 40 bp

Longest read: 600 bp

along with two figures which show a

very tight peak at ~455 bp.

The figure suggests size cutoffs of 395 to 520 bp.

1.

fasta2vdjxml . py

2. size_select.py

First I convert the fasta file to vdj ml , and,

Size select the reads based on the readlen hist, 395-520, vdj_package.txt

(from

/home/ul 2/vdj -ome/stabl e-data/raw_f 1 u2_20100927) :

python ~/code/vdj/bin/fasta2vdjxml .py

heavy_chains.flu2.20100927. fasta | python ~/code/vdj/bin/s ze_select.py --min 395 --max 520

> heavy_cha ns.flu2.20100927. s ze395-520.vdjxml

There are 902805 chains of the selected

size in the file.

3. vdjxml2parts.py

Split vdjxml into small chunks and place in

working directory

mkdi r ~/vdj -ome/analysi s/flu2_seq_pi pel ine/data

python

~/code/vdj/bin/vdjxml2parts.py --packetsize 10000 —basename

~/vdj -ome/analysi s/f 1 u2_seq_pi pel i ne/data/heavy_chai ns . f 1 u2.20100927. si ze395-520. vdj xml

heavy_chai ns . f 1 u2.20100927. si ze395-520. vdjxml

Change directory to all the parts:

cd

~/vdj -ome/analysi s/f 1 u2_seq_pi pel i ne/data

4. barcode_id.py

5. coding_strand.py identify barcodes for each read, and

Determine whether we have the correct strand or

not

Ensure the barcode fasta file is correctly referenced,

for FILE in

heavy_chai ns . f 1 u2.20100927. si ze395-520. vdjxml . * ; do

NAME=${FILE%. si ze*}" . preal ign . vdjxml . "${FILE#* . vdjxml . *}

# echo $NAME

bsub

-qshared_2h -o pre-alignment.log "python ~/code/vdj/bin/barcode_id.py --barcodes ~/vdj -ome/stabl e-data/barcodes/lDT.454. rapid.MiDs.fasta $FILE | python

~/code/vdj/bin/coding_strand.py --locus IGH > $NAME" vdj_package.txt done

# python

~/code/vd /bi n/barcode_i d . py --barcodes

~/vdj -ome/stabl e-data/barcodes/lDT.454. rapi d . MIDS . fasta

# python

~/code/vd /bin/coding_strand.py --locus IGH

Some STATS:

# Num of chains

cat

*prealign* | grep "<lmmunechain>" | wc -1

902805

# Num with barcodes

cat

*prealign* | grep "<barcode>" | wc -1

882978

# Num that were

reverse-compl emented

cat *prealign* | grep "revcomp" | wc -1

434034

#

Barcode breakdown

for NUM in 13 14 15 16 17 18 19 20 21 22; do

cat *prealign* |

grep "<barcode> L0$NUM" | wc -1

done

RL013 18255 2.1%

RL014 96568

10.9%

RL015 88732 10.0%

RL016 80088 9.3.%

RL017 79637

RL018 97962 11.1%

RL019 223744 25.3%

RL020 60479

6.8%

RL021 73613 8.3%

RL022 63900 7.2%

6. al i gn_vdj . py

for

FILE in heavy_chai ns.flu2.20100927. preal i gn. vdj xml . vdj_package.txt

NA E=${ FILE% . preal i gn*} " . vdj xml . " ${ FILE#* . vcTjxml . *}

# echo $NAME

bsub

-qshared_12h -o alignment.log python ~/code/vdj/bin/a ign_vd .py --locus IGH $FILE

$NAME done

7. cat_vdjxml .py

# concat data and dump into parent dir

python

~/code/vdj/bin/cat_vdjxml .py heavy_chains.flu2.20100927. vdjxml .* >

.. /heavy_chai ns . f 1 u2.20100927. al i gned . vdjxml

cd ..

8. filter_VJ.py

python

~/code/vdj/bi n/fi 1 ter_VJ . py heavy_chai ns . f 1 u2.20100927. al i gned . vdjxml

heavy_chai ns . f 1 u2.20100927. VJ_fi 1 tered . vdj xml

grep "<lmmuneChain>"

heavy_chai ns.flu2.20100927. VJ_fil tered. vdjxml | wc -1

749069 for NUM

in 13 14 15 16 17 18 19 20 21 22; do

grep "<barcode>RL0$NUM"

heavy_cha ns.flu2.20100927. VJ_fil tered. vdjxml | wc -1

done

RL013 12809

1.7%

RL014 84053 11.4%

RL015 77583 10.6%

RL016 70310

9.6%

RL017 69649 9.5%

RL018 85832 11.7%

RL019 172655

23.5%

RL020 47802 6.5%

RL021 62478 8.5%

RL022 50969

6.9%

9. parti ti on_VD .py vd _package.txt

mkd r partitions

python ~/code/vdj/bin/partition_vj .py

--basename parti ti ons/heavy_chai ns . f 1 u2.20100927

heavy^chai ns . f 1 u2.20100927. V3_f i 1 tered . vd jxml

cd partitions

# How many chains in

each partition?

for FILE in heavy_chains.flu2.20100927. *.vd xml

grep

"<lmmunechain>" $FILE | wc -1

done I sort -n

partial results:

14270

14383

16067

16215

16817

22472

31988

51680

10. cluster_cdr3.py

for INFILE in heavy_chai ns.flu2.20100927. *. d jxrnl ;

do

VJID==${INFILE#heavy_chai ns . f 1 u2.20100927. }

3 ID=$ { V 3 ID% . vd j xm I }

OUTFILE=${INFILE . vd jxrnl } . cl ustered . vd j xml

# echo $VJID $OUTFILE

bsub

-qshared_unlim ted -o clustering.log python ~/code/vdj/bin/cluster_cdr3.py --cutoff 4.5

--tag $VJID --linkage single $INFILE $OUTFILE

done

##############################################################################

##############################################################################

############################################################################## vdj_package.txt

##############################################################################

##############################################################################

# How

long did it take?

grep "CPU" clustering.log | sort

partial results:

CPU time : 2476.57 sec

CPU time : 2537.17 sec

CPU

: 2897.51 sec.

CPU time : 2958.58 sec

CPU time : 3086.20

sec.

CPU time : 4735.64 sec.

CPU time : 5885.87 sec.

CPU

time : 6538.90 sec.

CPU time : 7931.02 sec.

CPU time : 16996.05

sec.

CPU time : 34048.12 sec.

11. cat_vdjxml .py

python

~/code/vdj/bin/cat_vdjxml .py heavy_chains. GMC.20100907.*. clustered. vdj xml > .. /heavy_chai ns . GMC .20100907. cl ustered . vd xml

cd ..

# How many chains?

grep

"<lmmunechain>" heavy_chai ns . GMC .20100907. cl ustered . vdj xml | wc -1

793698

# How

many unique clones in total?

grep "<clone>" heavy_chains. GMC.20100907. clustered. vdjxml |

sort I uniq | wc -1

401970

# How many unique junctions in total?

grep

vdj_package.txt

parser. add_option(' -b' , '--barcodes' ,dest='barcodes_fasta')

parser.add_option('-i ' , '--IGHC' ,dest='ighc_fasta')

parser. add_option('-m' , '--min' ,type='int')

parser. add_opti on (' -M' , '--max' , type= ' i nt ' )

(options, args) = parser. parse_args()

if len(args) == 2:

i nhandl e = open (args [0] , 1 r') outhandle = open(args[l] , 'w')

el se:

raise Exception, "Must have an input file and

output file."

# temporary directory to dump intermediate files

tempdi r =

tempfile.mkdtemp(prefix=args[l] + ' .intermediate.1 ,di r=' . ')

os .chdi r (tempdi r)

cmdl =

'fasta2vdjxml . py'

cmd2 = 'size_select.py --min %d --max d' % (opti ons. min, opti ons. max)

cmd 3

= 'vdjxml2parts.py --packetsize %d --basename %s' % (options. packetsize,args[l]) cmd = ' I

' . join([cmdl,cmd2,cmd3])

P =

subprocess . Popen (cmd , shel 1 =True , stdi n=i nhandl e , stdout=subprocess . PIPE) parts = [f.stripO

for f in p.stdout.readlinesO]

outparts = [part+'.out' for part in parts]

cmd4 = r"'cat

%s'

cmd5 = 'barcode_id.py --barcodes %s" % (options . barcodes_fasta)

cmd 6 =

' posi ti ve_strand . py '

cmd7 = ' i sotype_i d . py --IGHC %s' % (opti ons. ighc_fasta)

cmd 8 =

r ' al i gn_vd . py > %s " '

cmd = ' I "* .ioin([cmd4,cmd5 ,cmd6,cmd7,cmd8])

jobs = []

for

part, outpart in zip(parts .outparts) :

joblD =

vd . LSF . submi t_to_LSF (opti ons . queue , opti ons . LSFoutput , cmd % (part , outpart) ) obs . append (joblD)

vdj . LSF. wait_for_LSF_jobs( obs) vdj_package.txt

file_list = ' ' . join(outparts)

subprocess.Popen('cat ' + f le_list, shell=True,stdout=outhandle) #! /usr/bin/env python

import sys

import optparse

import numpy as np

import vdj

parser =

optparse .Opti onParserO

Coptions, args) = parser .parse_argsO

if len(args) == 2: inhandle = open(args [0] ,' r')

outhandle = open(args[l] , 'w')

elif len(args) == 1: inhandle = open(args [0] , ' r1)

outhandle = sys.stdout

elif 1 en(args) == 0:

inhandle =

sys . stdin

outhandle = sys.stdout

counts_dict = vdj .get_clone_counts(inhandle)

counts =

vdj . count_di ct_cl one_counts (counts_di ct)

for count in counts:

print »outhandle,

np.int_(count)

#! /usr/bin/env python

import sys

import optparse

import vdj

parser =

optparse. OptionParser()

(options, args) = parser ,parse__args()

if 1 en(args) == 2: inhandle = open(args[0] , 1 r')

outhandle = open(args[l] , '

elif 1 en (args) == 1: inhandle = open(args[0] , ' r ') vd _package.txt outhandl e = sys.stdout

el if len(args) == 0:

i nhandl e =

sys.stdin

outhandl e = sys.stdout

vdj . d xml 2f asta( nhandl e , outhandl e)

#! /usr/bin/env

python

mport sys

import optparse

import vdj

import vd]. pipeline

parser =

optparse. OptionParserC)

parser .add_option(' -b' , '--basename')

parser. add_opti on (' -p' , '--packetsize' ,type='int')

(options, args) = parser. parse_args()

if

len(args) == 1:

innandle = open(args[0] , ' r ')

elif len(args) == 0:

i nhandl e =

sys.stdin

else:

raise Exception, "Too many arguments."

parts =

vd . pipeline. iterator2parts( vdj .parse_VD3X L(i nhandl e) , opti ons . basename ,

opti ons . packetsi ze , prefix='<root>' , suf f i x= ' </root> ' )

for part in parts:

print part

#include <Python.h>

#include

<numpy/arrayobject .

#include <stdlib.h>

// DEBUG

//#include <stdio.h

int arrayargmaxC vdj_package.txt double *data, int n ) {

int maxidx, curidx ;

for ( maxidx = 0, curidx = 1 ; curidx <

n ; curidx++ ) {

if ( data[curidx] > data[maxidx] ) {

maxidx = curidx ;

}

}

return maxidx ;

}

void alignNWC PyArrayObject * , PyArrayObject *lx,

PyArrayObject *ly, PyArrayObject *BT,

const char *seql, const int lenl, const char *seq2, const int len2) {

// define parameters

double match = 0.5 ; double mismatch =

double gapopen

double gapextend int nrows = lenl + 1 ;

int ncols = len2 + 1 ;

int i , j ;

double

* ij, *Mimljml, *Mimlj, * ijml ;

double *lxij, *lximljml, *lximlj ;

double *lyi j ,

*lyimljml, *lyijml ;

int *BTij ;

double s ;

double ext[3] ;

double

IXGO, IxGE, IyGO, IyGE ;

int best ;

for C = 1 ; < nrows ; i++ ) { for C j = 1 ; j < ncols ; j++ ) {

Mi j =

Cdoubl e*) PyAr ray_GETPTR2 CM, i,j) ;

Ixij = Cdoubl e*)PyArray_GETPTR2Cix, i ,j) iyij = Cdoubl e*) PyAr ray_GETPTR2Ciy, ,j) ; vd _package.txt

Mi ml j ml =

(doubl e*) PyArray_GETPTR2 (M , i -1, j -1)

Iximljml =

(doubl e*) PyArray_GETPTR2 (ix , -1 , j -1)

iyimljml =

(doubl e*) pyAr ray_GETPTR2 (ly , i -1, j -1)

Mimlj = (double*) PyAr ray_GETPTR2( ,i-l, j)

Mijml = (doubl e*) PyArray_GETPTR2(M, i ,j-l) ; ixi ml j =

(doubl e*) PyA r ray_GETPTR2 (ix , i -1 , j) ;

lyi ml = (double*) PyAr ray_GETPTR2(ly,i , j-1)

BTij = (int*)PyArray_GETPTR2(BT,i , j) ;

s = (seql[i-l]

== seq2[j-l]) ? match : mismatch ;

ext[0] = *Mimljml + s ;

ext[l] =

*lximljml + s ;

ext[2] = *lyimljml + s ;

ixGO = *Mimlj + gapopen ixGE = *lximlj + gapextend ;

iyGO = *Mijml + gapopen ; iyGE = *lyijml + gapextend ;

best = arrayargmax(ext,3) ;

*M j = ext[best] ;

*IXlj = (IXGO >= IXGE) ? IXGO : IXGE ;

*lyi = (IyGO >= IyGE) ? IyGO : IyGE ;

*BTij = best ; // 0 =

(i-l,j-l) ; 1 = (i-l,j) ; 2 = (i,j-l)

// DEBUG

//printfC'charl: %c\tchar2; %c\tmatch? %d\ts: %f\tM: %f\tlx: %f\tBT: %i \n" , seql[i -1] , seq2 [ j -1] , seql[i -1] ==seq2 [ -1] , s , *Mi j , *lxi j , *BTi j) ;

} return ; vdj_package.txt void alignswC PyArrayObject *F, PyArrayObject *BT,

const char

*seql, const int lenl, const char *seq2, const int len2) { // define parameters double match = 0.5 ;

double m smatch = -0.75 ;

double gapextend = -1.5 ;

int nro s = lenl + 1 ;

int ncols = len2 + 1 ;

int i , j ;

double *Fi j ,

*Fimljml, *Fiml , *Fijml ;

int *BTij ;

double s ;

double ext[4] ;

int

best ;

for C i = 1 ; i < nrows ; i++ ) {

for C j = 1 ; j < ncols ; j++ ) {

Fij = (double*)PyArray_GETPTR2(F,i , j) ; Fiml ml =

(doubl e*) PyArray_GETPTR2 (F , i -1, j-1) ;

Fimlj

(doubl e*) PyArray_GETPTR2(F , i -1 , j) ;

Fijml = (double*) PyArray_GETPTR2(F, i ,j-l)

BTij = (int*) PyArray_GETPTR2(BT,i , j) ; s =

(seql[i-l] == seq2[j-l]) ? match : mismatch ;

ext[0] = *Fimljml + s ; ext[l] = *Fimlj + gapextend ;

ext[2] = *Fijml + gapextend ;

ext[3]

= 0 ;

best = arrayargmax(ext,4) ;

*Fij =

ext[best] ; vdj_package.txt

*BTij = best ; // 0 = (i-l,j-l) ; 1 = (1-1, j) ; 2 = (i.j-l) ; 3 =

END (0)

// DEBUG

//printfC'charl: %c\tchar2: c\tmatch?

%d\ts: %f\tF: %f\tBT: i\n" , seql[i -1] ,seq2[j-l] ,seql[i-l]==seq2[j-l] ,s,*Fi j ,*BTi

}

}

return ;

}

static Pyobject *alignmentcore_alignNW( Pyobject *self, PyOb ect

*args ) {

char *seql, *seq2 ;

int lenl, 1en2 ;

pyArrayobject *M, *ix, *iy, *BT

// get sequence args

if C !PyArg_parseTuple(args,"OOOOs#s#",

&ix

&BT,

&seql, &lenl,

&seq2, &len2) ) {

return NULL ;

}

// call function

alignNWC M, ix,

Iy, BT, seql, lenl, seq2, len2 ) ;

return Py_Buildvalue( "d", 0.0 ) ;

// wrapper

functions

static Pyobject *alignmentcore_alignsw( pyobject *self, yobject *args ) { char *seql, *seq2 ;

int lenl, len2 ;

PyArrayob ect *F,

// get

sequence args vdj_package.txt if ( !PyArg_ParseTuple(args,"OOs#s#",

&F,

&BT,

&seql, &lenl,

&seq2, &len2) ) {

return NULL ;

}

// call function

alignswC F,

BT, seql, lenl, seq2, len2 ) ;

return py_Bu ldvalue( "d", 0.0 ) ; stati c

PyMethodDef alignitientcoremethods[] = {

{ "al i gnNW" , al i gnmentcore_al i gnNW ,

METH_VARARGS} ,

{"alignsw", alignmentcore_alignsw, METH_VARARGS}

} ;

void

initalignmentcoreO {

Py_lnitModule( "alignmentcore" , alignmentcoremethods ) ; import_arrayO ;

}

// clusteringcore.c

// Defines cTusteringcore python extension module

#include <Python.h>

#include <numpy/arrayobject.h>

// DEBUG

//#include <stdio.h>

int

intarrayminC int *data, int n ) {

int i , minval ;

for ( minval = data[0], i = 1 ; i

< n ; i++ ) {

if ( data[i] < minval ) {

minval = data[i] ;

}

}

return minval ;

}

static pyobject *clusteringcore_levenshtein( pyobject *self, vdj_package.txt pyobject *args ){

char *seql, *seq2 ;

int lenl, len2 ;

npy_intp dim [2] ;

int int cost, best ;

int ext[3] ;

PyArrayObject *scores = ULL ;

//

get sequence args

if ( !PyArg_ParseTuple(args,"s#s#",

&seql,

&lenl,

&seq2, &len2) ) {

return NULL ;

}

//

check for trivial case

if ( lenl == 0 | | len2 == 0 ) {

return Py_BuildValue(

"i", (lenl < len2 ? Ien2 : lenl) ) ;

}

// allocate and initialize score matrix dim[0] = lenl+1 ;

dim[l] = len2+l ;

scores = (PyArrayOb ect *)PyArray_ZEROS(

2, dim, NPY_INT, 0 ) ;

if (scores == NULL) return NULL ;

for ( i = 0, j = 0 ; i

<= lenl ; i++ ) {

*( (i nt*) PyArray_GETPTR2 (scores , , j) ) for ( i = 0,

j = 0 ; j <= len2 ; j++ ) {

*C(i nt*) PyArray_GETPTR2(scores , , j ) )

// compute DP score matrix

for ( i = 1 ; i <= lenl ; i++ ) {

for ( j = 1 ; j <=

len2 ; j++ ) {

cost = (seql[i-l] == seq2[j-l]) ? 0 : 1 ; vdj_package.txt

ext[0] = * C(int*)PyArray_GETPTR2 (scores, i-l.j-D) + cost ;

ext[l] =

*((int*)PyArray_GETPTR2(scores,i-l, j)) + 1 ;

ext[2] =

*((int*)PyArray_GETPTR2(scores, ,j-l)) + 1 ;

*C(int*)PyArray_GETPTR2(scores,i , j)) = intarraymin(ext, 3) ;

} }

best =

* ( (i nt*) PyA r r ay_G ETPTR2 (scores , 1 enl , 1 en2) ) ;

Py_DECREF (scores) ;

return

Py_Buildvalue( "i", best ) ;

}

stat c PyMethodDef c"lusteringcoremethods[] = {

{"levenshtein", clusteringcorejlevenshtein, METH_VARARGS} } ;

PyMODINIT_FUNC

initclusteringcoreO {

Py_ln tModule "clusteringcore" , clusteringcoremethods ) ; import_array() ;

Claims

CLAIMS What is claimed is:
1. A method for determining an immune state of a biological sample comprising the steps of:
obtaining a biological sample;
obtaining nucleic acid sequences encoding lymphocyte receptors from the biological sample; and
performing high-throughput sequencing of the amplified nucleic acid sequences to determine a plurality of sequences representing the immune state of the biological sample.
2. The method of claim 1, wherein the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy.
3. The method of claim 1, wherein the biological sample is obtained from an individual.
4. The method of claim 3, wherein an immune state of the individual is determined.
5. The method of claim 1 , further comprising the step of amplifying the nucleic acid sequences encoding lymphocyte receptors prior to the step of high-throughput sequencing.
6. The method of claim 5, wherein primers specific to heavy chain or light chain nucleic acid sequences are used for the amplifying step.
7. The method of claim 1 , further comprising the step of obtaining lymphocytes from the biological sample prior to the step of purifying.
8. The method of claim 7, wherein the lymphocytes are T cells, B cells or a combination thereof.
9. The method of claim 1, wherein the nucleic acid sequences encode one or more of V regions, D regions, J regions and combinations thereof.
10. The method of claim 9, wherein the V regions, D regions, J regions and combinations thereof are heavy chain or light chain.
11. The method of claim 1 , wherein the nucleic acid sequences are DNA or RNA.
12. The method of claim 11 , wherein the RNA is mRNA.
13. The method of claim 1, further comprising the step of comparing the immune state of the individual to a control sample to diagnose a disease or a disorder.
14. The method of claim 13, wherein the disease or disorder is selected from the group consisting of an infection, an autoimmune disorder, a cellular proliferative disorder and any combination thereof.
15. The method of claim 1, wherein the plurality of sequences includes at least one common nucleic acid sequence.
16. A method for monitoring the affect of an agent on an immune state of a biological sample comprising the steps of:
obtaining a first biological sample;
isolating lymphocytes from the first biological sample;
purifying a first set of nucleic acid sequences encoding lymphocyte receptors; performing high-throughput sequencing of the purified first set of nucleic acid sequences to provide a first reference library;
obtaining a second biological sample;
contacting the second biological sample with an agent;
isolating lymphocytes from the second biological sample;
purifying a second set of nucleic acid sequences encoding lymphocyte receptors;
performing high-throughput sequencing of the purified second set of nucleic acid sequences to provide a second reference library; and
comparing the sequences of the first reference library and the second reference library to monitor the affect of an agent on an immune state of the biological sample.
17. The method of claim 16, wherein the agent is selected from the group consisting of an antigen, a vaccine, a drug, a small molecule, a biologic and any combination thereof.
18. The method of claim 16, wherein the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy.
19. The method of claim 16, wherein the biological sample is obtained from an individual.
20. The method of claim 19, wherein an immune state of the individual is determined.
21. The method of claim 19, wherein the individual is afflicted with a disease or disorder selected from the group consisting of an infection, an autoimmune disorder, a cellular proliferative disorder and any combination thereof.
22. The method of claim 16, wherein efficacy of the agent for treating a disease or a disorder is determined.
23. The method of claim 16, wherein a prognosis for treating a disease or a disorder is determined.
24. The method of claim 16, wherein the sequencing steps are performed simultaneously.
25. The method of claim 16, wherein multiple samples are obtained over a time course.
26. The method of claim 25, wherein the steps of isolating, purifying and performing high-throughput sequencing are performed for each of the multiple samples obtained over the time course.
27. A method for monitoring an immune response of a biological sample comprising the steps of:
obtaining a first biological sample at a first point in time;
isolating lymphocytes from the first biological sample;
purifying a first set of nucleic acid sequences encoding lymphocyte receptors;
performing high-throughput sequencing of the purified first set of nucleic acid sequences to provide a first reference library;
obtaining a second biological sample at a second point in time;
isolating lymphocytes from the second biological sample;
purifying a second set of nucleic acid sequences encoding lymphocyte receptors;
performing high-throughput sequencing of the purified second set of nucleic acid sequences to provide a second reference library; and
comparing the sequences of the first reference library and the second reference library to track an immune response in a biological sample.
28. The method of claim 27, wherein the immune response is against an agent selected from the group consisting of an antigen, a vaccine, a drug, a small molecule, a biologic and any combination thereof.
29. The method of claim 27, wherein the sequencing steps are performed simultaneously.
30. The method of claim 27, wherein multiple samples are obtained over a time course.
31. The method of claim 30, wherein the steps of isolating, purifying and performing high-throughput sequencing are performed for each of the multiple samples obtained over the time course.
32. The method of claim 27, wherein a disease or disorder diagnosis is determined.
33. The method of claim 27, wherein the biological sample is selected from the group consisting of blood, saliva, synovial fluid, cultured cells, a tissue section and a biopsy.
34. The method of claim 27, wherein the biological sample is obtained from an individual.
35. The method of claim 34, wherein the immune state of the individual is determined.
PCT/US2011/055801 2010-10-08 2011-10-11 High-throughput immune sequencing WO2012048340A3 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US39133710 true 2010-10-08 2010-10-08
US61/391,337 2010-10-08

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CA 2814047 CA2814047C (en) 2010-10-08 2011-10-11 High-throughput immune sequencing
EP20110831760 EP2625295A4 (en) 2010-10-08 2011-10-11 High-throughput immune sequencing
US13878400 US20130296535A1 (en) 2010-10-08 2011-10-11 High-Throughput Immune Sequencing
GB201308243A GB2498163B (en) 2010-10-08 2011-10-11 High-throughput immune sequencing

Publications (2)

Publication Number Publication Date
WO2012048340A2 true true WO2012048340A2 (en) 2012-04-12
WO2012048340A3 true WO2012048340A3 (en) 2012-06-21

Family

ID=45928499

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2011/055801 WO2012048340A3 (en) 2010-10-08 2011-10-11 High-throughput immune sequencing

Country Status (5)

Country Link
US (1) US20130296535A1 (en)
EP (1) EP2625295A4 (en)
CA (1) CA2814047C (en)
GB (1) GB2498163B (en)
WO (1) WO2012048340A3 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8507205B2 (en) 2008-11-07 2013-08-13 Sequenta, Inc. Single cell analysis by polymerase cycling assembly
US8628927B2 (en) 2008-11-07 2014-01-14 Sequenta, Inc. Monitoring health and disease status using clonotype profiles
US8691510B2 (en) 2008-11-07 2014-04-08 Sequenta, Inc. Sequence analysis of complex amplicons
US8748103B2 (en) 2008-11-07 2014-06-10 Sequenta, Inc. Monitoring health and disease status using clonotype profiles
WO2014144495A1 (en) * 2013-03-15 2014-09-18 Abvitro, Inc. Single cell bar-coding for antibody discovery
WO2014189768A1 (en) * 2013-05-19 2014-11-27 The Board Of Trustees Of The Leland Devices and methods for display of encoded peptides, polypeptides, and proteins on dna
US9043160B1 (en) 2009-11-09 2015-05-26 Sequenta, Inc. Method of determining clonotypes and clonotype profiles
US9150905B2 (en) 2012-05-08 2015-10-06 Adaptive Biotechnologies Corporation Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions
US9181590B2 (en) 2011-10-21 2015-11-10 Adaptive Biotechnologies Corporation Quantification of adaptive immune cell genomes in a complex mixture of cells
WO2016044227A1 (en) * 2014-09-15 2016-03-24 Abvitro, Inc. High-throughput nucleotide library sequencing
US9365901B2 (en) 2008-11-07 2016-06-14 Adaptive Biotechnologies Corp. Monitoring immunoglobulin heavy chain evolution in B-cell acute lymphoblastic leukemia
US9499865B2 (en) 2011-12-13 2016-11-22 Adaptive Biotechnologies Corp. Detection and measurement of tissue-infiltrating lymphocytes
US9506119B2 (en) 2008-11-07 2016-11-29 Adaptive Biotechnologies Corp. Method of sequence determination using sequence tags
US9528160B2 (en) 2008-11-07 2016-12-27 Adaptive Biotechnolgies Corp. Rare clonotypes and uses thereof
WO2017053905A1 (en) * 2015-09-24 2017-03-30 Abvitro Llc Affinity-oligonucleotide conjugates and uses thereof
WO2017053906A1 (en) 2015-09-24 2017-03-30 Abvitro Llc Hiv antibody compositions and methods of use
US9708657B2 (en) 2013-07-01 2017-07-18 Adaptive Biotechnologies Corp. Method for generating clonotype profiles using sequence tags
US9809813B2 (en) 2009-06-25 2017-11-07 Fred Hutchinson Cancer Research Center Method of measuring adaptive immunity
US9824179B2 (en) 2011-12-09 2017-11-21 Adaptive Biotechnologies Corp. Diagnosis of lymphoid malignancies and minimal residual disease detection
WO2018011584A1 (en) * 2016-07-13 2018-01-18 Genome Research Limited Kit for amplifying immunoglobulin sequences
WO2017210469A3 (en) * 2016-06-01 2018-03-15 F. Hoffman-La Roche Ag Immuno-pete
WO2018067618A1 (en) 2016-10-03 2018-04-12 Juno Therapeutics, Inc. Hpv-specific binding molecules

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2652155B1 (en) 2010-12-16 2016-11-16 Gigagen, Inc. Methods for massively parallel analysis of nucleic acids in single cells
US9150852B2 (en) * 2011-02-18 2015-10-06 Raindance Technologies, Inc. Compositions and methods for molecular labeling
GB201203720D0 (en) * 2012-03-02 2012-04-18 Babraham Inst Method of identifying VDJ recombination products
CA2906805A1 (en) * 2013-03-15 2014-09-18 Theranos, Inc. Nucleic acid amplification
US9416387B2 (en) 2013-03-15 2016-08-16 Theranos, Inc. Nucleic acid amplification
WO2015035260A1 (en) 2013-09-06 2015-03-12 Theranos, Inc. Systems and methods for detecting infectious diseases
US9422547B1 (en) 2015-06-09 2016-08-23 Gigagen, Inc. Recombinant fusion proteins and libraries from immune cell repertoires

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070161001A1 (en) * 2004-03-04 2007-07-12 Dena Leshkowitz Quantifying and profiling antibody and t cell receptor gene expression
US20100151471A1 (en) * 2008-11-07 2010-06-17 Malek Faham Methods of monitoring conditions by sequence analysis

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1516929A3 (en) * 2003-09-18 2006-06-07 Symphogen A/S Method for linking sequences of interest
EP2314619A1 (en) * 2005-12-05 2011-04-27 Symphogen A/S Anti-orthopoxvirus recombinant polyclonal antibody
JP2010534057A (en) * 2007-03-06 2010-11-04 シムフォゲン・アクティーゼルスカブSymphogen A/S Recombinant antibodies for the treatment of respiratory syncytial virus infection
CA2638833A1 (en) * 2006-03-06 2007-09-13 Symphogen A/S Recombinant polyclonal antibody for treatment of respiratory syncytial virus infections
CN101622346A (en) * 2007-03-01 2010-01-06 西福根有限公司 Method for cloning cognate antibodies

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070161001A1 (en) * 2004-03-04 2007-07-12 Dena Leshkowitz Quantifying and profiling antibody and t cell receptor gene expression
US20100151471A1 (en) * 2008-11-07 2010-06-17 Malek Faham Methods of monitoring conditions by sequence analysis

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9523129B2 (en) 2008-11-07 2016-12-20 Adaptive Biotechnologies Corp. Sequence analysis of complex amplicons
US8628927B2 (en) 2008-11-07 2014-01-14 Sequenta, Inc. Monitoring health and disease status using clonotype profiles
US8691510B2 (en) 2008-11-07 2014-04-08 Sequenta, Inc. Sequence analysis of complex amplicons
US8748103B2 (en) 2008-11-07 2014-06-10 Sequenta, Inc. Monitoring health and disease status using clonotype profiles
US8795970B2 (en) 2008-11-07 2014-08-05 Sequenta, Inc. Methods of monitoring conditions by sequence analysis
US9416420B2 (en) 2008-11-07 2016-08-16 Adaptive Biotechnologies Corp. Monitoring health and disease status using clonotype profiles
US8507205B2 (en) 2008-11-07 2013-08-13 Sequenta, Inc. Single cell analysis by polymerase cycling assembly
US9365901B2 (en) 2008-11-07 2016-06-14 Adaptive Biotechnologies Corp. Monitoring immunoglobulin heavy chain evolution in B-cell acute lymphoblastic leukemia
US9347099B2 (en) 2008-11-07 2016-05-24 Adaptive Biotechnologies Corp. Single cell analysis by polymerase cycling assembly
US9528160B2 (en) 2008-11-07 2016-12-27 Adaptive Biotechnolgies Corp. Rare clonotypes and uses thereof
US9512487B2 (en) 2008-11-07 2016-12-06 Adaptive Biotechnologies Corp. Monitoring health and disease status using clonotype profiles
US9217176B2 (en) 2008-11-07 2015-12-22 Sequenta, Llc Methods of monitoring conditions by sequence analysis
US9228232B2 (en) 2008-11-07 2016-01-05 Sequenta, LLC. Methods of monitoring conditions by sequence analysis
US9506119B2 (en) 2008-11-07 2016-11-29 Adaptive Biotechnologies Corp. Method of sequence determination using sequence tags
US9809813B2 (en) 2009-06-25 2017-11-07 Fred Hutchinson Cancer Research Center Method of measuring adaptive immunity
US9043160B1 (en) 2009-11-09 2015-05-26 Sequenta, Inc. Method of determining clonotypes and clonotype profiles
US9279159B2 (en) 2011-10-21 2016-03-08 Adaptive Biotechnologies Corporation Quantification of adaptive immune cell genomes in a complex mixture of cells
US9181590B2 (en) 2011-10-21 2015-11-10 Adaptive Biotechnologies Corporation Quantification of adaptive immune cell genomes in a complex mixture of cells
US9824179B2 (en) 2011-12-09 2017-11-21 Adaptive Biotechnologies Corp. Diagnosis of lymphoid malignancies and minimal residual disease detection
US9499865B2 (en) 2011-12-13 2016-11-22 Adaptive Biotechnologies Corp. Detection and measurement of tissue-infiltrating lymphocytes
US9150905B2 (en) 2012-05-08 2015-10-06 Adaptive Biotechnologies Corporation Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions
US9371558B2 (en) 2012-05-08 2016-06-21 Adaptive Biotechnologies Corp. Compositions and method for measuring and calibrating amplification bias in multiplexed PCR reactions
US9816088B2 (en) 2013-03-15 2017-11-14 Abvitro Llc Single cell bar-coding for antibody discovery
GB2525568A (en) * 2013-03-15 2015-10-28 Abvitro Inc Single cell bar-coding for antibody discovery
WO2014144495A1 (en) * 2013-03-15 2014-09-18 Abvitro, Inc. Single cell bar-coding for antibody discovery
WO2014189768A1 (en) * 2013-05-19 2014-11-27 The Board Of Trustees Of The Leland Devices and methods for display of encoded peptides, polypeptides, and proteins on dna
US10011830B2 (en) 2013-05-19 2018-07-03 The Board of Trustee of theLeland Stanford junior University Devices and methods for display of encoded peptides, polypeptides, and proteins on DNA
US9708657B2 (en) 2013-07-01 2017-07-18 Adaptive Biotechnologies Corp. Method for generating clonotype profiles using sequence tags
WO2016044227A1 (en) * 2014-09-15 2016-03-24 Abvitro, Inc. High-throughput nucleotide library sequencing
WO2017053905A1 (en) * 2015-09-24 2017-03-30 Abvitro Llc Affinity-oligonucleotide conjugates and uses thereof
WO2017053906A1 (en) 2015-09-24 2017-03-30 Abvitro Llc Hiv antibody compositions and methods of use
WO2017210469A3 (en) * 2016-06-01 2018-03-15 F. Hoffman-La Roche Ag Immuno-pete
WO2018011584A1 (en) * 2016-07-13 2018-01-18 Genome Research Limited Kit for amplifying immunoglobulin sequences
WO2018067618A1 (en) 2016-10-03 2018-04-12 Juno Therapeutics, Inc. Hpv-specific binding molecules

Also Published As

Publication number Publication date Type
CA2814047A1 (en) 2012-04-12 application
EP2625295A4 (en) 2014-04-23 application
GB201308243D0 (en) 2013-06-12 grant
WO2012048340A3 (en) 2012-06-21 application
GB2498163A (en) 2013-07-03 application
CA2814047C (en) 2017-11-14 grant
US20130296535A1 (en) 2013-11-07 application
GB2498163B (en) 2015-07-01 grant
EP2625295A2 (en) 2013-08-14 application

Similar Documents

Publication Publication Date Title
Gansauge et al. Single-stranded DNA library preparation for the sequencing of ancient or damaged DNA
Georgiou et al. The promise and challenge of high-throughput sequencing of the antibody repertoire
Jensen et al. Widespread variation in transcript abundance within and across developmental stages of Trypanosoma brucei
US20130005585A1 (en) Nucleic acid encoding reactions
US20130116130A1 (en) Digital Counting of Individual Molecules by Stochastic Attachment of Diverse Label-Tags
US20110207135A1 (en) Methods of monitoring conditions by sequence analysis
Mardis Next-generation sequencing platforms
US20110053787A1 (en) Compositions and Methods of Detecting Post-Stop Peptides
Rizzi et al. Ancient DNA studies: new perspectives on old samples
Cronn et al. Targeted enrichment strategies for next‐generation plant biology
Orlando et al. True single-molecule DNA sequencing of a pleistocene horse bone
Lind et al. Next-generation sequencing: the solution for high-resolution, unambiguous human leukocyte antigen typing
US7901889B2 (en) Molecular redundant sequencing
US20140121116A1 (en) System and Methods for Detecting Genetic Variation
US20130150252A1 (en) Detection and measurement of tissue-infiltrating lymphocytes
Li et al. Multi-platform assessment of transcriptome profiling using RNA-seq in the ABRF next-generation sequencing study
US20130079231A1 (en) Methods for obtaining a sequence
US20140051588A9 (en) Sequencing Small Amounts of Complex Nucleic Acids
WO2012083069A2 (en) Measurement and monitoring of cell clonality
Gawad et al. Massive evolution of the immunoglobulin heavy chain locus in children with B precursor acute lymphoblastic leukemia
Hafner et al. Genome-wide identification of miRNA targets by PAR-CLIP
WO2012148477A1 (en) Digital counting of individual molecules by stochastic attachment of diverse label-tags
EP2088432A1 (en) Methods for identification of an antibody or a target
US20140315725A1 (en) Sequence analysis of complex amplicons
WO2011139372A1 (en) Sequence analysis of complex amplicons

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 11831760

Country of ref document: EP

Kind code of ref document: A2

DPE1 Request for preliminary examination filed after expiration of 19th month from priority date (pct application filed from 20040101)
ENP Entry into the national phase in:

Ref document number: 2814047

Country of ref document: CA

NENP Non-entry into the national phase in:

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 1308243.3

Country of ref document: GB

ENP Entry into the national phase in:

Ref document number: 1308243

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20111011

WWE Wipo information: entry into national phase

Ref document number: 13878400

Country of ref document: US