1 of 59

Sample sheets & sequencing data QC

2 of 59

Setting up & QC a sequencing run

  1. Create sample sheet
    1. Modify an existing sample sheet
    2. Use Illumina Experiment Manager (only when using all-Illumina kits)
  2. Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  3. QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  4. Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  5. Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

3 of 59

Create sample sheet

  • Sample sheets:
    • Record experiment identifiers
    • List data analysis workflows that sequencer needs to perform
    • Provide all data required to demultiplex sequencing data
      • Sample names
      • Specific barcode sequences associated to each sample
        • When using Illumina library prep and index kits, you just need the kit and plate/well IDs of the index adapters added to each sample and use Illumina Experiment Manager to generate the sample sheet (index/barcode sequences will be pulled automatically, but can also be found here)
        • When using non-Illumina indexes or barcodes, you’ll need to make your own sample sheet listing your custom indexes/barcodes

4 of 59

Create sample sheet from a template - Example here, Illumina guidelines here

This will be the name of your sequencing run on BaseSpace.

For workflows that use dual indexing (Nextera, TruSeq Custom Amplicon, ..), this field is required (enter amplicon). For non-indexed/single-indexed TruSeq RNA or TruSeq DNA libraries, leave blank.

REQUIRED. This must match an official analysis workflow as set by Illumina. GenerateFASTQ tells it to just generate FASTQ files and not do more analyses.

# cycles to perform for read 1 (read length)

# cycles to perform for read 2, for paired-end runs (read length)

Optional fields that CZ Biohub uses internally, not required

Indexes or barcodes are usually 8 bp long, if you use custom longer indexes/barcodes you need to mention it here (if so, remember to also reduce the number of cycles for read 1 and 2 accordingly: e.g. for 12 bp barcodes, you need to reduce read1 and read2 cycles to 146 each (to account for the 4 extra cycles used per to detect each longer index).

5 of 59

[Data] section (Biohub)

Study_description: Description of a project to which the current sequencing run belongs. Special characters and commas are not allowed. (Required)

BioSample_ID: A short ID assigned to the specific biological sample based on the conventions used at your institution/group. Accepted characters include numbers,

letters, "-", and "_".

Biosample_Description: Description (longer than 10 characters) of the specific biological sample. The description should be the same for all the samples derived from this BioSample. Special characters and commas are not allowed. (Required)

Sample_ID: A short ID assigned to the specific library. Accepted characters include numbers, letters, "-", and "_". Sample_ID must begin with a letter. This field should be unique for each row. Sample_ID can be the same as Sample_Name. If so, fastq files will be demultiplexed into the same folder. Otherwise, fastq files belonging to the same library will be demultiplexed into a folder whose name is Sample_ID (Required)

Sample_Name: A distinct and descriptive name for each specific library. Accepted characters are numbers, letters, "-", and "_". Name must begin with a letter. This field should be unique for each row. Sample_Name will become the final fastq file names. (Required)

Sample_Owner: This column is used to keep track of to whom each library belongs to. Please fill in following the format FirstName_LastName. (Required)

Index_ID and Index2_ID: Name of the first or second index. Accepted characters are numbers, letters, "-", and "_". This field is left blank only when the number of libraries in pool is 1 and index read lengths are 0. (Required)

Index and Index2: Sequence of the first index. This field is left blank only when the number of libraries in pool is 1 and index read lengths are 0. (Required)

Organism: This field is used to record the organism the DNA comes from. Some examples are Human, Mouse, Mosquito, Yeast, Bacteria, etc. For individual species, please spell out the entire scientific name. Special characters are not permitted. (Required)

[Data] section lists sample names and index/barcode sequences.

For GenerateFASTQ workflows, the following 4 columns are required for MiSeq sample sheets (see guide here):

  • Sample_ID,
  • Sample_Name,
  • Index
  • Index2

Make sure the sample sheet is saved as a .csv file!!

6 of 59

Create sample sheet using Illumina Experiment Manager

  1. Open Illumina Experiment Manager
  2. Click on Create Sample Sheet
  3. Choose your instrument (e.g. MiSeq), and click ‘Next,
  4. Under ‘Select Category’, choose ‘Other’
  5. Under ‘Select Application’, choose ‘FASTQ Only’
  6. Click ‘Next’ to get to ‘Sample Sheet Wizard - Workflow Parameters’.
  7. Fill in all fields as required
    1. Make sure to select the correct ‘Library Prep Workflow’ and ‘Index Adapters’ kits that you used.
    2. Adjust ‘Read Type’ and ‘Cycles read 1/2’ depending on your sequencing kit that will be used. E.g. when using a 300 cycles kit, you can select paired end and request 150 (or 151) cycles per read.
    3. Under FASTQ Only Workflow-Specific Settings, only ‘Use Adapter Trimming’ should be selected for both reads if applicable
  8. Click ‘Next’ to get to ‘Sample Sheet Wizard - Sample Selection’

Important note: If you use index adapters or barcodes from a source other than Illumina, you have to make your own sample sheet by modifying an existing sample sheet, and cannot use Illumina Experiment Manager.

This is where we tell the machine that all we need is the FASTQ files with the read data, no other analyses required.

7 of 59

Create sample sheet using Illumina Experiment Manager

9. Create a New Sample Plate: click on ‘New Plate’

  1. In the pop-up window, provide a unique Plate Name and click on ‘Next’ Fill in Sample
  2. A table will appear, you can edit each cell
  3. In the column ‘Index Well’, you can select the well/tube ID that you took the index from for each specific sample, and the index1 and index2 sequences will appear automatically
  4. Click on ‘Finish’ and Save the plate file upon request

10. Under Sample Plate, click on ‘Select All’ and then ‘Add Selected Samples’

11. Check if all is correct !!

  1. Make sure that each sample has the correct index assigned (mistakes will cause sample mixups).
  2. If there is an error (e.g. duplicated barcodes or so), Sample Sheet Status will be ‘Invalid’ and the Reason will be displayed below in red.

12. When finished, click ‘Finish’ to save the sample sheet.

Crucial step

8 of 59

Example MiSeq sample sheet generated through Illumina Experiment Manager

Automatically added based on Index Adapters kit that was selected

General tracking info about the run

This tells the machine which type of analysis to perform on the data

Library prep kit and Index adapters kit used

For GenerateFASTQ workflows, ‘Amplicon’ needs to be entered in this field

9 of 59

Setting up & QC a sequencing run

  • Create sample sheet
    • Modify an existing sample sheet
    • Use Illumina Experiment Manager (only when using all-Illumina kits)
  • Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  • QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  • Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  • Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

10 of 59

Setting up & QC a sequencing run

  • Create sample sheet
    • Modify an existing sample sheet
    • Use Illumina Experiment Manager (only when using all-Illumina kits)
  • Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  • QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  • Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  • Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

11 of 59

How to QC a sequencing run in BaseSpace

  • BaseSpace is software to:
    • Evaluate sequencing run QC metrics
    • Store data
    • Analyze data
    • Share data

  • Sign up for a standard free BaseSpace account here
    • Limited data storage
    • Online & real-time sequencing run monitoring
    • Online sequencing run QC

12 of 59

How to QC a sequencing run in BaseSpace

  • Is the sequencing data of good quality? (%PF, avg%Q30)

  • Was the run overclustered or underclustered? (%Occupied)

  • Did the run perform as expected? (% base per cycle, %PhiX, %error rate)

  • Was the library that I loaded of good quality
    • Adapter dimers (%base per cycle)
    • Length (%base per cycle, %PhiX)
    • Pooling (%reads identified per sample)
    • Concentration (%Occupied)

  • How many reads did the sequencing run generate? (Reads PF)

  • Did demultiplexing occur properly? (%Undetermined, %reads identified per sample)

13 of 59

What is overclustering/underclustering?

A cluster is a clonal group of a library fragment generated in the first step of sequencing. Each cluster should ideally yield one (paired-end) read.

Overclustering = too much material was loaded on the flow cell, making that the resulting clusters are too close to each other. When overclustered, the sequencer cannot properly distinguish one cluster from another, leading to mixed signals and many reads failing the initial QC filter (low % PF). The high level of signal due to overclustering will also cause difficulties for the sequencer to properly focus. This high background signal will reduce base call quality (low %Q30).

Underclustering = a low amount of material was loaded on the flow cell. This reduces the number of clusters and therefore also reads the sequencing run will generate. Underclustering generally does not affect Q30.

Overclustering is worse than underclustering!

14 of 59

How to QC a sequencing run in BaseSpace

After logging into BaseSpace, Click on ‘Runs’ to view a list of all your runs.

Click on a Run Name to see it’s metrics.

15 of 59

How to QC a sequencing run in BaseSpace

16 of 59

How to QC a sequencing run in BaseSpace

  • AVG%Q30 = percentage of reads that have bases with an average quality score >Q30
    • Ideally AVG%Q30 >90%, but >70% is good too
    • If <70%: evaluate why the quality is lower than expected. Possible reasons:
      • Overclustering: too much material was loaded on the flow cell
      • Adapter dimers: these will yield reads with only ~70bp of good signal, and the rest low quality ‘nothingness’.

  • %PF = percentage of passed filter reads = reads based on a cluster of a single molecule
    • Ideally >70%, but >50% is good too
    • If <50%, check for indications of over-of under-clustering

17 of 59

How to QC a sequencing run in BaseSpace

Click on ‘Charts’ to view the QC charts

18 of 59

How to QC a sequencing run in BaseSpace

Flow Cell Chart: select % occupied under ‘Chart’

-> Signs of overclusterig or underclustering?

  • Best range for values is 90-98%

  • >98%: possible overclustering, which will reduce %PF and AVG%Q30 scores. Review library quantification data to check for errors or consider reducing the loading quantity for the next sequencing runs.

  • <90%: Review library quantification data to check for errors or consider increasing the loading quantity for the next sequencing runs to get more reads from a run.

19 of 59

How to QC a sequencing run in BaseSpace

Data by cycle chart: select % Base under ‘Chart’ -> Adapter dimers? Short fragments?

Read 1 = 150 cycles

Read 2 = 150 cycles

Index ✕2

20 of 59

How to QC a sequencing run in BaseSpace

Data by cycle chart: select % Base under ‘Chart’ -> Adapter dimers? Short fragments?

Read 1 = 150 cycles

Read 2 = 150 cycles

Index ✕2

Variation in beginning of reads is normal

Signal around 25% (if 50%GC content)

Lower sequence diversity of indexes causes larger peaks

21 of 59

How to QC a sequencing run in BaseSpace

Average signal for GC and AT can differ based on GC content, but overall GCAT signal average should be 25%

22 of 59

How to QC a sequencing run in BaseSpace

Increase in G signal at end of reads

Issue 1 - short reads: Increase in G signal at end of reads

  • G is the “dark base” is iSeq/MiSeq chemistry

  • Continuous increase in G indicates no bases detected for subsequent cycles
  • Inserts shorter than 150 bp?
  • Issue with elongation of strands during clustering?

  • If insert size was indeed shorter than usual (check lib prep QC), reduce fragmentation time for future!

23 of 59

How to QC a sequencing run in BaseSpace

The first ~30 bases are the first portion of the illumina adapter, followed by heterogeneity from the barcode sequences (8-12 bases), followed by the last ~30 bases of the adapter. Then a large spike in the ‘dark’/no signal base ‘G’.

Issue 2 - adapter dimers: Large peaks for first 70 cycles, and then an increase in G signal

  • Adapter dimers will yield reads with low sequence variation (large peaks) that are about 70 bp long

  • Adapter dimers are short fragments and thus get preferentially sequenced, taking up valuable sequencing space

  • Crucial to remove ALL adapter dimers during library prep QC !!

Adapter dimers being sequenced

24 of 59

How to QC a sequencing run in BaseSpace

Issue 3 - adapter dimers and short reads: Large peaks for first 70 cycles followed by more stable signal and then a steady increase in G signal

  • Adapter dimers will yield reads with low sequence variation (large peaks) that are about 70 bp long

  • Adapter dimers are short fragments and thus get preferentially sequenced, taking up valuable sequencing space

  • Crucial to remove ALL adapter dimers during library prep QC !!

Adapter dimers being sequenced

25 of 59

How to QC a sequencing run in BaseSpace

On the ‘Metrics’ page (if using PhiX)

  • Per Read Metrics:
  • % aligned (PhiX): should be close to % of PhiX that you spiked in.
    1. If it’s higher, PhiX outcompeted your library, meaning you put less library in than you thought (double check your pooling and quantification calculations).
    2. If it’s lower than expected, small fragments like adapter dimers might have outcompeted PhiX AND/OR you underestimated the quantity of material in your sample (added way more than you thought, double check your quantification data).
  • Error rate % (PhiX): should be less than 1%.
  • Per Lane Metrics:
  • Reads PF: number of passed filter reads that were generated in this run. This should be close to (or over) the minimum number of guaranteed reads that your sequencer is advertised to generate. If lower, you probably under- or overclustered. Check your quantification calculations and adjust the loading concentration if needed.

26 of 59

How to QC a sequencing run in BaseSpace

27 of 59

Scroll down to ‘Per Lane Metrics’

Number of paired end reads that were generated

28 of 59

How to QC a sequencing run in BaseSpace

On the ‘Indexing QC’ page:

  1. % read identified = reads with identified barcodes: should be >80% (the higher the better). If this % is low, you should check to make sure your sample sheet assigned the correct index/barcode sequences for each sample.

  • % reads undetermined = reads without an associated known barcode. If this % is high, you should check to make sure your sample sheet was correct.

  • PF reads: this number details the amount of (unpaired) single end reads. This number is always double than your true amount of paired-end reads shown on the ‘Metrics’ page.

29 of 59

How to QC a sequencing run in BaseSpace

...

...

...

...

If correctly pooled, all samples should have more or less the same # of reads assigned

30 of 59

How to QC a sequencing run in BaseSpace

  • A high % of undetermined reads and missing samples (samples with no reads assigned) indicate an issue with demultiplexing!

    • Double check the sample sheet to verify if the correct barcodes were assigned to each sample.

    • Look at the barcodes sequences identified for ‘undetermined reads’ listed in DemuxSummaryF1L1.txt, if there is barcode combination (paired end) that occured in a high number of reads, it might be an unidentified sample.

Info on finding troubleshooting and finding the demux file in BaseSpace here

-How to edit sample sheet and requeue in Basespace here

Info on finding troubleshooting and finding the demux file using Local Run Manager here

Info on finding troubleshooting and finding the demux file using MiSeq Reporter here

-How to edit sample sheet and requeue using MiSeq Reporter here

31 of 59

Setting up & QC a sequencing run

  • Create sample sheet
    • Modify an existing sample sheet
    • Use Illumina Experiment Manager (only when using all-Illumina kits)
  • Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  • QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  • Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  • Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

32 of 59

How to QC a sequencing run in Sequence Analysis Viewer

Find Illumina Sequence Analysis Viewer Software Guide here

Same QC metric principles as described for BaseSpace apply!

33 of 59

How to QC a sequencing run in Sequence Analysis Viewer

After opening Sequence Analysis Viewer, click on ‘Browse’ and select the appropriate Run folder to view it’s metrics.

34 of 59

How to QC a sequencing run in Sequence Analysis Viewer

In the Flow Cell Chart, click on the arrow to display the ‘% Occupied’ data instead of ‘Intensity’.

Determine if the optimal amount of library was loaded onto the flow cell. Are there any signs of over/under clustering?

The % Occupied ranges here from 71 to 76. This indicates minor underclustering. This does not necessarily affect sequence quality, but it does reduce the maximum yield of data that can be obtained from a sequencing run. For the next sequencing run the researchers can load more material on the flow cell (provided that the same quantification protocol is being used) to generate more sequencing data from a single run .

For iSeq runs:

35 of 59

How to QC a sequencing run in Sequence Analysis Viewer

In the ‘Data by Cycle’ graph, select ‘% Base’ to determine if you had any adapter dimers, short fragments or potentially other issues.

36 of 59

How to QC a sequencing run in Sequence Analysis Viewer

Click on the ‘Summary’ tab to view how many reads were generated, and if the % aligned and the error rate are within the expected range.

% aligned should be similar to %PhiX that was spiked in

Error rate (%) should be <1.0

Cluster Count PF (M) shows how many paired-end passed filter reads were generated (in this case 5.03 million PF reads)

37 of 59

How to QC a sequencing run in Sequence Analysis Viewer

Click on the ‘Indexing’ tab to view metrics on demultiplexing.

% Undetermined reads = 100 – ‘%Reads Identified (PF)’

(= 9.07% in this example)

Check if all samples are equally represented (and none are missing)

38 of 59

Setting up & QC a sequencing run

  • Create sample sheet
    • Modify an existing sample sheet
    • Use Illumina Experiment Manager (only when using all-Illumina kits)
  • Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  • QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  • Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  • Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

SARS-CoV-2 only

for now

39 of 59

Check out the CZ ID help center for guides on how to QC and visualize consensus genomes

CZ ID will generate the consensus genomes and will allow you to view QC metrics in CZ ID itself! Follow the guide in the link above.

Alternatively, you can also download the consensus genome and the related QC files from CZ ID (see next slides).

Three major questions:

  • Coverage depth?
  • Coverage breadth (=coverage length)?
  • How many gaps?

40 of 59

Coverage plots

Coverage-plots folder

Coverage depth: on average, how many reads cover each base in the genome?

Coverage breadth: how much of the genome has enough coverage depth to perform base calls?

Two gaps with 0x coverage

3 regions with <10x coverage, will show up as gaps in IDSEQ

No coverage at beginning and end of genome is normal

Coverage plot sample 1

Coverage plot sample 2

~200x depth on average

~35000 x depth on average

41 of 59

QUAST/*sample*/report.txt

Total length of the consensus genome should be close to the size of the SC2 genome = 29,903 bp

% of the genome that is covered (coverage breadth), should be >95%

Good coverage breadth!

42 of 59

call_consensus-stats/combined.stats.tsv

Sample a1 had 36,897x coverage (7,851,663 mapped reads)

Sample a2 had 238x coverage (52,383 mapped reads)

43 of 59

Setting up & QC a sequencing run

  • Create sample sheet
    • Modify an existing sample sheet
    • Use Illumina Experiment Manager (only when using all-Illumina kits)
  • Set up sequencing run & upload sample sheet (MiSeq & iSeq instructions)
  • QC sequencing run
    • Use BaseSpace (only if sequencer has internet connection)
    • Use Sequence Analysis Viewer (runs locally, no internet required, Windows only)
  • Upload FASTQ files to the CZ ID consensus genome pipeline and QC genomes
  • Upload consensus genomes to Nextclade for variant QC & preliminary phylogeny

44 of 59

QC sequences and identify SNVs, gaps and lineage calls in Nextclade.

  1. Upload combined fasta file containing the consensus genomes on https://clades.nextstrain.org/
  2. Follow the detailed CZ ID guide on how to view and QC samples in Nextclade

45 of 59

Nextclade - upload combined fasta file on https://clades.nextstrain.org/

Visualisation of identified mutations and gaps

46 of 59

Nextclade - upload combined fasta file on https://clades.nextstrain.org/

Missing bases

Ambiguous bases

Mutations vs

ref genome

Lineage call

QC results (see next slide)

(water control)

47 of 59

Nextclade: Phylogenetic-based sequence QC

Number of sites where a base could not be called: Areas with low or no sequencing coverage have no information to tell you which base should be at that site. These sites are labelled with N’s. When a sequence has two many N’s it is both hard to align and place on the tree, and thus they are removed from analyses. By default Nextstrain will drop sequencuences with less than 27,000 non ambiguous bases.

Mixed sites: If many sequencing reads support more than one base at a site, those sites will be designated with an IUPAC ambiguity code, that tells you which set of mutations were found at the site. While this can happen given a co-infection event, it more commonly occurs due to sample cross-contamination.

Private mutations: If a sequence differs from the Wuhan reference genome by (currently) more than 20 mutations, it will be flagged as having a high number of “private” mutations. The threshold for flagging a sequence as problematic will be changed as the diversity of SARS-CoV-2 increases over the pandemic.

Clusters of mutations: If your sequence has one or more areas with 6 mutations within a 100nt wide window, then that will be considered a “cluster of mutations” and it will be flagged unless it occurs at a recognized area of the genome. Such clusters of mutations are often artefactual, resulting from challenges aligning the sequence.

48 of 59

Troubleshooting too many N’s

  • option to resequence, but should take into account Ct value.
  • can concatenate fastq files prior to CZ ID upload to double the coverage
  • double check sequencing metrics- was this a successful run?

N

Raw Reads Aligned to Reference

Reference Genome

Consensus Sequence

NNNN

Gap

pipeline requires >10 reads to call a base

49 of 59

Troubleshooting ‘mixed sites’

  • Potential causes: host infected by multiple variants (rare) or contamination
  • Contamination check:
    • Check plate map & barcodes used-> shared bardcodes may cause bleedover during sequencing.
  • Our pipeline is stringent, can check bam file to see if any bases are confidently called (ie 89% one base and 11% another).

M

Raw Reads Aligned to Reference

Reference Genome

Consensus Sequence

C

M

pipeline requires a base to be >90% present to be called

50 of 59

Troubleshooting private mutations

  • If there are too many private mutations- viewing the bam file can help.
  • What to look for:
    • High coverage in that location all of the reads showing the same base call = good sign it that mutation is real
    • Low coverage and/or reads with different base calls = could be sign of mutations due to contamination

Raw Reads Aligned to Reference

Reference Genome

Consensus Sequence

A

C

C

G

P

51 of 59

Troubleshooting clusters of mutations

C

Raw Reads Aligned to Reference

Reference Genome

Consensus Sequence

(100 bp)

A

C

C

G

A

G

T

C

G

A

A

C

52 of 59

Frameshift mutations

  • happen when there are there are deletions or insertions that affect the open reading frames
  • Align the consensus genome back to the reference genome
  • Check the open reading frames
    • You can do this in BLAST- make sure the ORFs are correct
    • If they are not, have a closer look at the alignment and check out the insertion or deletion.
  • Can check bam file

53 of 59

  • Cross contamination
    • Always have water controls! Negative controls also good to have
    • Normal to see a handful of SARS-CoV-2 reads in controls -- but be concerned if recovering full amplicons, this is a sign of contamination.
    • Plate maps -- where are the low Ct samples?

Other QC checks

54 of 59

Nextclade/Nextstrain

Sample a1 & a2 -->

55 of 59

How to requeue demux in BaseSpace

56 of 59

On the Summary page of the run, click on the hourglass, select Requeue and then select Sample Sheet

57 of 59

Click with your cursor in the black part of the screen and select everything (ctrl+A or cmd+A)

58 of 59

Click delete to delete the content of the sample sheet

59 of 59

Open your corrected sample sheet (saved as a .csv file) in a text editor such as Notepad or TextEdit, select all of its content (ctrl+A or cmd+A) and copy it into the black screen.

A green banner saying “Sample sheet is valid” will re-appear automatically if the copied sample sheet is valid. If not, make sure there are no columns or data fields missing in your sample sheet and that you indeed copied the full contents of the sample sheet into the field.

If sample sheet was valid, click on the blue button for Queue Analysis