Last data update: 2014.03.03

R: Annotate RIP peaks with genomic information and perform GO...
annotateRIPR Documentation

Annotate RIP peaks with genomic information and perform GO enrichement

Description

Given the genomic coordinates of each predicted RIP regions, query the Ensembl database whether each region is nearby or overlaps any known (noncoding) genes.

Usage

annotateRIP(sigGRanges, biomaRt_dataset, featureType = "TSS", 
	goAnno, strandSpecific = FALSE, exportFormat = "txt", 
	hasGOdb = !missing(goAnno), goPval = 0.1, outDir, ...)

Arguments

sigGRanges

GRanges object indicating the chromosomal coordinates of each RIP peaks.

biomaRt_dataset

Ensembl dataset available from biomaRt (See listDatasets). For instance, the human and mouse annotations are hsapiens_gene_ensembl and mmusculus_gene_ensembl, respectively.

featureType

TSS, miRNA, Exon, 5'UTR, 3'UTR, transcript or Exon plus UTR defined in getAnnotation.

goAnno

Optional argugment that specifies a GO dataset used for GO enrichement analysis performed by getEnrichedGO. For instance, the human and mouse GO datasets are org.Hs.eg.db and org.Mm.eg.db.

strandSpecific

Indicate whether the annotations should be strand-specific (Default: FALSE)

exportFormat

Format to export using exportGRanges (Default: "txt", i.e. tab-delim file).

hasGOdb

A binary flag that indicates whether GO enrichement is performed in order to export the results. hasGOdb can be FALSE either because goAnno is not specifiy or because the GO database does not exist.

goPval

P-value cutoff to determine the significance of enriched GO terms by getEnrichedGO.

outDir

Output directory.

...

Extra arguments passed to useMart to specify the database and to passed getEnrichedGO to specify the GO enrichment procedure.

Details

To access the up-to-date Ensembl database, RIPSeeker employs useMart and getAnnotation from biomaRt and ChIPpeakAnno Bioconductor packages to dynamically establish internet connection to the database and retrieve the up-to-date annotations. Then, annotatePeakInBatch from ChIPpeakAnno is used to efficiently annotate all of the predicted regions based on the Ensembl annotation. A predicted region may overlap multiple genes, all of which will be reported as separate records. Moreover, getEnrichedGO from ChIPpeakAnno is applied to the annotated predictions to discover enriched Gene Ontology (GO) terms involving the protein-associated transcriptome.

In order to use old annotation (e.g., mm9 v.s. mm10), user also needs to specify the host and biomart arguments accepted within useMart. To access to mouse annotation from Ensembl version 65, for instance, user needs to call annotateRIP(..., dataset="mmusculus_gene_ensembl", biomart="ENSEMBL_MART_ENSEMBL", host="dec2011.archive.ensembl.org", ...), which will run useMart(dataset="mmusculus_gene_ensembl", biomart="ENSEMBL_MART_ENSEMBL", host="dec2011.archive.ensembl.org", ...) to get the mm9 annotation from Ensembl (v65).

Value

sigGRangesAnnotated

sigGRanges augmented with genomic information including "ensembl_gene_id", "external_gene_id", and "description"

enrichedGO

Output from getEnrichedGO. All three main GO categories ("Biological Process", "Molecular Function", "Cellular Component") are combined together and returned. The argument is only returned when hasGOdb is TRUE.

If outDir is specified, then the above sigGRangesAnnotated is saved as RIPregions_annotated.txt and RIPregions_annotated.RData, and enrichedGO as RIPregions_enrichedGO.txt in the outDir directory.

Author(s)

Yue Li

References

Mapping identifiers for the integration of genomic datasets with the R/Bioconductor package biomaRt. Steffen Durinck, Paul T. Spellman, Ewan Birney and Wolfgang Huber, Nature Protocols 4, 1184-1191 (2009).

BioMart and Bioconductor: a powerful link between biological databases and microarray data analysis. Steffen Durinck, Yves Moreau, Arek Kasprzyk, Sean Davis, Bart De Moor, Alvis Brazma and Wolfgang Huber, Bioinformatics 21, 3439-3440 (2005).

Lihua Julie Zhu, Herve Pages, Claude Gazin, Nathan Lawson, Jianhong Ou, Simon Lin, David Lapointe and Michael Green (2012). ChIPpeakAnno: Batch annotation of the peaks identified from either ChIP-seq, ChIP-chip experiments or any experiments resulted in large number of chromosome ranges.. R package version 2.4.0.

See Also

useMart, getAnnotation, getEnrichedGO

Examples

if(interactive()) { # need internet connection
# Retrieve system files
extdata.dir <- system.file("extdata", package="RIPSeeker") 

bamFiles <- list.files(extdata.dir, ".bam$", recursive=TRUE, full.names=TRUE)

bamFiles <- grep("PRC2", bamFiles, value=TRUE)

# Parameters setting
binSize <- NULL							# automatically determine bin size
minBinSize <- 10000						# min bin size in automatic bin size selection
maxBinSize <- 12000						# max bin size in automatic bin size selection
multicore <- FALSE						# use multicore
strandType <- "-"							# set strand type to minus strand

biomart <- "ENSEMBL_MART_ENSEMBL"		# use archive to get ensembl 65
dataset <- "mmusculus_gene_ensembl"		# mouse dataset id name	
host <- "dec2011.archive.ensembl.org" 	# use ensembl 65 for annotation

goAnno <- "org.Mm.eg.db"


################ run main function for HMM inference on all chromosomes ################
mainSeekOutputRIP <- mainSeek(
    bamFiles=grep(pattern="SRR039214", bamFiles, value=TRUE, invert=TRUE),
		binSize=binSize, minBinSize = minBinSize, 
		maxBinSize = maxBinSize, strandType=strandType, 		
		reverseComplement=TRUE, genomeBuild="mm9",
		uniqueHit = TRUE, assignMultihits = TRUE, 
		rerunWithDisambiguatedMultihits = TRUE,				
		multicore=multicore, silentMain=FALSE, verbose=TRUE)
		
# use defined binSize from RIP
RIPBinSize <- lapply(mainSeekOutputRIP$nbhGRList, function(x) median(width(x)))


mainSeekOutputCTL <- mainSeek(
    bamFiles=grep(pattern="SRR039214", bamFiles, value=TRUE, invert=FALSE),
		binSize=RIPBinSize, strandType=strandType, 		
		reverseComplement=TRUE, genomeBuild="mm9",
		uniqueHit = TRUE, assignMultihits = TRUE, 
		rerunWithDisambiguatedMultihits = TRUE,				
		multicore=multicore, silentMain=FALSE, verbose=TRUE)

################ significance test on Viterbi predicted peaks ################
ripGR <- seekRIP(mainSeekOutputRIP$nbhGRList$chrX, mainSeekOutputCTL$nbhGRList)


################ Annotate peaks ################

annotatedRIPGR <- annotateRIP(sigGRanges = ripGR,
				biomaRt_dataset = dataset, goAnno = goAnno, 
				strandSpecific = !is.null(strandType),
				host=host, biomart=biomart)

head(annotatedRIPGR$sigGRangesAnnotated)	
}

Results


R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> library(RIPSeeker)
Loading required package: S4Vectors
Loading required package: stats4
Loading required package: BiocGenerics
Loading required package: parallel

Attaching package: 'BiocGenerics'

The following objects are masked from 'package:parallel':

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
    clusterExport, clusterMap, parApply, parCapply, parLapply,
    parLapplyLB, parRapply, parSapply, parSapplyLB

The following objects are masked from 'package:stats':

    IQR, mad, xtabs

The following objects are masked from 'package:base':

    Filter, Find, Map, Position, Reduce, anyDuplicated, append,
    as.data.frame, cbind, colnames, do.call, duplicated, eval, evalq,
    get, grep, grepl, intersect, is.unsorted, lapply, lengths, mapply,
    match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, rank,
    rbind, rownames, sapply, setdiff, sort, table, tapply, union,
    unique, unsplit


Attaching package: 'S4Vectors'

The following objects are masked from 'package:base':

    colMeans, colSums, expand.grid, rowMeans, rowSums

Loading required package: IRanges
Loading required package: GenomicRanges
Loading required package: GenomeInfoDb
Loading required package: SummarizedExperiment
Loading required package: Biobase
Welcome to Bioconductor

    Vignettes contain introductory material; view with
    'browseVignettes()'. To cite Bioconductor, see
    'citation("Biobase")', and for packages 'citation("pkgname")'.

Loading required package: Rsamtools
Loading required package: Biostrings
Loading required package: XVector
Loading required package: GenomicAlignments
Loading required package: rtracklayer
> png(filename="/home/ddbj/snapshot/RGM3/R_BC/result/RIPSeeker/annotateRIP.Rd_%03d_medium.png", width=480, height=480)
> ### Name: annotateRIP
> ### Title: Annotate RIP peaks with genomic information and perform GO
> ###   enrichement
> ### Aliases: annotateRIP
> 
> ### ** Examples
> 
> #if(interactive()) { # need internet connection
> # Retrieve system files
> extdata.dir <- system.file("extdata", package="RIPSeeker") 
> 
> bamFiles <- list.files(extdata.dir, ".bam$", recursive=TRUE, full.names=TRUE)
> 
> bamFiles <- grep("PRC2", bamFiles, value=TRUE)
> 
> # Parameters setting
> binSize <- NULL							# automatically determine bin size
> minBinSize <- 10000						# min bin size in automatic bin size selection
> maxBinSize <- 12000						# max bin size in automatic bin size selection
> multicore <- FALSE						# use multicore
> strandType <- "-"							# set strand type to minus strand
> 
> biomart <- "ENSEMBL_MART_ENSEMBL"		# use archive to get ensembl 65
> dataset <- "mmusculus_gene_ensembl"		# mouse dataset id name	
> host <- "dec2011.archive.ensembl.org" 	# use ensembl 65 for annotation
> 
> goAnno <- "org.Mm.eg.db"
> 
> 
> ################ run main function for HMM inference on all chromosomes ################
> mainSeekOutputRIP <- mainSeek(
+     bamFiles=grep(pattern="SRR039214", bamFiles, value=TRUE, invert=TRUE),
+ 		binSize=binSize, minBinSize = minBinSize, 
+ 		maxBinSize = maxBinSize, strandType=strandType, 		
+ 		reverseComplement=TRUE, genomeBuild="mm9",
+ 		uniqueHit = TRUE, assignMultihits = TRUE, 
+ 		rerunWithDisambiguatedMultihits = TRUE,				
+ 		multicore=multicore, silentMain=FALSE, verbose=TRUE)

**A. Process and combine alignment files

Processing /home/ddbj/local/lib64/R/library/RIPSeeker/extdata/PRC2/SRR039210_processed_tophat/accepted_hits_noDup_sel_chrX.bam ... All hits are returned with flags.
Processing /home/ddbj/local/lib64/R/library/RIPSeeker/extdata/PRC2/SRR039211_processed_tophat/accepted_hits_noDup_sel_chrX.bam ... All hits are returned with flags.
2 BAM files are combined
*** Only reads from strand - will be considered.
*** Only unique hits are used to compute read count.
*** chr1 do not have any alignment.
*** chr10 do not have any alignment.
*** chr11 do not have any alignment.
*** chr12 do not have any alignment.
*** chr13 do not have any alignment.
*** chr14 do not have any alignment.
*** chr15 do not have any alignment.
*** chr16 do not have any alignment.
*** chr17 do not have any alignment.
*** chr18 do not have any alignment.
*** chr19 do not have any alignment.
*** chr2 do not have any alignment.
*** chr3 do not have any alignment.
*** chr4 do not have any alignment.
*** chr5 do not have any alignment.
*** chr6 do not have any alignment.
*** chr7 do not have any alignment.
*** chr8 do not have any alignment.
*** chr9 do not have any alignment.
*** chrM do not have any alignment.
*** chrY do not have any alignment.

*** 21 pseudoreads are appended to the end.

**B. Run NB HMM on each chromosome


**********
chr1:
**********



**********
chr10:
**********



**********
chr11:
**********



**********
chr12:
**********



**********
chr13:
**********



**********
chr14:
**********



**********
chr15:
**********



**********
chr16:
**********



**********
chr17:
**********



**********
chr18:
**********



**********
chr19:
**********



**********
chr2:
**********



**********
chr3:
**********



**********
chr4:
**********



**********
chr5:
**********



**********
chr6:
**********



**********
chr7:
**********



**********
chr8:
**********



**********
chr9:
**********



**********
chrM:
**********



**********
chrX:
**********


***0. Computing optimal bin size.

Optimal bin size: 10035 bp

***1. Traning NB HMM to derive posterior (and Viterbi state sequence:)

***1. Initializing negative binomial HMM (nbh) with 2 states:


Starting NB mixture model (nbm_em) for K=2 clusters:
Iteration 0:	-29837.139
Iteration 1:	-17007.833
Iteration 2:	-16569.452
Iteration 3:	-16453.363

***2. Traininig nbh with forward-backward algorithm:

Iteration 0:	-16419.155
Iteration 1:	-16382.755
Iteration 2:	-16373.776

**********
chrY:
**********



**C. Disambiguate multihits based on posterior


2075/12375 multihit reads corresponding to 4871 ambiguous alignments
have been assigned to 2075 unique regions with maximum posterior for the enriched state


**D. Re-run NB HMM with unique hits + disambiguated multihits.

*** chr1 do not have any alignment.
*** chr10 do not have any alignment.
*** chr11 do not have any alignment.
*** chr12 do not have any alignment.
*** chr13 do not have any alignment.
*** chr14 do not have any alignment.
*** chr15 do not have any alignment.
*** chr16 do not have any alignment.
*** chr17 do not have any alignment.
*** chr18 do not have any alignment.
*** chr19 do not have any alignment.
*** chr2 do not have any alignment.
*** chr3 do not have any alignment.
*** chr4 do not have any alignment.
*** chr5 do not have any alignment.
*** chr6 do not have any alignment.
*** chr7 do not have any alignment.
*** chr8 do not have any alignment.
*** chr9 do not have any alignment.
*** chrM do not have any alignment.
*** chrY do not have any alignment.

*** 21 pseudoreads are appended to the end.

**********
chr1:
**********



**********
chr10:
**********



**********
chr11:
**********



**********
chr12:
**********



**********
chr13:
**********



**********
chr14:
**********



**********
chr15:
**********



**********
chr16:
**********



**********
chr17:
**********



**********
chr18:
**********



**********
chr19:
**********



**********
chr2:
**********



**********
chr3:
**********



**********
chr4:
**********



**********
chr5:
**********



**********
chr6:
**********



**********
chr7:
**********



**********
chr8:
**********



**********
chr9:
**********



**********
chrM:
**********



**********
chrX:
**********


***0. Computing optimal bin size.

Optimal bin size: 10035 bp

***1. Traning NB HMM to derive posterior (and Viterbi state sequence:)

***1. Initializing negative binomial HMM (nbh) with 2 states:


Starting NB mixture model (nbm_em) for K=2 clusters:
Iteration 0:	-31130.762
Iteration 1:	-18773.084
Iteration 2:	-18414.999
Iteration 3:	-18318.540

***2. Traininig nbh with forward-backward algorithm:

Iteration 0:	-18288.106
Iteration 1:	-18253.186
Iteration 2:	-18243.166

***3. Deriving maximum-likelihood hidden state sequence with Viterbi algorithm:

done!

**********
chrY:
**********


There were 50 or more warnings (use warnings() to see the first 50)
> 		
> # use defined binSize from RIP
> RIPBinSize <- lapply(mainSeekOutputRIP$nbhGRList, function(x) median(width(x)))
> 
> 
> mainSeekOutputCTL <- mainSeek(
+     bamFiles=grep(pattern="SRR039214", bamFiles, value=TRUE, invert=FALSE),
+ 		binSize=RIPBinSize, strandType=strandType, 		
+ 		reverseComplement=TRUE, genomeBuild="mm9",
+ 		uniqueHit = TRUE, assignMultihits = TRUE, 
+ 		rerunWithDisambiguatedMultihits = TRUE,				
+ 		multicore=multicore, silentMain=FALSE, verbose=TRUE)

**A. Process and combine alignment files

Processing /home/ddbj/local/lib64/R/library/RIPSeeker/extdata/PRC2/SRR039214_processed_tophat/accepted_hits_noDup_sel_chrX.bam ... All hits are returned with flags.
1 BAM files are combined
*** Only reads from strand - will be considered.
*** Only unique hits are used to compute read count.
*** chr1 do not have any alignment.
*** chr10 do not have any alignment.
*** chr11 do not have any alignment.
*** chr12 do not have any alignment.
*** chr13 do not have any alignment.
*** chr14 do not have any alignment.
*** chr15 do not have any alignment.
*** chr16 do not have any alignment.
*** chr17 do not have any alignment.
*** chr18 do not have any alignment.
*** chr19 do not have any alignment.
*** chr2 do not have any alignment.
*** chr3 do not have any alignment.
*** chr4 do not have any alignment.
*** chr5 do not have any alignment.
*** chr6 do not have any alignment.
*** chr7 do not have any alignment.
*** chr8 do not have any alignment.
*** chr9 do not have any alignment.
*** chrM do not have any alignment.
*** chrY do not have any alignment.

*** 21 pseudoreads are appended to the end.

**B. Run NB HMM on each chromosome


**********
chr1:
**********

***0. Using predefined binSize of 19719543 bp.

**********
chr10:
**********

***0. Using predefined binSize of 12999325 bp.

**********
chr11:
**********

***0. Using predefined binSize of 12184385 bp.

**********
chr12:
**********

***0. Using predefined binSize of 12125753 bp.

**********
chr13:
**********

***0. Using predefined binSize of 12028431 bp.

**********
chr14:
**********

***0. Using predefined binSize of 12519486 bp.

**********
chr15:
**********

***0. Using predefined binSize of 10349497 bp.

**********
chr16:
**********

***0. Using predefined binSize of 9831915 bp.

**********
chr17:
**********

***0. Using predefined binSize of 9527265 bp.

**********
chr18:
**********

***0. Using predefined binSize of 9077203 bp.

**********
chr19:
**********

***0. Using predefined binSize of 6134243 bp.

**********
chr2:
**********

***0. Using predefined binSize of 18174808 bp.

**********
chr3:
**********

***0. Using predefined binSize of 15959978 bp.

**********
chr4:
**********

***0. Using predefined binSize of 15563012 bp.

**********
chr5:
**********

***0. Using predefined binSize of 15253725 bp.

**********
chr6:
**********

***0. Using predefined binSize of 14951703 bp.

**********
chr7:
**********

***0. Using predefined binSize of 15252455 bp.

**********
chr8:
**********

***0. Using predefined binSize of 13173887 bp.

**********
chr9:
**********

***0. Using predefined binSize of 12407617 bp.

**********
chrM:
**********

***0. Using predefined binSize of 1629 bp.

**********
chrX:
**********

***0. Using predefined binSize of 10035 bp.
***1. Traning NB HMM to derive posterior (and Viterbi state sequence:)

***1. Initializing negative binomial HMM (nbh) with 2 states:


Starting NB mixture model (nbm_em) for K=2 clusters:
Iteration 0:	-24887.839
Iteration 1:	-7662.020
Iteration 2:	-7551.139
Iteration 3:	-7486.226

***2. Traininig nbh with forward-backward algorithm:

Iteration 0:	-7465.689
Iteration 1:	-7455.628
Iteration 2:	-7450.211

**********
chrY:
**********

***0. Using predefined binSize of 1590255 bp.

**C. Disambiguate multihits based on posterior


679/3434 multihit reads corresponding to 1250 ambiguous alignments
have been assigned to 679 unique regions with maximum posterior for the enriched state


**D. Re-run NB HMM with unique hits + disambiguated multihits.

*** chr1 do not have any alignment.
*** chr10 do not have any alignment.
*** chr11 do not have any alignment.
*** chr12 do not have any alignment.
*** chr13 do not have any alignment.
*** chr14 do not have any alignment.
*** chr15 do not have any alignment.
*** chr16 do not have any alignment.
*** chr17 do not have any alignment.
*** chr18 do not have any alignment.
*** chr19 do not have any alignment.
*** chr2 do not have any alignment.
*** chr3 do not have any alignment.
*** chr4 do not have any alignment.
*** chr5 do not have any alignment.
*** chr6 do not have any alignment.
*** chr7 do not have any alignment.
*** chr8 do not have any alignment.
*** chr9 do not have any alignment.
*** chrM do not have any alignment.
*** chrY do not have any alignment.

*** 21 pseudoreads are appended to the end.

**********
chr1:
**********

***0. Using predefined binSize of 19719543 bp.

**********
chr10:
**********

***0. Using predefined binSize of 12999325 bp.

**********
chr11:
**********

***0. Using predefined binSize of 12184385 bp.

**********
chr12:
**********

***0. Using predefined binSize of 12125753 bp.

**********
chr13:
**********

***0. Using predefined binSize of 12028431 bp.

**********
chr14:
**********

***0. Using predefined binSize of 12519486 bp.

**********
chr15:
**********

***0. Using predefined binSize of 10349497 bp.

**********
chr16:
**********

***0. Using predefined binSize of 9831915 bp.

**********
chr17:
**********

***0. Using predefined binSize of 9527265 bp.

**********
chr18:
**********

***0. Using predefined binSize of 9077203 bp.

**********
chr19:
**********

***0. Using predefined binSize of 6134243 bp.

**********
chr2:
**********

***0. Using predefined binSize of 18174808 bp.

**********
chr3:
**********

***0. Using predefined binSize of 15959978 bp.

**********
chr4:
**********

***0. Using predefined binSize of 15563012 bp.

**********
chr5:
**********

***0. Using predefined binSize of 15253725 bp.

**********
chr6:
**********

***0. Using predefined binSize of 14951703 bp.

**********
chr7:
**********

***0. Using predefined binSize of 15252455 bp.

**********
chr8:
**********

***0. Using predefined binSize of 13173887 bp.

**********
chr9:
**********

***0. Using predefined binSize of 12407617 bp.

**********
chrM:
**********

***0. Using predefined binSize of 1629 bp.

**********
chrX:
**********

***0. Using predefined binSize of 10035 bp.
***1. Traning NB HMM to derive posterior (and Viterbi state sequence:)

***1. Initializing negative binomial HMM (nbh) with 2 states:


Starting NB mixture model (nbm_em) for K=2 clusters:
Iteration 0:	-25354.838
Iteration 1:	-8987.162
Iteration 2:	-8808.021
Iteration 3:	-8718.399
Iteration 4:	-8680.072

***2. Traininig nbh with forward-backward algorithm:

Iteration 0:	-8668.143
Iteration 1:	-8661.662

***3. Deriving maximum-likelihood hidden state sequence with Viterbi algorithm:

done!

**********
chrY:
**********

***0. Using predefined binSize of 1590255 bp.
There were 42 warnings (use warnings() to see them)
> 
> ################ significance test on Viterbi predicted peaks ################
> ripGR <- seekRIP(mainSeekOutputRIP$nbhGRList$chrX, mainSeekOutputCTL$nbhGRList)
> 
> 
> ################ Annotate peaks ################
> 
> annotatedRIPGR <- annotateRIP(sigGRanges = ripGR,
+ 				biomaRt_dataset = dataset, goAnno = goAnno, 
+ 				strandSpecific = !is.null(strandType),
+ 				host=host, biomart=biomart)
Loading required package: biomaRt
Loading required package: ChIPpeakAnno
Loading required package: grid
Loading required package: VennDiagram
Loading required package: futile.logger

Entity 'nbsp' not defined
attributes construct error
Couldn't find end of Start Tag img line 22
Entity 'hellip' not defined
Entity 'hellip' not defined
Entity 'nbsp' not defined
Entity 'raquo' not defined
attributes construct error
Couldn't find end of Start Tag img line 40
Entity 'hellip' not defined
Entity 'hellip' not defined
Entity 'hellip' not defined
Entity 'hellip' not defined
Entity 'hellip' not defined
Opening and ending tag mismatch: img line 64 and li
Opening and ending tag mismatch: li line 64 and ul
Opening and ending tag mismatch: ul line 63 and div
Entity 'copy' not defined
attributes construct error
Couldn't find end of Start Tag img line 225
attributes construct error
Couldn't find end of Start Tag img line 228
attributes construct error
Couldn't find end of Start Tag img line 231
attributes construct error
Couldn't find end of Start Tag img line 260
Opening and ending tag mismatch: div line 18 and body
Opening and ending tag mismatch: body line 17 and html
Premature end of data in tag html line 2
Error: 1: Entity 'nbsp' not defined
2: attributes construct error
3: Couldn't find end of Start Tag img line 22
4: Entity 'hellip' not defined
5: Entity 'hellip' not defined
6: Entity 'nbsp' not defined
7: Entity 'raquo' not defined
8: attributes construct error
9: Couldn't find end of Start Tag img line 40
10: Entity 'hellip' not defined
11: Entity 'hellip' not defined
12: Entity 'hellip' not defined
13: Entity 'hellip' not defined
14: Entity 'hellip' not defined
15: Opening and ending tag mismatch: img line 64 and li
16: Opening and ending tag mismatch: li line 64 and ul
17: Opening and ending tag mismatch: ul line 63 and div
18: Entity 'copy' not defined
19: attributes construct error
20: Couldn't find end of Start Tag img line 225
21: attributes construct error
22: Couldn't find end of Start Tag img line 228
23: attributes construct error
24: Couldn't find end of Start Tag img line 231
25: attributes construct error
26: Couldn't find end of Start Tag img line 260
27: Opening and e
Execution halted