ArrayExpress/DESCRIPTION0000644000175200017520000000165014710267740015744 0ustar00biocbuildbiocbuildPackage: ArrayExpress Title: Access the ArrayExpress Collection at EMBL-EBI Biostudies and build Bioconductor data structures: ExpressionSet, AffyBatch, NChannelSet Version: 1.66.0 Author: Audrey Kauffmann, Ibrahim Emam, Michael Schubert, Jose Marugan Maintainer: Jose Marugan Depends: R (>= 2.9.0), Biobase (>= 2.4.0) Imports: oligo, limma, httr, utils, jsonlite, rlang, tools, methods Description: Access the ArrayExpress Collection at EMBL-EBI Biostudies and build Bioconductor data structures: ExpressionSet, AffyBatch, NChannelSet. License: Artistic-2.0 biocViews: Microarray, DataImport, OneChannel, TwoChannel NeedsCompilation: no Suggests: affy git_url: https://git.bioconductor.org/packages/ArrayExpress git_branch: RELEASE_3_20 git_last_commit: d1e37af git_last_commit_date: 2024-10-29 Repository: Bioconductor 3.20 Date/Publication: 2024-10-29 Packaged: 2024-10-29 23:29:36 UTC; biocbuild ArrayExpress/MD50000644000175200017520000000243514710267740014550 0ustar00biocbuildbiocbuild6fe555ecffb98c5883984e08cb74122d *DESCRIPTION 15759e93af8eaf6fc52e904d66f3e357 *NAMESPACE ba5ec69f1bda7683367ae7c88280d37d *NEWS 045cf8b5587ddf8b5cebf9171fabe309 *R/ArrayExpress.r cc74b5515b530564777ed0ad16eb9dd6 *R/ae2bioc.r 9b2a1b08a3a5e9756a9bd206a15afdae *R/extract.zip.r cc0920213fb073f38b7e0cf95c2e3e4c *R/getAE.r e854c3edc788b0e2fa17845f3783dbed *R/getcolproc.r 6a7bd1bb0097e715d39a17bc578b205e *R/parseMAGE.r c5ef9da348eefed70ebb68e6a7d560cc *R/procset.r a692d8c86fe868c1307412ae2f5172d3 *R/queryAE.r ada67592e71414cfbbbfd632d0eb32ee *build/vignette.rds a9356fb478f3be7fa418bd51507094b1 *inst/CITATION e98f6d72bee3ff1c8febebde45a12d89 *inst/doc/ArrayExpress.R 2e24f2fd6ec51365f03438229b8e2d58 *inst/doc/ArrayExpress.Rnw f8e7bf622b8f7de2263571675354c8d3 *inst/doc/ArrayExpress.pdf e86b7f383d56615b83a84671cd7107e8 *man/ArrayExpress.Rd 9dd14010441dc0780f2a87d22a2e2452 *man/ae2bioc.Rd f5feff7e0953a981d474fb37a4d1182f *man/extract.zip.Rd e539922fc217ad1c9289a5e274bfa6b9 *man/getAE.Rd 0714ef22a780572fac31a9443b105b88 *man/getcolproc.Rd 3ed74f123e76ec84fe80daa174250bd3 *man/getcolraw.Rd d731a3b4268fa9935438e2fe6cd0b4c2 *man/procset.Rd 55762fbbc6de6fc51e9388124a2b048e *man/queryAE.Rd 2e24f2fd6ec51365f03438229b8e2d58 *vignettes/ArrayExpress.Rnw 3099e561afdfd43b049d961e6d520367 *vignettes/QT_list.txt ArrayExpress/NAMESPACE0000644000175200017520000000152114710217417015446 0ustar00biocbuildbiocbuildimportFrom("Biobase", "pData", "pData<-", "phenoData", "phenoData<-", "sampleNames", "sampleNames<-", "read.AnnotatedDataFrame", "varLabels", "exprs", "assayDataNew", "featureData", "featureData<-", "featureNames", "assayData") importFrom("limma", "read.maimages") importFrom("httr", "GET", "status_code", "content") importFrom("oligo", "read.celfiles") importFrom("utils","URLencode", "download.file", "read.delim", "read.table", "unzip", "write.table") importFrom("jsonlite", "fromJSON" ) importFrom("rlang", "is_empty" ) importFrom("tools", "file_ext" ) importFrom("methods", "new") export("ArrayExpress", "getAE", "queryAE", "ae2bioc", "getcolproc", "getcolraw", "procset", "extract.zip") ArrayExpress/NEWS0000644000175200017520000000016414710217417014730 0ustar00biocbuildbiocbuildCHANGES IN VERSION 1.58.0 ------------------------ o Update to access ArrayExpress Collection at BioStudies. ArrayExpress/R/0000755000175200017520000000000014710217417014431 5ustar00biocbuildbiocbuildArrayExpress/R/ArrayExpress.r0000644000175200017520000000125614710217417017250 0ustar00biocbuildbiocbuildArrayExpress = function(accession, path = tempdir(), save = FALSE, dataCols = NULL, drop = TRUE){ expFiles = getAE(accession, path = path, type = "full") raweset = try(ae2bioc(mageFiles = expFiles, dataCols = dataCols, drop=drop)) if(inherits(raweset, 'try-error')){ save = TRUE raweset = NULL } else{ if(!is.list(raweset)){ message(paste("\n",accession," was successfully loaded into ",class(raweset),"\n")) } else { message(paste("\n",accession," was successfully loaded into ",length(raweset)," ",unlist(lapply(raweset,function(x){class(x)})),"\n")) } } if(!save) on.exit(cleanupAE(expFiles)) return(raweset) }ArrayExpress/R/ae2bioc.r0000644000175200017520000001437314710217417016130 0ustar00biocbuildbiocbuild# A function that takes ArrayExpress MAGETAB files for a specific experiment and returns an equivalent R object representation (NChannelSet, ExpressionSet or AffyBatch) # # Author: iemam # Maintainer: Jose Marugan ############################################################################### ae2bioc = function(mageFiles, dataCols=NULL, drop=TRUE){ dataFiles <- NULL sdrf <- NULL idf <- NULL adf <- NULL path <- NULL dataFiles = lapply(mageFiles$rawArchive, function(x){ if (!is_empty(x)){ return(basename(x)) } }) if (!is_empty(mageFiles$mageTabFiles)){ sdrf = basename(mageFiles$mageTabFiles[grep(mageFiles$mageTabFiles, pattern = "sdrf.txt$")]) idf = basename(mageFiles$mageTabFiles[grep(mageFiles$mageTabFiles, pattern = "idf.txt$")]) } else{ stop("No SDRF file found.") } adf = mageFiles$adf path = mageFiles$path notuse = grep(dataFiles, pattern = "info.txt$|idf.txt$|processed|sdrf.txt$|.log$|RData|class|txt.magetab") if (length(notuse) != 0) dataFiles = dataFiles[-notuse] dataFiles = dataFiles[dataFiles != ""] allDataFiles = dataFiles; if(length(dataFiles)==0) stop("ArrayExpress: Experiment has no raw files available. Consider using processed data instead by following procedure in the vignette") #check for duplicates in sdrf sdrfData<-read.delim(paste(path,sdrf,sep='/'), check.names=FALSE) if(!'Array Data File' %in% colnames(sdrfData)){ stop("ArrayExpress: 'Array Data File' column not found in the SDRF file. Please make sure the assay is an array assay") } if(any(duplicated(sdrfData[, 'Array Data File']))){ message("Duplicates found in SDRF file") #remove duplicates based on Array Data Files and update SDRF sdrfData<-sdrfData[!duplicated(sdrfData[, 'Array Data File']), ] write.table(sdrfData, file=sdrf, row.names=FALSE, quote=FALSE, sep='\t') message("Removed duplicates in SDRF file") } #read sample annotations ph = readPhenoData(sdrf,path) if(inherits(ph, 'try-error')){ ph=NULL stop("ArrayExpress: Parsing SDRF failed. Please make sure SDRF file ",sdrf," exists in ",path, " and is not corrupt.") } fullPhenoData = ph; #Checks arrayDataCol = getSDRFcolumn("ArrayDataFile",varLabels(ph)) # labelCol = getSDRFcolumn("label",varLabels(ph)) #ArrayDesign REF in SDRF adr = unique(pData(ph)[,getSDRFcolumn("ArrayDesignREF",varLabels(ph))]) adr = adr[adr != ""] if(!all(dataFiles %in% ph[[arrayDataCol]])) warning("Some data files in the zip archive are missing from the SDRF. The object may not be built.") if(length(adr)>1) message("ArrayExpress: Experiment uses multiple Array Designs. A separate expressionSet will be created for each") if((length(adr) == 0 || is.na(adr)) && length(grep(".cel",dataFiles, ignore.case = TRUE)) != 0) warning("ArrayExpress: Cannot find the array design reference in the sdrf file. The object may not be built.") if((length(adr) == 0 || is.na(adr)) && length(grep(".cel",dataFiles, ignore.case = TRUE)) == 0) stop("ArrayExpress: Cannot find the array design reference in the sdrf file. The object cannot be built.") #list of return R objects robjs=list(); for (ad in adr){ #Subselect SDRF data for current ArrayDesign REF if(length(adr)>1){ res=getPhenoDataPerAD(ad,fullPhenoData,allDataFiles) dataFiles = unique(res$dataFiles) ph = res$pheno } #read data files green.only = isOneChannel(sdrf,path) rawdata= try(readAEdata(path = path,files = dataFiles,dataCols=dataCols,green.only=green.only)) if(inherits(rawdata, "try-error")) stop("ArrayExpress: Unable to read assay data") #read and match array feature metadata to raw data if(!inherits(rawdata,"FeatureSet")){ adfFile = adf[grep(ad,adf)] features= try(readFeatures(adf=adfFile,path=path)) if(inherits(features, "try-error")){ warning("ArrayExpress: Unable to read feature data") features = NULL; } } #read experiment meta data experimentData = try(readExperimentData(idf=idf,path=path)) if(inherits(experimentData, "try-error")){ warning("ArrayExpress: Unable to read experiment data"); experimentData = new("MIAME"); } #Finally build ExpressionSet #Attach pheno and feature data to oligo::FeatureSet if(inherits(rawdata,"FeatureSet")){ raweset=rawdata phenoData(raweset) = ph[sampleNames(rawdata)] } if(class(rawdata) == "RGList" | class(rawdata) == "EListRaw"){ #construct nchannelset if(class(rawdata) == "RGList"){ assayData = if("Rb" %in% names(rawdata)) #FIXME: keep all with(rawdata, assayDataNew(R = R, G = G, Rb = Rb, Gb = Gb)) #will not work if datacolumns where user specified else with(rawdata, assayDataNew(G = G, R = R)) raweset = new("NChannelSet", assayData = assayData, experimentData = experimentData) } #construct expressionSet if(class(rawdata) == "EListRaw"){ assayData = with(rawdata, assayDataNew(E = E, Eb = Eb)) raweset = new("NChannelSet", assayData = assayData, experimentData = experimentData) } #Attach pheno data if(!is.null(ph)){ #FIXME:? #imagene doesnt have targets slot ph = ph[rawdata$targets$FileName,] phenoData(raweset) = ph } #Attach features if(!is.null(rawdata$genes) && rawdata$source != "ae1"){ features2 = new("AnnotatedDataFrame",rawdata$genes) featureData(raweset) = features2; } else if(!is.null(features)) featureData(raweset) = features; #consistency of order between features in featureData and assayData is established via previous sorting of feature columns if(length(featureNames(assayData(raweset))) != length(featureNames(featureData(raweset)))) warning("Number of features in assayData and featureData are not equal. Check control features (NA) that might have been removed from either assayData or featureData."); } robjs[[ad]]=raweset } if(drop && length(robjs) == 1) robjs = robjs[[1]] return(robjs) } ArrayExpress/R/extract.zip.r0000644000175200017520000000140514710217417017067 0ustar00biocbuildbiocbuildextract.zip = function (file, extractpath = dirname(file)[1]) { topic = basename(file) path = dirname(file) if (file.exists(file.path(path, topic))){ lapply(1:length(file), function(i) unzip(zipfile = file.path(path[i], topic[i]), exdir = extractpath)) rc = lapply(1:length(file), function(i) unzip(zipfile = file.path(path[i], topic[i]), list = TRUE, exdir = extractpath)) if(length(rc) > 1) rc = do.call(c, sapply(1:length(file), function(i) as.character(rc[[i]][,1]))) else rc = as.character(rc[[1]][,1]) if(inherits(rc,"try-error")) stop("Cannot extract the files the downloaded archive. Please install unzip on your machine") }else stop(sprintf("%s does not exist",file.path(path, topic))) return(rc) } ArrayExpress/R/getAE.r0000644000175200017520000001451114710217417015603 0ustar00biocbuildbiocbuildget_request <-function(url){ qr = URLencode(url) response <- GET( qr ) if(status_code(response) != 200) { stop( paste( "Error running query. Received HTTP error code", status_code(response), "from server. Please try again later. If you continue to experience problems please contact us at https://www.ebi.ac.uk/about/contact/support/arrayexpress" ) ) } json_parsed <- fromJSON(txt = qr) return(json_parsed) } download_file <- function(url, filedest, overwrite){ if (file.exists(filedest) && overwrite == FALSE){ message(paste(filedest, ' already exists, skipping.', sep ="")) retVal <- filedest } else{ dnld = try(download.file(url, filedest)) if(inherits(dnld, 'try-error') || file.info(filedest)$size == 0) { retVal <- NULL } else { retVal <- filedest } } return(retVal) } get_filenames <-function(jsonData, ftpUrl, type){ subsections = jsonData$section$subsections fileNames = data.frame(matrix(ncol = 3, nrow = 0)) colnames(fileNames) <- c("type", "file", "url") for (s in subsections) { if (s$type[1] == "Assays and Data"){ data_files = s$subsections break } } for (row in 1:nrow(data_files)){ file_type = data_files[row, "type"] files=data_files[row, "files"] for (i in files){ if (is.data.frame(i)){ df=i } else{ for (n in i){ df=n } } } for(f in df$path){ if (file_type %in% c("Processed Data","MAGE-TAB Files", "Raw Data")) { fileNames[nrow(fileNames) + 1,] = c(file_type, f, paste(ftpUrl,"Files",f,sep="/")) } } if (file_type == "Array Designs"){ for (i in data_files[row, "links"]){ for (n in i){ adf_accession = n$url if(!is_empty(adf_accession)){ adf_name = paste(adf_accession, "adf","txt", sep=".") adf_link = paste("https://www.ebi.ac.uk/biostudies/files", adf_accession, adf_name, sep="/") fileNames[nrow(fileNames) + 1,] = c(file_type, adf_name, adf_link) } } } } } if (tolower(type)=='raw' || tolower(type) == 'full'){ enaAccession <- NULL jsonLinks = unlist(jsonData$section$links) if(!is_empty(jsonLinks)){ if (toupper(jsonLinks['attributes.value']) == 'ENA'){ enaAccession = jsonLinks['url'] } } if (!is_empty(enaAccession)){ enaUrl=paste("https://www.ebi.ac.uk/ena/portal/api/filereport?accession=",enaAccession,"&download=false&fields=fastq_ftp&format=json&limit=0&result=read_run", sep="") enaData= get_request(enaUrl) for(i in 1:nrow(enaData)) { ftpLikns = strsplit(enaData[i, "fastq_ftp"], split = ";") for (enaFileLinkList in ftpLikns){ for (enaFileLink in enaFileLinkList){ enaFileName = sub(".*/", "", enaFileLink) fileNames[nrow(fileNames) + 1,] = c("Raw Data", enaFileName, paste("ftp:", enaFileLink, sep="//")) } } } } if (tolower(type)=='raw'){ fileNames= fileNames[fileNames$type == "Raw Data", ] } } else if (tolower(type)=='processed'){ fileNames= fileNames[fileNames$type == "Processed Data", ] } else if (tolower(type)=='mage'){ fileNames= fileNames[fileNames$type == "MAGE-TAB Files", ] } return(fileNames) } getAE = function (accession, path = getwd(), type = "full", extract = TRUE, sourcedir=path, overwrite = FALSE) { typeOptions <- c("raw", "full", "processed", "mage") if (!tolower(type) %in% typeOptions){ print(paste("Option'",type,"is not a valid option for parameter 'type'", sep=" ")) return() } baseURL = "https://www.ebi.ac.uk/biostudies/api/v1/studies" httpURL = paste(baseURL, accession, sep="/") submissionMetaData = get_request(httpURL) infoURL = paste(baseURL, accession, "info", sep="/") infoData = get_request(infoURL) ftpLink = infoData$ftpLink allFileNames = get_filenames(submissionMetaData, ftpLink, type) #Download files rawArchive <- NULL processedArchive <- NULL mageTabFiles <- NULL adfFiles <- NULL for (row_file in 1:nrow(allFileNames)){ filedest = paste(path,allFileNames[row_file,"file"],sep="/") url = allFileNames[row_file,"url"] message(paste("Downloading file: ", allFileNames[row_file,"file"], "\n", sep="")) file_ok <- download_file(url, filedest, overwrite) if (is.null(file_ok)){ warning(paste(url, " does not exist or is empty. \n"),sep="") } else{ if (allFileNames[row_file,"type"] == 'Raw Data'){ rawArchive <- c(rawArchive, file_ok) } else if(allFileNames[row_file,"type"] == 'MAGE-TAB Files'){ mageTabFiles <- c(mageTabFiles, file_ok) } else if(allFileNames[row_file,"type"] == 'Processed Data'){ processedArchive <- c(processedArchive, file_ok) } else if(allFileNames[row_file,"type"] == 'Array Designs'){ adfFiles <- c(adfFiles, file_ok) } } } rawFiles = NULL processedFiles = NULL if(extract){ message("Unpacking data files") if(!is.null(rawArchive)) rawFiles<-lapply(rawArchive, function(zipfile){ rFiles = zipfile if (file_ext(zipfile) == "zip"){ rFiles = extract.zip(file = zipfile) } return(rFiles) }) if(!is.null(processedArchive)) processedFiles<-lapply(processedArchive, function(zipfile){ procFiles = zipfile if (file_ext(zipfile) == "zip"){ procFiles = extract.zip(file = zipfile) } return(procFiles) }) if(!is.null(rawFiles)) rawFiles = unlist(rawFiles) if(!is.null(processedFiles)) processedFiles = unlist(processedFiles) } sdrfFile <- NULL idfFile <- NULL if (!is_empty(mageTabFiles)){ sdrfFile = mageTabFiles[grep(mageTabFiles, pattern = "sdrf.txt$")] idfFile = mageTabFiles[grep(mageTabFiles, pattern = "idf.txt$")] } res = list(path = path, rawFiles = rawFiles, rawArchive = rawArchive, processedFiles = processedFiles, processedArchive = processedArchive, mageTabFiles = mageTabFiles, sdrf = sdrfFile, idf = idfFile, adf = adfFiles, dataFiles = allFileNames) return(res) }ArrayExpress/R/getcolproc.r0000644000175200017520000000151314710217417016755 0ustar00biocbuildbiocbuildgetcolproc = function(files){ path = paste(files$path, "/", sep="") procfile = files$processedArchive[1] ph = try(read.AnnotatedDataFrame(basename(files$sdrf), path = path, row.names = NULL, blank.lines.skip = TRUE, fill = TRUE, varMetadata.char = "$", quote="\"")) derivedMatrixCol = getSDRFcolumn("DerivedArrayMatrix",varLabels(ph)) derivedFileCol = getSDRFcolumn("DerivedArrayFile",varLabels(ph)) if(length(derivedMatrixCol) != 0) skiplines = 1 else if(length(derivedFileCol) != 0) skiplines = 0 else warning("Unable to find Derived Data column in SDRF") coln = scan(file.path(procfile),what = "",nlines = 1, skip = skiplines, sep = "\t") return(unique(coln)) } getcolraw = function(rawfiles){ rawfile = rawfiles[1] coln = scan(file.path(rawfile),what = "",nlines = 1, sep = "\t") return(coln) }ArrayExpress/R/parseMAGE.r0000644000175200017520000005310314710217417016362 0ustar00biocbuildbiocbuild# TODO: Add comment # # Author: iemam ############################################################################### headers<-list( ae1=c("metaColumn","metaRow","row","column"), genepix=c("Block","Column","Row","X","Y"), arrayvision=c("Primary","Secondary"), agilent=c("Row","Col","PositionX","PositionY"), scanalyze=c("GRID","COL","ROW","LEFT","TOP","RIGHT","BOT"), scanarray=c('Array Column','Array Row','Spot Column','Spot Row','X','Y'), quantarray=c('Array Column', 'Array Row', 'Column', 'Row'), spotfinder=c("MC","MR","SC","SR","C","R"), mev=c("MC","MR","C","R","UID"), codelink=c("Logical_row","Logical_col","Center_X","Center_Y"), bluefuse=c("COL","ROW","SUBGRIDCOL","SUBGRIDROW"), UCSFSpot=c("Arr-colx","Arr-rowy","Spot-colx","Spot-rowy"), NimbleScanFeature=c("X","Y","PROBE_ID","X_PIXEL","Y_PIXEL"), NimblegenNASA=c("X_BC","Y_BC","Feature_ID","ProbID_BC"), imagene=c('Meta Column', 'Meta Row', 'Column', 'Row', 'Field', 'Gene ID'), ImaGene3=c("Meta_col","Meta_row","Sub_col","Sub_row","Name","Selected"), ImaGene7=c("Block","Column","Row","Ch1 XCoord","Ch1 YCoord", "Ch2 XCoord", "Ch2 YCoord"), ImaGeneFields=c("Field","Column","Row","XCoord","YCoord"), CSIRO_Spot=c("grid_c","grid_r","spot_c","spot_r","indexs") #add illumina ) isOneChannel = function(sdrf,path){ ph = try(read.AnnotatedDataFrame(sdrf, path = path, row.names = NULL, blank.lines.skip = TRUE, fill = TRUE, varMetadata.char = "$", quote="\"")) labelCol = getSDRFcolumn("label",varLabels(ph)) if(length(labelCol)==0) return(TRUE) # assume 1-color if no label reported - we warn the user in readPhenoData else return(length(unique(tolower(ph[[labelCol]])))==1) } readPhenoData = function(sdrf,path){ message("ArrayExpress: Reading pheno data from SDRF") ph = try(read.AnnotatedDataFrame(sdrf, path = path, row.names = NULL, blank.lines.skip = TRUE, fill = TRUE, varMetadata.char = "$", quote="\"")) arrayDataCol = getSDRFcolumn("ArrayDataFile",varLabels(ph)) labelCol = getSDRFcolumn("label",varLabels(ph)) if(length(arrayDataCol)==0) warning("ArrayExpress: Cannot find 'Array Data File' column in SDRF. Object might not be created correctly.") if(length(labelCol)==0) warning("ArrayExpress: Cannot find 'Label' column in SDRF. Object might not be created correctly.") ph = ph[gsub(" ", "", ph$Array.Data.File) != ""] sampleNames(ph) = ph$Array.Data.File ph@varMetadata['Array.Data.File','labelDescription'] = "Index" ph@varMetadata['Array.Data.File','channel'] = as.factor("_ALL_") #Remove empty rows from pheno data emptylines = which(sapply(seq_len(nrow(pData(ph))), function(i) all(pData(ph)[i,] == "",na.rm = TRUE))) if(length(emptylines) != 0) pData(ph) = pData(ph)[-emptylines,] phenoData = pData(ph) if(length(arrayDataCol)!=0 && length(labelCol)!=0){ #filter out duplicated rows where multiple derived data files are available per one array data file ph=ph[!duplicated(phenoData[,c(arrayDataCol,labelCol)])] } #treat SDRF for two channel experiments if(length(labelCol)==1 && length(unique(tolower(ph[[labelCol]])))==2){ arrayFilesNum = length(unique(ph[[arrayDataCol]])) si = pData(ph)[1:(arrayFilesNum*2),] lab = split(si,si[,"Label"]) if(nrow(lab[[1]]) != nrow(lab[[2]])){ stop("Number of CY3/CY5 is not equal") } #Reorder rows in each group (Cy3,Cy5) to the same order lab[[1]] = lab[[1]][order(lab[[1]][,arrayDataCol]),] lab[[2]] = lab[[2]][order(lab[[2]][,arrayDataCol]),] same = which(lapply(1:ncol(lab[[1]]), function(i) all(lab[[1]][i] == lab[[2]][i])) == TRUE) all = lab[[1]][same] gspe = lab[[1]][-same] colnames(gspe) = paste(colnames(gspe),names(lab)[1],sep = ".") rspe = lab[[2]][-same] colnames(rspe) = paste(colnames(rspe),names(lab)[2],sep = ".") metaData = data.frame(labelDescription = c(rep("_ALL_",ncol(all)),rep("G",ncol(gspe)),rep("R",ncol(rspe)))) ph = new("AnnotatedDataFrame", data = cbind(all,gspe,rspe), varMetadata = metaData) arrayDataCol = getSDRFcolumn("ArrayDataFile",varLabels(ph)) rownames(pData(ph)) = gsub(".[a-z][a-z][a-z]$","",ph[[arrayDataCol]],ignore.case=T) } # if(!all(basename(files) %in% pData(ph)[,getSDRFcolumn("ArrayDataFile",varLabels(ph))])) # warning("Some data files in the zip archive are missing from the SDRF. The object may not be built.") return(ph) } readAEdata = function(path,files,dataCols,green.only){ message("ArrayExpress: Reading data files") source = getDataFormat(path,files) #process extra arguments passed to read.maimages # if (!is.null(dataCols)) { # if (length(rawcol) > 1 && !is(rawcol, "list")) # stop("The argument 'rawcol' must be a list if multiple column name are given.") # if (length(rawcol) == 1 && !is(rawcol, "character")) # stop("The argument 'rawcol' must be a character if one column name is given.") # if (is(rawcol, "list") && !("R" %in% names(rawcol) && "G" %in% names(rawcol))) # stop("The names of the columns must contain R and G.") # } if(source == "affy"){ if (.Platform$OS.type == "windows"){ rawdata = try(oligo::read.celfiles(filenames = file.path(path,unique(files), fsep='\\'))) } else{ rawdata = try(oligo::read.celfiles(filenames = file.path(path,unique(files)))) } if(inherits(rawdata, 'try-error')){ stop("Unable to read cel files in ",path) } return(rawdata) }else if(source=="ae1"){ #Old AE1 formatted data files if (is.null(dataCols)){ dataCols= try(getDataColsForAE1(path,files)) if(inherits(dataCols,'try-error')) return() } rawdata = try(read.maimages(files=files,path=path,source="generic",columns=dataCols,annotation=headers$ae1)) if(!inherits(rawdata, 'try-error')) rawdata$source="ae1" }else if(source %in% c("agilent","arrayvision","bluefuse","genepix","bluefuse","imagene","quantarray")){ #data format can be directly read by limma rawdata = try(read.maimages(files=files,path=path,source=source,columns=dataCols,green.only=green.only)) }else if(!is.null(dataCols) && source=="unknown"){ #read generic source given columns specified by user rawdata = try(read.maimages(files=files,path=path,source="generic",columns=dataCols,green.only=green.only)) }else # TODO: add more formats (illumina) stop("Unable to recognize data file format") if(inherits(rawdata, 'try-error')){ stop("Unable to read data files in",path) } #reorder rows of RGList to reflect the same order in ADF as Block Row/Block Column/Row/Column if(is.null(rawdata$genes)) stop("Unable to read probe annotation from RGList") if(is.null(rawdata$source)) stop("Unable to read source from RGList") rawdata<-switch(source, agilent = rawdata<-rawdata[with(rawdata$genes,order(Row,Col)),], genepix = rawdata<-rawdata[with(rawdata$genes,order(Block,Row,Column)),], ae1 = rawdata<-rawdata[with(rawdata$genes,order(metaRow,metaColumn,row,column)),], rawdata) #if generic user has to specify feature columns in data return(rawdata) } readFeatures<-function(adf,path,procADFref=NULL){ message("ArrayExpress: Reading feature metadata from ADF") lines2skip = skipADFheader(adf,path,!is.null(procADFref)) features = try(read.table(file.path(path, adf), row.names = NULL, blank.lines.skip = TRUE, fill = TRUE, sep="\t", na.strings=c('?','NA'), skip = lines2skip, header=TRUE, quote="")) if('Block.Column' %in% colnames(features) & 'Reporter.Name' %in% colnames(features)){ ommittedRows = which(is.na(features[,'Block.Column']) | is.na(features[,'Reporter.Name'])) if(length(ommittedRows)!=0){ message("ArrayExpress: Ommitting NA rows from ADF") features = features[-ommittedRows,] } } if(!is.null(procADFref)){ if(procADFref %in% colnames(features)) rownames(features) = features[,procADFref] else{ repCol = getSDRFcolumn("reporter",colnames(features)) if(length(repCol) != 0) repCol= repCol[1] else repCol = getSDRFcolumn("composite",colnames(features)) if(length(repCol) != 0) repCol = repCol[1] else repCol = NULL if(!is.null(repCol)) rownames(features) = features[[repCol]] } } #Sort ADF features by columns Block row/Block column/Row/Column (only applicable for raw data exps, processed data is ordered by reporter/composite name) if("Block.Row" %in% colnames(features)) features = features[with(features,order(Block.Row,Block.Column,Row,Column)),] #Row names of featureData must match row names of the matrix / matricies in assayData # ri1 = grep("reporter.identifier|reporter.name", colnames(adff), ignore.case=TRUE) # ri2 = grep("reporter.identifier|reporter.name", colnames(fn), ignore.case=TRUE) # if(all(adff2[,ri1] == fn[,ri2])) # featureData(eset) = new("AnnotatedDataFrame",adff2) # else stop("Do not manage to map the reporter identifier between the annotation and the data files.\n") return(new("AnnotatedDataFrame",features)) } ## Assign experiment Data ## By Juok Cho readExperimentData = function(idf, path){ idffile = scan(file.path(path,idf),character(),sep = "\n",encoding="UTF-8") idf.data = list() for(g in idffile) { e = unlist(strsplit(g,"\t")) key = e[1] if(length(e)>1) values = e[2:length(e)] else values = NA idf.data[[key]] = values } ## making key matches # ## (Person Last Name, Person First Name, Person Mid Initials), Person Email, Person Phone, Person Address, Person Affiliation, Person_Name = c(idf.data$"Person First Name", idf.data$"Person Last Name",idf.data$"Person Mid Initials") Personal_contact = c(idf.data$"Person Email", idf.data$"Person Phone", idf.data$"Person Address") ## making experimentData object # SubmitterIndex = which(idf.data$"Person Roles"=="submitter") experimentData = new("MIAME", name = as.character(paste(idf.data$"Person Last Name"[SubmitterIndex],", ",idf.data$"Person First Name"[SubmitterIndex], sep = "")), #performer lab = as.character(idf.data$"Person Affiliation"[SubmitterIndex]) , #Person Affiliation contact = as.character(idf.data$"Person Email"[SubmitterIndex]), # Person Email(Person Phone, Person Address) title = as.character(idf.data$"Investigation Title") , #description #Investigation Title ##abstract= "", #not provided in the idf.data ##url = "", other = list( accession = gsub(".sdrf.txt","",idf.data$"SDRF File"), #Experiment Name identifier = gsub(".sdrf.txt","",idf.data$"SDRF File"), #Experiment Name ##Experimental Factor Type experimentalFactor = c(idf.data$"Experimental Factor Type"), ##Experimental Design type = c(idf.data$"Experimental Design") #measurementType = experimentData(eset)@other$measurementType #from processed data.zip depending on user answer about QT type ) ) #experimentData(eset) = experimentData return(experimentData) } skipADFheader<-function(adf,path,proc=F){ if(!proc) columns = list('Block Column','Block Row','Column','Row') else columns = list('Composite Element Name') con = file(file.path(path, adf), "r") on.exit(close(con)) Found = FALSE i = 0 repeat { i = i+1 txt <- readLines(con,n=1) if(!length(txt)) stop("Failed to recognize ADF file format") Found = TRUE for(a in columns) Found = Found && length(grep(a,txt)) Found2 = length(grep("^Reporter[[:punct:]|[:blank:]]*Name",txt,ignore.case=TRUE)) if(Found || Found2) break } return(i-1) } getPhenoDataPerAD<-function(ad,ph,dataFiles){ phenoData = pData(ph) arrayDataCol = getSDRFcolumn("ArrayDataFile",varLabels(ph)) arrayDesignRefCol = getSDRFcolumn("ArrayDesignREF",varLabels(ph)) if(length(arrayDataCol)==0) stop("Cannot find 'Array.Data.File' column in SDRF. Experiment uses multiple array designs. Cannot distinguish arrays with similar array design.") if(length(arrayDesignRefCol)==0) stop("Cannot find 'Array.Design.REF' column in SDRF. Experiment uses multiple array designs. Cannot distinguish arrays with similar array design.") if(length(phenoData[phenoData[arrayDesignRefCol]==ad,arrayDataCol]) == 0) stop("Cannot find array data file names in the sdrf file. Experiment uses multiple array designs. Cannot distinguish arrays with similar array design.") #Subselect data files for current ArrayDesign REF selectFiles = phenoData[phenoData[arrayDesignRefCol]==ad,arrayDataCol] if(!all(selectFiles %in% dataFiles)){ stop("Some or all data files for ",ad," array are missing.") } #subselect phenoData Frame for files ph = ph[phenoData[arrayDesignRefCol]==ad] phenoData = pData(ph) return(list(pheno=ph,dataFiles=selectFiles)) } getDataFormat=function(path,files){ if(length(grep(".cel",files, ignore.case = TRUE)) == length(files)){ return("affy") } else{ #Retrieve Column names from first data file allcnames = scan(file.path(path,files[1]),what = "",nlines = 200, sep = "\t",quiet=TRUE) allcnamesL = try(tolower(gsub("^\\s","",allcnames)),silent=TRUE) if(inherits(allcnamesL, 'try-error')){ allcnames = scan(file.path(path,files[1]),what = "",nlines = 200, sep = "\t",quiet=TRUE,encoding="latin1") allcnamesL = try(tolower(gsub("^\\s","",allcnames))) if(inherits(allcnamesL, 'try-error')){ allcnamesL = allcnames } } #Find source of data for(source in names(headers)){ allthere<-tolower(headers[[source]]) %in% allcnamesL if(all(allthere)) return(source) } } #Unable to detect source allcnames = scan(file.path(path,files[1]),what = "",nlines = 1, sep = "\n",quiet=TRUE) return("unknown") #stop("Unable to recognize data file format. First line:\n",allcnames) } getDataColsForAE1 = function(path,files){ url2 = "http://sourceforge.net/p/tab2mage/code/HEAD/tree/trunk/Tab2MAGE/lib/ArrayExpress/Datafile/QT_list.txt?format=raw" qt = try(read.table(url2, sep = "\t", quote = "", check.names = FALSE, fill = TRUE, comment.char = "#", stringsAsFactors = FALSE, encoding = "UTF-8")) ##read the QT file from the web if(inherits(qt, "try-error")) qt = try(read.table( file.path(system.file("doc", package = "ArrayExpress"),"QT_list.txt"), sep = "\t", quote = "", check.names = FALSE, fill = TRUE, comment.char = "#", stringsAsFactors = FALSE, encoding = "UTF-8")) ##read the QT file from the package scanners = grep(">>>",qt[,1],value = TRUE) ## list all the scanner names sl = grep(">>>",qt[,1]) ## list all the line numbers wherea scanner type starts scanners = gsub(">","",scanners) ## Parsing the first line of the expression file allcnames = scan(file.path(path,files[1]),what = "",nlines = 1, sep = "\t",quiet=TRUE) ## Looking for the right column to use scanname = allcnames[grep(":",allcnames)] if(length(grep("Database|Reporter",scanname)) != 0) scanname = scanname[-grep("Database|Reporter",scanname)] ##Feature is a problem because of Feature Extraction feature = grep("^Feature^",scanname) fe = grep("Feature Extraction",scanname) if(length(feature) != 0) scanname = scanname[-feature[!feature %in% fe]] ##Ready to read data if(length(scanname) == 0) stop(sprintf("No scanner name is given. It is not possible to handle such a case. Try to set the argument 'dataCols' by choosing among the following columns names: \n") , sprintf("\"%s\" \n",allcnames)) ##Image Analysis Program software = unique(sapply(seq_len(length(scanname)), function(i) strsplit(scanname,":")[[i]][1])) st = NULL for(x in software){ if(length(grep(x, scanners)) != 0){ st = x break } } #if(length(grep(st, scanners)) == 0) if(is.null(st)) stop(sprintf("Scanner name is, ",software,". This scanner type is not valid. \nTry to set the argument 'dataCols' by choosing among the following columns names: \n", st),sprintf("\"%s\" \n",scanname)) if(length(st) != 1) stop(sprintf("%s scanner names are given ( ",length(st)), sprintf("\"%s\" ",st), sprintf("). It is not possible to handle such a case. Try to set the argument 'dataCols' by choosing among the following columns names: \n") ,sprintf("\"%s\" \n",scanname)) if(length(grep(st, scanners)) > 1) stop(sprintf("Scanner name can be '%s'. \nTry to set the argument 'dataCols' by choosing among the following columns names: \n", scanners[grep(st, scanners)]),sprintf("\"%s\" \n",scanname)) gs = qt[((sl[grep(st,scanners)]+1):(sl[grep(st,scanners)+1]-1)),] ## extract the QTs of the specific scanner type foreground = gs[(gs[,4] == "MeasuredSignal" & (is.na(gs[,5]) | gs[,5] == 0)),c(1,7)] ## the colnames to use in the read.column background = gs[(gs[,4] == "MeasuredSignal" & (gs[,5] == 1)),c(1,7)] ## the colnames to use in the read.column foreground[,1] = paste(st,":",foreground[,1],sep = "") colnamesf = foreground[which(foreground[,1] %in% allcnames),] df = dim(colnamesf) if(dim(background)[1] != 0){ background[,1] = paste(st,":",background[,1],sep = "") colnamesb = background[which(background[,1] %in% allcnames),] db = dim(colnamesb) }else db = 0 if(length(files) != 1){ if(!all(sapply(2:length(files), function(i) readLines(file.path(path,files[1]),1) == readLines(file.path(path,files[i]),1)))) warning(sprintf("The files do not all have the same headings whereas the array design is the same. It may cause the object not being created.")) } #Two channel data if(df[1] == 2){ rawcol = if(db[1] == 2) list(R = colnamesf[colnamesf[,2] == "Cy5",1], G = colnamesf[colnamesf[,2] == "Cy3",1], Rb = colnamesb[colnamesb[,2] == "Cy5",1], Gb = colnamesb[colnamesb[,2] == "Cy3",1]) else list(R = colnamesf[colnamesf[,2] == "Cy5",1], G = colnamesf[colnamesf[,2] == "Cy3",1]) if(length(rawcol) == 0 || (0 %in% sapply(seq_len(length(rawcol)), function(i) length(rawcol[[i]])))) stop(sprintf("The known column names for this scanner are not in the heading of the files.\nTry to set the argument 'rawcol' by choosing among the following columns names: \n"), sprintf("\"%s\" \n",scanname)) } ## one channel data if(df[1] == 1){ rawcol = if(db != 0) list(G = colnamesf[,1], Gb = colnamesb[,1]) else list(G = colnamesf[,1]) } if(df[1] == 0) stop(sprintf("None of the columns names of the expression files is matching a valid known quantitation type.\nTry to set the argument 'rawcol' by choosing among the following columns names: \n"), sprintf("\"%s\" \n",scanname)) if(df[1] > 2) stop(sprintf("There are too many columns that could be read in the files.\n Try to set the argument 'rawcol' by choosing among the following columns names: \n"),sprintf("\"%s\" \n",scanname)) return(rawcol) } ## assign phenoData to Nchannelset preparePhenoDataFor2channel = function(ph,files){ #if(length(unique(tolower(ph[[labelCol]])))==2){ arrayFilesNum = length(unique(ph[[arrayDataCol]])) si = pData(ph)[1:(arrayFilesNum*2),] lab = split(si,si[,"Label"]) if(nrow(lab[[1]]) != nrow(lab[[2]])){ stop("Number of CY3/CY5 is not equal") } #Reorder rows in each group (Cy3,Cy5) to the same order lab[[1]] = lab[[1]][order(lab[[1]][,arrayDataCol]),] lab[[2]] = lab[[2]][order(lab[[2]][,arrayDataCol]),] same = which(lapply(1:ncol(lab[[1]]), function(i) all(lab[[1]][i] == lab[[2]][i])) == TRUE) all = lab[[1]][same] gspe = lab[[1]][-same] colnames(gspe) = paste(colnames(gspe),names(lab)[1],sep = ".") rspe = lab[[2]][-same] colnames(rspe) = paste(colnames(rspe),names(lab)[2],sep = ".") metaData = data.frame(labelDescription = c(rep("_ALL_",ncol(all)),rep("G",ncol(gspe)),rep("R",ncol(rspe)))) ph = new("AnnotatedDataFrame", data = cbind(all,gspe,rspe), varMetadata = metaData) arrayDataCol = getSDRFcolumn("ArrayDataFile",varLabels(ph)) rownames(pData(ph)) = gsub(".[a-z][a-z][a-z]$","",ph[[arrayDataCol]],ignore.case=T) #} return(ph) } getSDRFcolumn = function(col,headers){ pattern<-switch(col, ArrayDataFile = "^Array[[:punct:]|[:blank:]]*Data[[:punct:]|[:blank:]]*File", ArrayDesignREF = "^Array[[:punct:]|[:blank:]]*Design[[:punct:]|[:blank:]]*REF", ArrayDataMatrixFile = "^Array[[:punct:]|[:blank:]]*Data[[:punct:]|[:blank:]]*Matrix[[:punct:]|[:blank:]]*File", label = "^Label$", factorValues = "^Factor[[:punct:]|[:blank:]]*Value", DerivedArrayMatrix = "^Derived[[:punct:]|[:blank:]]*Array[[:punct:]|[:blank:]]*Data[[:punct:]|[:blank:]]*Matrix[[:punct:]|[:blank:]]*File", DerivedArrayFile = "^Derived[[:punct:]|[:blank:]]*Array[[:punct:]|[:blank:]]*Data[[:punct:]|[:blank:]]*File", reporter = "^Reporter[[:punct:]|[:blank:]]*[Name | Identifier]", composite = "^Composite[[:punct:]|[:blank:]]*Element[[:punct:]|[:blank:]]*[Name | Identifier]") colIndex = grep(pattern,headers,ignore.case = TRUE) return(colIndex) } ## remove all downloaded files cleanupAE = function(mageFiles){ path = mageFiles$path if (.Platform$OS.type == "windows"){ sep = '\\' } else{ sep = '/' } try(file.remove(file.path(path, basename(mageFiles$rawFiles), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$processedFiles), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$sdrf), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$idf), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$adf), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$rawArchive), fsep = sep))) try(file.remove(file.path(path, basename(mageFiles$processedArchive), fsep = sep))) } ArrayExpress/R/procset.r0000644000175200017520000001625414710217417016303 0ustar00biocbuildbiocbuildprocset = function(files, procol){ stopifnot(length(procol)==1) with(files, { #ph = try(read.AnnotatedDataFrame(sdrf, path = path, row.names = NULL, blank.lines.skip = TRUE, fill = TRUE, varMetadata.char = "$", quote="\"")) #Read SDRF sdrf = basename(sdrf) samples = readPhenoData(sdrf,path); if(!inherits(samples, 'try-error')){ derivedMatrixCol = getSDRFcolumn("DerivedArrayMatrix",varLabels(samples)) derivedFileCol = getSDRFcolumn("DerivedArrayFile",varLabels(samples)) } else warning("Unable to read SDRF") if(length(processedFiles) > 1 && length(derivedFileCol) != 0){ #stop("The processed files contain different numbers/subsets of reporters and cannot be automatically assembled.") # READ individual files for each assay proceset = readDerivedDataFiles(basename(processedFiles),procol,path) assayCol = derivedFileCol ADFrefCol = "Reporter.Name" } else if(length(processedFiles) == 1 && length(derivedMatrixCol) != 0){ #Read Processed data file res = readDerivedDataMatrixFile(basename(processedFiles),procol,path) proceset = res$proceset assayREF = res$assayREF assayCol = grep(assayREF,varLabels(samples)) ADFrefCol = res$ADFrefCol } else stop("Unable to read processed data") #attach sample data dataSamples = gsub("\\.[a-z][a-z][a-z]$","",sampleNames(proceset),ignore.case=T) SDRFsamples = gsub("\\.[a-z][a-z][a-z]$","",pData(samples)[[assayCol]]) if(all(dataSamples %in% SDRFsamples)){ #if(all(dataSamples %in% rownames(pData(samples)))){ rownames(pData(samples)) = SDRFsamples samples = samples[dataSamples,] #Reorder samples in phenoData to match those in data phenoData(proceset) = samples } else warning("Cannot attach phenoData") #read and attach feature data features= try(readFeatures(adf=basename(adf),path=path, procADFref=ADFrefCol)) if(inherits(features, "try-error")){ warning("ArrayExpress: Unable to attach feature data") }else{ if(all(featureNames(proceset) %in% featureNames(features))){ features = features[featureNames(proceset),] featureData(proceset) = features } else warning("Cannot attach feature data") } #read and attach experiment meta data experimentData = try(readExperimentData(idf=basename(idf),path=path)) if(inherits(experimentData, "try-error")){ warning("ArrayExpress: Unable to read experiment data"); experimentData = new("MIAME"); } experimentData(proceset) = experimentData; if(!validObject(proceset)) warning(validObject(proceset)) else message(paste("\n",gsub(".sdrf.txt","",basename(sdrf))," processed data was successfully loaded into ",class(proceset),"\n")) return(proceset) }) ## with } readDerivedDataFiles = function(processedFiles,procol,path){ for(procFile in processedFiles){ cat("Reading processed File: ",procFile,"\n") procData <- try(read.table(file.path(path, basename(procFile)), sep = "\t", header = TRUE, # interpret header row.names = 1, # header located in line 1 stringsAsFactors = FALSE, na.strings = c('NA','NULL','null'))); procsel = matrix(as.numeric(as.matrix(procData[, procol == colnames(procData)])), nrow = nrow(procData)) if(grep(procFile,processedFiles) == 1){ E = matrix(procsel) rownames(E) = rownames(procData) }else E = cbind(E,procsel) } ###TEMP### colnames(E) = gsub("\\.txt","",processedFiles) ########## proceset = new("ExpressionSet", exprs = E) return(proceset) } readDerivedDataMatrixFile = function(processedFile,procol,path){ #Convention for ArrayDataMatrix file # First row contains assay refs (eg. SCAN REF) # Second row contains gene annotation values (eg. GEO:AFFYMETRIX_VALUE) # avoided using header=T because of automatic name cat("Reading processed data matrix file, ",file.path(path,basename(processedFile)), "\n") #READ HEADER matrix.header <- try(read.table(file.path(path, basename(processedFile)), sep = "\t", header = FALSE, # read in and interprete header row.names = 1, # header located in row 1 nrows = 2, # num rows after header stringsAsFactors = FALSE)); if (inherits(matrix.header, "try-error")) { stop("Cannot read header ", file.path(path, basename(processedFile))); } #READ a few rows to determine column classes for faster read.table proctot.class <- try(read.table(file.path(path, basename(processedFile)), sep = "\t", header = TRUE, # interprete header skip = 1, # starting from second line row.names = 1, # header located in line 1 nrows = 5, # read in 5 lines stringsAsFactors = FALSE)); if (inherits(proctot.class, "try-error")) { stop("Cannot read classes ", file.path(path, basename(processedFile))); } classes <- sapply(proctot.class, class) # figure out classes #now read all table data.matrix <- try(read.table(file.path(path, basename(processedFile)), sep = "\t", header = TRUE, # interpret header skip = 1, # starting from second line row.names = 1, # header located in line 1 stringsAsFactors = FALSE, na.strings = c('NA','NULL','null'), colClasses = classes)); if(inherits(data.matrix, 'try-error')) if(length(grep("duplicate",data.matrix)) != 0) stop("The probe identifiers are not unique. The processed file cannot automatically be treated.") else stop("Cannot read the processed file automatically.") #Create matrix of data and construct an expressionSet datasel = matrix(as.numeric(as.matrix(data.matrix[, procol == matrix.header[2, ]])), nrow = nrow(data.matrix)) #colnames(datasel) = colnames(proctot.header[, procol == proctot.header[1, ]]) colnames(datasel) = matrix.header[, procol == matrix.header[2, ]][1,] rownames(datasel) = rownames(data.matrix) proceset = new("ExpressionSet", exprs = datasel) assayREF = rownames(matrix.header)[1] assayREF = gsub('\\sREF','',assayREF) #Choose ADF ref column in processed data matrix to link to from ADF ADFrefCol = rownames(matrix.header)[2] ADFrefCol = gsub(" ",".",gsub(" REF"," Name",ADFrefCol)) res = list() res$proceset = proceset res$assayREF = assayREF res$ADFrefCol = ADFrefCol return(res) } ArrayExpress/R/queryAE.r0000644000175200017520000000224514710217417016172 0ustar00biocbuildbiocbuildget_request <-function(url){ qr = URLencode(url) response <- GET( qr ) if(status_code(response) != 200) { stop( paste( "Error running query. Received HTTP error code", status_code(response), "from server. Please try again later. If you continue to experience problems please contact us at https://www.ebi.ac.uk/about/contact/support/arrayexpress" ) ) } json_parsed <- fromJSON(txt = qr) return(json_parsed) } queryAE = function(keywords = NULL, species = NULL){ if(is.null(keywords) && is.null(species)) stop("No keywords or species specified") baseURL <- "https://www.ebi.ac.uk/biostudies/api/v1/arrayexpress/search"; page_size <- 100 page=1 query <- paste(baseURL,"?query=",keywords,"&organism=",species,"&pageSize=", page_size,sep="") json_data <- get_request(paste(query,"&page=",page,sep="")) df_hits <- json_data$hits while (length(json_data$hits) > 0) { page <- page + 1 json_data <- get_request(paste(query,"&page=",page,sep="")) if (length(json_data$hits) > 0) { df_hits <- rbind(df_hits, json_data$hits) } } return(df_hits) }ArrayExpress/build/0000755000175200017520000000000014710267740015333 5ustar00biocbuildbiocbuildArrayExpress/build/vignette.rds0000644000175200017520000000041414710267740017671 0ustar00biocbuildbiocbuild‹}QÁjÃ0 U·]ƒþ€¿ °[GZ»Œ°Ã®nâ—Ä ¶YÖÛ¾|¼$%ñ`‰'ëùI¿¥cÄ ÁdCiIqOƒµÇ[cÄy÷ÙimVè.èï¦ýþÔ´hºâ%êIxJà•p‚[é,WÚ!/8N²tÿm«cп›/E.6¿Ýž• ¬Õ£Âƒ°r(X«w‹Z5`ñDv¡E#m0k•ËVêÊ_ƒFJÚ»ÎÉ[¯]ÆÍ³>= library("ArrayExpress") sets = queryAE(keywords = "pneumonia", species = "homo+sapiens") @ % In March 2023, this query retrieved 87 identifiers. The output is a dataframe with the identifiers and 9 columns giving the information about these datasets, such as the number of files, the release date on the database, the title, the author and content. For a more extended querying mode, the Biostudies/ArrayExpress website offers an advanced query interface with detailed results. \section{Import an ArrayExpress dataset into R} \subsection{Call of the function ArrayExpress} Once you know which identifier you wish to retrieve, the function \Rfunction{ArrayExpress} can be called, using the following arguments: \begin{itemize} \item \emph{accession}: an ArrayExpress experiment identifier for which the raw data are available. \item \emph{path}: the name of the directory in which the files downloaded from the ArrayExpress repository will be extracted. The default is the current directory. \item \emph{save}: if TRUE, the files downloaded from the database will not be deleted from 'path' after executing the function. \item \emph{dataCols}: by default, the columns are automatically selected according to the scanner type. If the scanner is unknown or if the user wants to use different columns than the default, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files. \end{itemize} You still need to be connected to Internet to have access to the database. \subsection{Examples and ouput format} \paragraph{Simple example} The output object is an \Rclass{AffyBatch} if the ArrayExpress identifier corresponds to an Affymetrix experiment, it is an \Rclass{ExpressionSet} if the identifier corresponds to a one colour non Affymetrix experiment and it is a \Rclass{NChannelSet} if the identifier corresponds to a two colours experiment. <>= rawset = ArrayExpress("E-MEXP-21") @ % In this example, \emph{'E-MEXP-21'} being an Affymetrix experiment, 'rawset' is an \Rclass{AffyBatch}. The expression values of 'rawset' are the content from the CEL files. The \Rclass{phenoData} of 'rawset' contains the whole sample annotation file content from the MAGE-TAB sdrf file. The \Rclass{featureData} of 'rawset' contains the whole feature annotation file content from the MAGE-TAB adf file. The \Rclass{experimentData} of 'rawset' contains the experiment annotation file content from the MAGE-TAB idf file. \paragraph{Example when the column names are needed} In the case of non Affymetrix experiments, \Rfunction{ArrayExpress} decides automatically, based on known quantitation types, which column from the scan files are to be used to fill the \Rclass{exprs}. However, in some cases the scanner software is not recognized or unknown and this decision cannot be made automatically. The argument 'rawcol' is then needed. Here is an example. <>= eset = try(ArrayExpress("E-MEXP-1870")) @ % Here, the object cannot be built because the columns are not recognized. The error message also gives a list of possible column names. We can then call the function again, feeding the argument 'dataCols' with the appropriate column names. <>= eset = ArrayExpress("E-MEXP-1870", dataCols=list(R="ScanArray Express:F650 Mean", G="ScanArray Express:F550 Mean", Rb="ScanArray Express:B650 Mean", Gb="ScanArray Express:B550 Mean")) @ Then \Robject{eset} is created. However, there is still a warning, the \Rclass{phenoData} cannot be built. This means that the object is correctly created but the sample annotation has not been attached to it. It is still possible to manually correct the files and try to build the object. To do so, the functions \Rfunction{getAE} and \Rfunction{ae2bioc}, used by the \Rfunction{ArrayExpress} function, can be called separately. \section{Download an ArrayExpress dataset on your local machine} It is possible to only download the data, by calling the function \Rfunction{getAE}. The arguments 'input' and 'path' are the same than for the \Rfunction{ArrayExpress} function. The argument 'type' determines if you retrieve the MAGE-TAB files with the raw data only (by setting 'type' to 'raw'), the MAGE-TAB files with the processed data only (by setting 'type' to 'processed') or if you retrieve all the MAGE-TAB files, both raw and processed (by setting 'type' to 'full'). Here, you also need Internet connection to access the database. <>= mexp1422 = getAE("E-MEXP-21", type = "full") @ Here, the output is a list of all the files that have been downloaded and extracted in the directory 'path'. \section{Build an R object from local raw MAGE-TAB} If you have your own raw MAGE-TAB data or if you want to build an R object from existing MAGE-TAB data that are stored locally on your computer. The function \Rfunction{ae2bioc} can convert them into an R object. The arguments for the \Rfunction{ae2bioc} are: \begin{itemize} \item \emph{mageFiles} A list as given from \Rfunction{getAE} function. Containing the elements 'rawFiles' (the expression files to use to create the object), 'sdrf' (name of the sdrf file), 'idf' (name of the idf file), 'adf' (name of the adf file) and 'path' (the name of the directory containing these files). \item \emph{dataCols} by default, the columns are automatically selected according to the scanner type. If the scanner is unknown, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files. \end{itemize} As an example, we can use the files that we have downloaded in the previous example. <>= rawset= ae2bioc(mageFiles = mexp1422) @ % The object \Robject{rawset} is an \Rclass{AffyBatch}. \section{Build an R object from local processed MAGE-TAB} Processed data in the database are less uniform as processing methods vary a lot. To import a processed dataset from ArrayExpress, three steps are required: (i) download the dataset using \Rfunction{getAE}, (ii) identify which column is of interest thanks to \Rfunction{getcolproc}, (iii) create the R object with \Rfunction{procset}. \subsection{Identification of the columns to extract} Once the data are downloaded, we need to know the different column names available in the processed file to be able to choose a relevant one to extract. The function \Rfunction{getcolproc} needs, as an input, a list containing two slots: \begin{itemize} \item \emph{procfile} the name of the processed expression file. \item \emph{path} the name of the directory containing the 'procfile'. \end{itemize} This kind of list is given as an output from the function \Rfunction{getAE}. <>= cn = getcolproc(mexp1422) show(cn) @ \Robject{cn} is a character vector with the available column names in the 'procfile'. \subsection{Creation of the object} We can now create the \Rclass{ExpressionSet} using \Rfunction{procset}. This function has two arguments: \begin{itemize} \item \emph{files} a list as given by \Rfunction{getAE} containing the names of the processed, sdrf, idf, adf files and the path. \item \emph{procol} the name of the column chosen after using \Rfunction{getcolproc}. \end{itemize} <>= proset = procset(mexp1422, cn[2]) @ \Robject{proset} is an \Rclass{ExpressionSet} containing the processed log(ratio) of the dataset E-MEXP-21. %Turning off evaluation of this section for now (Oct 26, 2011) %until ArrayExpress server failure is fixed \section{Example of a standard microarray analysis using data from ArrayExpress} In this section, we are briefly describing an analysis from the data import to the identification of differentially expressed genes, of data publicly available on ArrayExpress. The first step consists of importing a dataset from ArrayExpress. We chose E-MEXP-1416. This dataset studies the transcription profiling of melanized dopamine neurons isolated from male and female patients with Parkinson disease to investigate gender differences. <>= AEset = ArrayExpress("E-MEXP-1416") @ As AEset is an Affymetrix experiment, we can use RMA normalisation to process the raw data, please read the rma function help. <>= library("affy") AEsetnorm = rma(AEset) @ To check the normalisation efficiency, we can run a quality assessment. For details on the arguments used, please read the arrayQualityMetrics vignette. Please note that, at the time of its release (Oct 2010), Bioconductor 2.7 didn't include a 64-bit Windows binary version of the \Rpackage{arrayQualityMetrics} package (but this might change in the future). <>= fac = grep("Factor.Value",colnames(pData(AEsetnorm)), value=T) @ %Turning off evaluation for now (Oct 15, 2010) until someone has the time to %troubleshoot the following error on Windows: % Error: processing vignette 'ArrayExpress.Rnw' failed with diagnostics: % chunk 11 (label=qanorm) % Error in aqm.report.qm(p, obj[[i]], i, names(obj)[i]) : % could not find function "svg" <>= if (suppressWarnings(require("arrayQualityMetrics", quietly=TRUE))) { qanorm = arrayQualityMetrics(AEsetnorm, outdir = "QAnorm", intgroup = fac) } @ Now that we have ensured that the data are well processed, we can search for differentially expressed genes using the package \Rpackage{limma}. To understand the details of each steps, please see the limma user guide. <>= library("limma") facs = pData(AEsetnorm)[,fac] facs[facs[,2]=="female",2]="F" facs[facs[,2]=="male",2]="M" facs[facs[,1]=="Parkinson disease",1]="parkinson" facs = paste(facs[,1],facs[,2], sep=".") f = factor(facs) design = model.matrix(~0+f) colnames(design) = levels(f) fit = lmFit(AEsetnorm, design) cont.matrix = makeContrasts(normal.FvsM = normal.F-normal.M, parkinson.FvsM = parkinson.F-parkinson.M, Diff=(parkinson.F-parkinson.M)-(normal.F-normal.M), levels=design) fit2 = contrasts.fit(fit, cont.matrix) fit2 = eBayes(fit2) res = topTable(fit2, coef = "parkinson.FvsM", adjust = "BH") @ Here we end up with a list of genes that are differentially expressed between the female and the male patients having Parkinson's disease, which was the topic of the paper, but one can perform other comparisons with the same data. \end{document} ArrayExpress/inst/doc/ArrayExpress.pdf0000644000175200017520000026470214710267740021114 0ustar00biocbuildbiocbuild%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 319 >> stream concordance:ArrayExpress.tex:ArrayExpress.Rnw:1 19 1 1 0 22 1 1 2 1 0 1 1 3 0 1 2 33 1 1 2 10 0 1 2 10 1 1 2 4 0 1 2 3 1 1 6 8 0 1 2 7 1 1 2 4 0 1 2 21 1 1 2 10 0 1 2 14 1 1 2 1 0 1 1 9 0 1 2 9 1 1 2 7 0 1 2 9 1 1 2 4 0 1 2 1 1 1 2 1 0 1 1 3 0 1 2 1 1 1 2 4 0 1 2 5 1 1 6 8 0 1 2 1 1 1 2 1 0 9 1 1 4 3 0 3 1 3 0 1 2 3 1 endstream endobj 4 0 obj << /Length 2286 /Filter /FlateDecode >> stream xÚ…XK“Û¸¾ûW¨|ªvÄ!Á‡ÈT%U²=öN×z½sI%9@$4Ḃ ’Öj}ºÑ Š”¹åÀF£ÑèLJn¾y~õð>IWáÖa¯ž«0Êý0ÍWiúBˆÕs¹ú·÷fÐU©›—õF$÷™†vÿ?Uô}L[ÓlgŒ¼<þ~2ªãµRö²SÀùßç¿Óq¡Ÿ'‰°Ç…‰Ÿ‹íj#2?ËC:n7”F­ÃÄ»€Èá°‰w¨eÓ ”Uìo£6E¾ˆsÚôKÑ·{eh‡Èïyˆ˜ÏÍVaìGqjÏÝÀý,ZmâÈO²-‰×›0&WX‡™7^ãm[UpaÝ6ô­y|£Û®J­&×ÝÃ…Çëæ~žŠO @eá‹4å{ÎL¥±§í˜x’>OþÒͧÇ#K{ úh]ûuh -÷F6]aô©ok]ðªlJšUÉ^•ÄŠÀ\Qyç£.ŽSU`®£ì­ñáäAºE×·†b#J½O»›¢­O•–MD:€–­Í€"‹¢5¥l Eô³î´òñÃã;¢bjÕÀn¸tçƒAâ=yËÕ(ÚÂ$ÇÀÊ®¯d÷gš¢—ð¦/°ôlJÍ&Z7Ôµ4üž À‰dd8™ö?A *'„¢g’†b0lW+nŽ!iÖ[@c©Ê€U›žÅhßãÝpbÔ©í6³+pÈh¸Âe ¾sdqA•¥ã-xÌ´::Žo›Þ§QBó1Jc‘“"*œwŠ· 6ÈaµAºÑê“b¢å€vQä§"&í'ÿÇÝ:I¼›çuwà þØó~œÖO6+±;GÏÝS”Ò•€MÉâH3Nef¸Rãây%  m°¶i Œe[ _Äã’K€@iJý:9Ɇþ’»v‹Y´pR¯'àäQ/uÓѦšëz#:”Ò„àÊŒ›úËIñ›¼³rD0#LBº^¿¬€(aõ"tcBì½GFòËJ‚§wïa﯇æÖ8DYúÅÄb.ÖPÌΉ±”ß$€›"nTa!gŸZ°Žúôç"{÷y*“2xDæ3QËQèÕ0ðÁ‡R€-` T1caˆ£ g£y!g“dKHŠdx®6¥ªt­{· 7ÝBĉ—qW{"2,ήhm–›È#÷íÐó¾#‹›C¡Û¸YòUQ T~X[é¾R÷üø]£ÀR,èÂ=z,Ùê\°áKúWs+†h®¾¬°vÀ!»àA7vÒÎÚetˆ‹JìÕâ›Ó;+—.È"Žw%[Ðclˆ’ØSþ‹o§ø"K¶M§¾ʾ˜ÖR솪-øÅA9ÌJ‚3 <ì†Èsãü\&±Œë£êPuµ½\ô Ã/ç°€<ì¨R® #]£}ã0à<û.î Ó‚Å ^è&wœˆH$¯ÚØëØCŽÌa¦y¹p“½êÏJYÃ$dkáÔ“Ñ N0b¿é’Ìzû ­°¡ÒIð%ö…NÒÔ¥Y:ImØò‡ ^,™%Xê¤&Óé `‘¤Ò_Ö`Uu³éíã?瀂ŠÅ óvΗzzª7úw"`*<)ØzŽ“äÃäÃ'àýLó«NÀÉ5Ñ•wkKµONhW€¯lz"³“ ·î±t˜(¶ÓxæØ€N6Ï_ŽkäÀ#.«Š&A®bŸ×ômÃ5–‰Kp[YÈ=o˜D-Ò Êú±VqOêJŽˆKŽ_e.c{õÃîãLjÕDXŒIˆ Ðé½M ö-Q¿â©L:òÚmóNЍ{b:Öt|Þ§Á*eRÛA h©"håRƳ{\Ð: ÓLßah\E5Ÿ×Y1‘ÍêJk—ëf<_V[®V Àï„S˜ü>n.m? ;Iî”,™7Hî~ºcñP¹ÚÂÁ.6$zȺ“,”½Wæý¬lT¤9…šÛ×GÊR÷há|$Þ­k€F5ư¾Fk¸Mý\$.\g?4®\"õ“\8¦ ü¤ùõ ~ÔˆZÊtt¾u9êj!jÊ|íïñ‹ºØÀºc¥ äÛw.Â× öîNê¶ÑòŽäõŽ>Ô8âT7³·mVjA:Vq”Å¢øºíç¶niÖÉ“V ¿\^îæjY('Ýbg2É@@FŽ2Äá–ÆýØÂKSô·ËOÐëšFõsê‘A„zû\Å¿Žkl.Ý_ÆyÀ÷9ƒºaFêþm½Iå+½7Ò\ðÍ~=ÅÙ×øæ-]“÷‘óqöWQQÐu9cúÍÖ_>~}Ï"Șs®#xæ'vʨÃM8ÃÛ•Çñü:ØÞÆAî}”½%D„?âœË?$òû‚¬‹Š ~”DζÄ9ËHãm–QÙ„Lÿ'„ËØMÒ'úà`dÍœÔçâŒ~]ÜJ¦$qWš§ e±õràÑjªžm§þC¸r&ó.®Ë!¦NÑ~›À¶°êl·è7Ø4ÁÝLfæ5Cmb"Ñv 0rye7§WV(hé§ òÀ!‹PkÅùÑ·Ö]ÂÑcÛU¡’·t9ÚkÍ„DÄ50,ºjºþ–yˆƒþÓ k#|¼x÷×±ÜÁõº-¿;”©.vø“èûÌgµ‡F‡s³uÿ\ÝÇU,©F€:“!a¬°ôT8X4,Xÿ8±vŽn ¯8c“r?òÕ&Kü NÝŸdXzõøüêÿUËea endstream endobj 13 0 obj << /Length 2609 /Filter /FlateDecode >> stream xÚ½YY“Û¸~÷¯˜ò‹¨ÊˆW9U¶3öN*Î&ãI%©8˜¥H…ÇŽgýv£^¢œum’'B«ûCßzûðâæ½Š¯¸ô… ƒ«‡ýU®¢@ø,TW»«xr½áŒ1ïîxªêv½ óÒ’¾oê:}¾ýrª×<ötÓu—¶i£íÒ¼l+ݯÿùð{ºû‰Ræ6vµ ¤¨Ä^æs{Ý»´(h_µ§o{Ð4ØweÖæÕ%è–ð*ñ“0í%<öÃ˜îø¾Ìð ¡¼çªÃAèýPVë@yOD~:äÙ&ò.Û|ͽόº&¢Ý óÆ®32¥Ömk<ëÇ5Wž¾FrlY‡u=ë†É]ÅÀd(‘É ¾ä˜5\öb-‹†~„[œ™û·öž ÐÓ;{{×äå#Í##pØÕFæ .ót̾* ‚6àKX»#àм2{yèKÃÎÈ$§Ÿƒ@Y™¢—±/ÃÄ1™fÈÒ ?GÄ~$¤[ùj½|AËz Óî—“®säË*šyªþPO*;p:V¢:Å3žuòÚùt0xD#Í‹t[hŸ€“‘ð¨P±¿\úSÚG¹ ΄Så•éÑ>¨1T47µËkµUýlµ<ÓÝ~)bR膨;zನÒÞY­¬«ã †4Ãܨö©jòáÆ§ Ô@be U I’­¿T[§Y«w>½ëƒ{ƒÞ¯ñ»Â½a3{¥¬«ëþ…‘CåÙç Œ¿ù5šôG}á5Øø5‚8ñr„ž%ÞÃýZ2ï/·×ô“x„Á/ü8ƒhÞñT¸-8Iúe „Qì•UK¤­[¨ Ýž´BuZÑ8Ý·FãaHhÏ“u-qÿ@LLmýÌ›þ:@Q wU±äª„ò“xlÛÕ3ê‚©8Ù …IðÀ˪¢;– -5¦‰Ô´k«cÚæè䞉ÔL™Áɬ̲ªÞ†“蜑ÜÛ€¿,3C}>modywûa!yIb}¢ÙÃæH…‘ôºÒ…’&*·`O èn tÛûd·jWTýì`/œ¸×d¸fÀ#B[MK7Ò4?2(€R²p¸wìÈplª«µõƒøŠ¨YQhÃJdà  ª£ Ç¡÷•ÌøW ·F”ÊnªŠª«i_Š^¤!zÞíØ5-QÜ©)M¹›xÊÛÑHKdüz±kˆ¼º_]}õ¡ÝoWöÖrç&´ ëcn"4¹Ø™eÂ,¾4FßÛØùŠH†aø O´# … ÕŽB—å±ÖºìWË|¬«ÎMÓ:<4Í~  ÔBÐþZXV•kë‚42šŽ Ê‚‡emÒ+Df‡Ô8ãš~6¯8Øq­µ”°ÇŒpD¥ìÑ¡Á˜WàÀÀ·7öÂùÞfÄÙ‚`²lN•Ác@5Ž  }NÒ¿’^i)O´YBm³C³ÎÚ:;H=ÙT& >þ¾æ¨Ì­‡k]Zj=c͹¬@îg<}WÌ¥K„õ`3 tÒ6Õ0‰ÑtU/„‹þ¥ì9öYºì9°Ùóí—ôx*2©Ã´êNeÇø–ª?Ú|)aþ”ãY œ\zš^póD 97obbæÿ° å,=EÿÆäÿB¿Ë‚¡¯xìÄ0eˆ<ÒàOº]\îÉXn<œÔ'œK‰”‰”dRFå!úÇ1 ­#‡qiì3q)½ˆ•/Y< “K)z¯‡ù,ßK—Ò‹Øç¼ìïv‹ ((!ƒ c:/ ¦ ŒìΖCDSÎõ.–Ö*¡r˜ÙpÐEq$>#bê·ëMȰìx2¥1Ž_Óg¬šŸ™b/o7oÿö§MÀ_ÂOÞ—ŠSóÄ£­}Þë”’< ü¾¢ÏÍ¡:ê›m^eÛ./v7Ûm³PÁltÓOTßÜÃ÷§ûêîíŸo87iêgºXòÑÿå›ÔÂMáÿä¦àÿ&“nšl¤œ>ÝÉà"PUÊ$#«_ÆÉ^/XEe{:M_õª²Z²ŠÄE_Íl5z¸#µ·Î}—€œéÌwI,7ÖCŠ껢¥ŽåeO–D&¶~ƒ Ø é H(ÂÄ‹0›˜ÇÜçí‹!Ò ¡lí^t&ï°4ÒdÊ®ÆõÔ[J¼J•×h^yïnÿ@ û”b£À›>ôAo‘ôhœº¬~‡M‡…@ù!ïQø×Äcš›‚`ÒÜ "_p>EçéPÆJ¨~)  j¥jÎÔµÓ¤•†æzpŸʵ'€ôñ VÄn7ëDxoÞÒt³«÷ã³°bø%`ésÙ¼½NÛŽBÞx ÇðàMçð8þ <„Š”¾Tr¡ L9x“– Kヿ>8T„9|ÜŸyŽ9q·§=<2º¤7P­ú¡rÒjÌ{Û¼PAB¨&úÃô‡ AµŒÔ<wJµ”MÏúXyØHyØXyX¯<£ó–”Cõ~|”¿œœB–Ä„t9’Õfž`§k.™{ø¨¦ãCM‡Cª‡íLí!{_ðÙàŸ賻³ÃMG´9ª²kæÎiS ›ë…60È£ƒ_ØÞlÇ|øŽz ¼w)¤MýûJê•4f¿é4®¹gšR 5ŒícKç)`ÐP+FC· n n+.¬è»µ¿M…½¬©IbM§Àqß­™YŽ |‰™åÔ˜Õ-áp?ˆÇ‘'æÞwƨ›_£Æš¨L¦€œ4•©ŠÔ…fÒí‘ãf.ÝS^IÁ¶¸ö‘iûá ÖYõXæ?™N,¨êÅþ’¤Tš®Ê­ÃÿÔ¬:AMŠßÌØë´v=¦;W†ÎeÞ®´ eìU@Vg]Ür(ûöïwÚõØûô¿»cÎK‰õ,íµµžçÓmýŒiô¥´2rfë!¹þi²Œj¯\¯HÅ}1¨hll¼-ªd=9K»,Æn·çDCO©öï‡Èë4§σc@×ðÔ(‚_àØšôÑîN‹¦"²muõµzÒ 8î!‘=ÚœäXrª ¥ÚŸÔÁÊò¥È‹¼¿®cfºµtîžßL…hDý‡äôqÿ³”Ö5íA]¨Û3Þ2S?˜:ëYÂ*ÓÄZò½ŸNuuªó´ÕÚI¿B÷¾ªt×K|ý"CÌ1^ãàÖû×/?–æD:Üžûê}¨Q>ê´¼x¬ÀFЇ˧¨¯œNO¹ß^<æí·0ó•c¦Ü|Å>–øŒ%@ tïà·/~(,b endstream endobj 17 0 obj << /Length 2566 /Filter /FlateDecode >> stream xÚÍYKÛ8¾çW4r± ´eIÔà ° tf:óÀ0hôa€=Ð2ÝÖF½’œNÿû­õje’˜½Xd‘,V‹_UÑïßl?$éMîçi”Þ<o öó8¾É"åiróx¸ù§÷x2õú_?o?¤Áh.L‰Urð$ÓšŽ'MF©¿Ë"7©l×›(ϼ¢1º3½‰“ÈûÑ®£Ä{6øûi&žiÖqàÝ®7*ȽîdÃËxùÎk»²ª˜¤ùó¼O7uY? ËDæl¬_žÐÊÉsÍì÷ºÓ ’Ç™ 꺮mÇ›í ‹±_Gw-«ŽôÁNNÀ³Ñu‹Iìu}Õ©‘(§±ä@ý=¢Ê´LÕõA†YäX9›fËÙ|(n±Þž,8XžÐÚ[l$Ã’ãµ.Ð:mïÛ;8ü4ÆÃWaâgaúO¦»»_òîÜ¡%³Pê׬Âο¿ÚDûÒ ¼Tæ§Iîæ‰°×ÖÄò$ЦÞ“u‚‘³wŽ2? wŽã]Óè—ûÏ—Æ´íÂöiæq¿½³Í-óïç¹>ªŠ¼Ú­¹èÎ7M<_xïnÂØWq!óMû!\ÄR~żG²Þ„Axß[¼¼Ïueµpt»õ"¯Ã‡bõ÷Á†:V¦¾ xØkýʂ€Ü<ƒ_—µYМ5Šü(MYôñ0ÏÉÇÃ|äØDEÿCª­Ñ‘r`Ô±qŒ<‹†@B´ÀÐ^f£Áœf™—ð'†æ×<ð5ïÍg¶Ì®5Yîéz6u×òت¬/×n%ãõA¨ÝVÜÖ _æM”Á ¦J\.uÐ….\j¤hVsëhGZrÈ]ìÇÉ7;dêg*œ;¤+âFc ‘ª ¡{¹˜Ï8˜Î4gp–ûå‘¿/öÊÆtM9 >ƒÔøåƒÑ÷6J˜„~¸›áùã:WÞÝ{Xç#$ƒÎsٸŠ¡ÑhÜæ™;è*Γ ‰Aì¥ ŽÞ‘ß`g¢ZÌNÉtX/lW°:¼mÙëðAaù‚ —Æp6tϨ (/‚gé 8´Á¡3<“ƒô~ ›‰äC𥃂/4 ¨š"4Xnྠ- GÚ¢iv‘··¤.ÌŽ™QàÆ û‚ƽž„~NOèLôD\¶B?^«ŠTÄh÷#ä4‚­¬¢^ÕÊôÚ8lý©ç­Ø¶®M!}Ä^EŽÞ&÷”ÈÄSè} 8>_oRâ³ù| ã(âÞßøCÀƒ ¿½ßürÿÛ¯°ðí-¡¢“¹oQÍ·t’¯ïsÈ™ådcgå¼NÁñ_» å5Ц|¾š?UÙÒ ýQèðU:,œš¨Z84&½ßE’h‘œ ¯œ#@Ãà’Ï]£‹Î•õlÏC‰ ¥\E¥¦ËÐYaS „ï]^3DÀÁ—BûHˆgϯ"]£Ÿ¹þ©û€þÿõ؇æŒcñÅXÍÍÅC ·ÄZ.ðÍ¡.ô€Ââ1x\¤NÖÝG2wõ2Ë=ú¼£°gð](_L„è¦?ºûøG±r¿0Ý}=GŒ?—$=, ŠR:u=ˆ‹”uK^åK°O#_eñ,®9ág‰éc›?J>óÀO²oÓhH;Áæï$ÌBjE 4`n$nú;PŠº$J=‹³F_zÂóa'^‰h°°±ò“!½¸ãbF&…$Hj¥§rˆ75‘³-$7œMü C’Å Y‚Üù;[wº¬ÙuS‡‰ …©Œ³|: ÷P½ÏB”–%¹\J®Äé0wIü(ÉçÁl ˜–ñêŽ)kÏî±¹„CíP²Äk Üoh¬"'AÍÉâ¹{&<‡X’ž檇§dÂ)NÉÀ‰f1`,—>,‹´”Îg”Öbc`뮓 ‚Ëžy’; ä,,Þµ9×qÌà;<=ÏkÍxÛ–³:Gvx¾É·_ D¹ïlµtT!ªÁÜF© Rç#óµêðU%Ä¡ÂV×3”ÎÔ!¨¤Æµ³gÝ•’ Lß‚ïëУè‰HVls Eq :}çŸZB™ )\Ž$‹(F¹‰R“Ì“ê¤_ n.¯Bêµ-ô‡4t+˜—‰\.g©ÓiSWþRVî³6ðšYÙ°£8fy.XHâ–TPê´"•lt¾2Ö \5IN¾ô®Ââ³£›êÐroõ°"ýÀÍàÒö+n±·"éGp¼qwÖóé2}X6àw¡”†ï•kXÀÁ Åý0Ûî©‘W¦g,=5öZ/fÖ´JP{]|äixüpe{C㨭ÑY¢´72ÙÈ記btLd+GY¢¹[œ4åt²¸…Ò‚\Ý„J!œËN Á6_jl‘ïFd]Ð:CànsoZ‰¦â 4¡оX..xÏ2›/³z5³P05”»vš30z^”ÂåÙ̇®NÇ~çI…9¤Vnå,ËÄ‹7OÅ)™qMØoíµ}%ÜR¹³Yª=¤è¬n³0’§ †Ÿõ“¡à:©p\‰4Ô8“'ñY]õ`4.E5ðûŽ?Û“=›-î¶Çw»ß·åGÁIÛî|±}€oPüCýö²} i*³àÆ*ÙgÙ~;~BÙ~*Ÿ RìL» £@ií¦ZòË¿PªäÿRªhAªô/—*¤Z(ÞÐ˲Y’.Ñk·ŒcõOÐìñKIÀÎWI:ù¯†àu^û£ìùˆQôøò^wÞÄÓ2sĘþ¡r¹8V~˜EÓê8ûßTÇüˆ<Ó™¶/½uý±í£÷Â_BqîgA6R˜ãé,h’€¾ùnò·P š”C)Ò—gã8¹p=\F9"2ü+ ’|!&ÿQùËxºƒR}—ù*S<¦pìÍýã›ÿŒ‡„ endstream endobj 20 0 obj << /Length 2130 /Filter /FlateDecode >> stream xÚXmÛ6þž_aì—ȸ•,Qïî€mêÜõÐ4¹Í-æ-Ñ6/2ååìú~}g8¤,{µÙl?ñm4Î Ÿg¨ï^-Þ¦Å,Š‚2MÙìn=+ÃYÎâ ÌÒÙ]=ûäåA4÷£0 ½Ÿk¡zùG²Š÷²UsŸ¥¡×®©í·‚:UÛvJÛÙ–ZñÐw¼êçŸïþ f³2(3–á~áÌŠ +h·÷ª5qœ‘>ìÔ¼çÔã™J½º³Ô»WMËkQ_ÃdZx÷vQ Q[-µ_É_*–kœ^‹ÎESd;õ߉yäi»÷œ…ÞW”ç²á«ÆêêBé¾k+¡5˜G5‡3®¥Ó¡ïÌ—‰5.ɽ•[à ³m[-HŠÓT'@l CŒÕ0Ûª `wê‘ǃ¹Ÿ–¥w·µ"냪LðL$²pV@$²#Á²4H¡’±у;ð<QKó€%…E—k Cz\[‹m(Õþл5šj¤6™0ócÆ‚"bç^ªZÕs©¤ÚغŸGg4ÐMÛëÌ×Q$qß‚YÌy˜±Ô-™[IV:k÷ÝnHl“Ó9Š:e»ñÿ¾ƒ©ážÐn; ƒ2Éÿ‚é¼ßNÌ€…ÉK ®e'ª¾íŽîÎ^¸ÜɽƓ‘é¯íiE‘µ=£-ï¶Ò^ø/RÕç{šh›ž“ÙHÊap’°Þáv‰;T9ô6Ô_wíî¬oe1¤TX¦£,¾YN¹, Šrðk`±‘„ ”eHÎÈÔ?æ~XX)jÿNÍé®ü¦áN<죄1èGS0`uèm{â•r‚æ(gÐ8ÞúSô™>¼zÓîö­–½ ñ²;a8¸]¾½šûyrõ›­ÜÿpóuCK?ÉõújÊ O±Ól¿Xi¿áMÚ"ž?V¼õ´žô\ÏÛ¦m;” ãé÷¿üdõÿëæ×.?ZË}ëÛu@þô.ùÅ.ß©îöoÔîW¤8Jà^¸RÙ‚I’¹lqyÌíåÙrDZÑÑò/ï%ÜÙóô “sžî®ÝFªç.å%‡û¬ âš"Hݹ°-¿éæQá‰oqx»ú¯ø¶þm^ Ø‘ñîêdkf;ØGœ´?Æ·’Q>`×Psƒäü(¦lH‹ ?qÏA#jMà@„Å òÛJO*‹ó KG8àÇÀ5'8€ÆŒ¶¦Î(‰nx-58fcñ˞ª§r‚9ø‰_b+[WÇ ÷d%”xÏ‚¤I£ð ZÓŒ~ޝ-}×ÝÚveíz¼^9r ‚úR°Ÿ%¡ˆ¥AqûËäß6Sç-À)/âÑñ•…zM|¶ðà©òš~_¹yY|›­ò"ˆ£i¶­˜ýcƲ7bLW׎Ú>±ÏßÇH·‚×&œF[áÊvƒ·¼ïäõײ×D(ÞbÛîÄb%ÛjuM½X­´C!ããÔ¢ßí¡HYÜBV¿Ä¿·F,Î’<\GIœ®ò|µ¸é:~\R­µø*7Jô½Ð‹¥ÿnùû0ÖÌòÑ"$õ<*Ë nSÿÐ?ÉÖcx^N3šÈ;ÐÆÑ‹‘íù wQm6íÃØ! ›¸=QòÁñMà`ðψ?’Šsâ(Ž=áEd,!s K˾ÛÓ[…vÁ–S£{¸µ¼«i´“•Æ–c¬ âÍQKóª*íÝ0 ö™—`½g>ÚÑèÆxÍ7‘sÓ/}”1#³lø ¥é)ÜôÝWP2ùêg¼§y Þ1!„žè’ f“8kžœØYuR<ÅX0çðvºêäŠbƒrʵîx8²•«ÙGØÍ1qJB ×õv¹=ƒÅÇomøØÄVÇ/WªDê%nÇG—1¡„¾>Ïk¦×aÕÈÊ}þD­â(q|ÿ‚³ë4¶Ç­Û=ßI%hQ‰C×*«^ê¶êÉ ºd ¼±âÄ‘¸(N“@“K‘³Ä°µS1úÓ‚wð^Ó.–µÔ‚kqþçªÏĵº—›9|å*:È£ÚÑÜ8'¦8*<§kKN7ËKn‡‘íj±«3]Vè«Ñ7#·K™ìȾ3a‰Œ>îqÊØ #:‰Ý5 @€ÅÊ}y GEÞí»ZRmAz(¬#ëÄÈ!6ÉõóÈÛZuÇÍîI “ïšæ`1O¦!”Õ—Õl>Y³Šfÿ­`dgÁhäªãÝÑx¯×Ç«gްƵxð³‚)¨Á,¾ ^wx_Ñce÷UT_°[ØÂÜ¥ƒaM˜øœ„œ¯Ð™Çy–zøÃ),)j¨[ùî h†ÓøPØí ¤ÖtÀ…¢ðõ™wˆÖظÑ$ÚZ5Ö¶âüðtܶ.cb¸¾‰ 'ô,¤$žáÌÿyï0;+M ®ÈA#æ}©Qm/œÞÛ}x¡¹—;Û3­ìµ³c¤ Cø¾²_³0 1”×SÉð#l­ªöÑ 6 rì$ µz®éiAªª9Ô‚œd²J>»þ¢Tö¯¦IàYn~U0!Qg¬a-¿¦vúyÉŠ<ˆÙP°W î]zöq‚Éø•¹çÕ¾±f£cVH‹÷3gA˜'çPÛÈÜlûá_Úˆ'ÞõëCèz™˜”…ðH K*à.4j\zµ¼{õ'ŠÇCq endstream endobj 23 0 obj << /Length 1041 /Filter /FlateDecode >> stream xÚ•VßoÛ6~Ï_!èej©”l)öƒ4kŒb@†¶ð¶‡,Œtr¸È’FRqaûÛ{ü!Gtܸ}°yâÝ}üxGÞñj}ñv•§Þ"^äiî­+oA¼Ët“<óÖ¥wüF9!AE #,ͰáÐýE2â¯h![ÿAëüIÑÖ Ý‚Pªî=•T ï®Ȧå[üHÔob0ž”Ïr­f»õ¯ñ¢4‰É¥³2«Ì¨Dßu„ø“ò†5½ ‡zÆA“¡œÓý§žÖLîo@rVß.†F ëýrýù÷ë‡^Ykÿ$H Ë 7a”Ì•+UäíŸXÈÙéÄÁËxS‚Îm/KÆ<ÿÓ;åæ¿êǹámß9ž˜˜qü”ÅJ÷v…»zÎr2‹³™÷ܘÿÖ†iìÂ(“@>Pi¤˜ñ†)æ,L²ÀÎ@#z¥ë dõ%æßH”ÃV×Fêx[`&¡œ¨ïK»L´1(/Œ\µÜBâi@’ph$£u½·T­/úl !‹hØâ8"h@ GF‚^à2¢!ŒBG‹Gº¯ür|+1™Í1À¦fÛ-=Õ—$ù`cÚ¬Cä×ÚE›¸´)V.ARV[jmeF zÿ( ˜X’5PaÝÀ¡fwÜH›ž•Ûm/{”àU_d*J8™ºW¾f÷œò½¾XÖqÐòã!g3Iq<]n'hywêÄŽ€nõß$½[.ý ¶´Æê‚þÊÿÇg·›ïtK”ÛGÊY#ÚÆ¨K&TÈ}¥ô»Awй¥Åª@ «L–¶< è–~ìë*¸ÇWKï€z&9%¶iÿm[Bo)–¯/ åò¦:C`\ß âs µ¨5ÙèÔJN£Ó¦÷ wù0 MÍ´¨½ƒuaØŽF'Z¦= ’!Åszx˜Æ™.‚ŠÌäŸÂ, ¬¡­˜ªcM§ÁîéF†Š]ˆ‘Z+Ãq0£¬0s::jJë¦ê2uØÆf$Ð`³à^Q襱jke^ Êx¥kZ(Ü´[< yŠSGÍækÜIÖ9Ûœ±‰éîé¥ßdááÅšÅóÌ>T3¥»¸^_|‡Ø j endstream endobj 30 0 obj << /Length1 1612 /Length2 14910 /Length3 0 /Length 15744 /Filter /FlateDecode >> stream xÚ­µctåßÒ.ÛvVǶÙAÇìØYIVlÛìØìØv۶ݱ­Ûÿ½Ï9ïûžûåÜ÷Ãã7«j>õT=5kQ~QRa1±3IØÙ:3²2±ð,lŒ\œäíl心Ì\œ””bŽ  ³…­8ÐÄЙÄAÆ66+///%@ÌÎÞÃÑÂÌÜ@£ö]ƒ–žžá¿,ÿ„Œ<þ§çïM' 3[ÕßWµ½ ÈÖù/ÄÿõEàl˜ZXƒbŠJZÒ ’I5€$Èä´(¹Y[ä,ŒA¶N Z€©#Àú߀±­‰Å?¥91ýÅqNö c‹¿×@îÆ û\ {£…“Óßo€…ÀÌhëü·Îv [ck“üµ›Úý‹½£Ýß›¿¾¿`JvNÎNÆŽö΀¿Y•Ä%þÍÓÙèüOn'‹¿n€éßH;c—Jú—ï/Ì_¯3ÐÂÖ à rwþ'—`bádo ôø›û/˜½£Å¿h¸8YØšý€#È èhb rrú óûŸîüW€ÿ­z ½½µÇ¿nÛý+êq°pvY›2!°²ýÍiìü7·™…-ó?ƒ"mkj`eù·ÝÄÅþú\AŽÿjÍ?3Cû—ÐÄÎÖÚ`2E`V°sþ›@ó§2ÓŸÈÿ ÿ·üß"ïÿ?qÿS£ÿíÿÿ}Ïÿ -ábm­´ù;ÿ^0€¿Æ øgÇXÿ_á@ kÿÃ…ÿ Ôý›äÿŽ´3ðo3DlÍþ ÂÂÄòo£…“„…;ÈDÉÂÙØ` ´þÛ©ÙÕlM@ŽÖ¶ ¿Šþ«™FV–ÿð©š[[ÙþÓzλ@¶&ÿIþ¯Hÿ¢Î,¥.&£)OÿŸ;õ_QJµwVõ°ÿKì”"ogò¿ÿ`ˆŠÚ¹¼ÿ¾@F6vn×ß„<¬¬>ÿ‡lÿ‚aý¯³<ÐÙÑ ó·dÖþ?~ÿuÒû˜o¶Æv&ÿÌŠŠ3ÐÖäïxý/Ã?ncGÇ¿ªþëÅÿ-øžÿ5è ;ÈaeÑΘ?Ø2-3ݹ7gp\\§·›r0ľ¤Aµ0߿ڮË/-|›·Âð­&„©q’ï£ÕcáÄþ}_†î`¸Çšº+t‘GäCNÛ“¾AÕÎMȬ_‚œ~ªåu9/·¥ÍÅ¢~°3®ü]¿ø †x²Ýîò‘ÖŸÜ5ß‹âÁÅ×8µ>û7Z#FmÁÉ)UâŸÇêþ‘¡Á®kèž}BúìXxJ~ ®oòÉ—$gCÇ»ãèWn·~å ´JH¦Ó¤–(ŸagÒK­‘&/(‘Áð@îüfK<Êôe¿ì~ç2•¶‘¢<ÒE‰&ÚÉÞF–ë €Áå=|#<%'íö¯G,½-#h†,¸_f‚\ë1Bî¥ûî‘{¶MbÝ‹?¸vƒHÈû¿ö\·‘Ió¹´E[gûu¯‚×À¹IdøÃÞ–±‰ÜÜÊ9®±À»A<Ŭ¥ã’uM[Þ]Ùq´óÌU²qODëôr÷ 𡊠ooNn]D{ßqp‰€Ar‹ lzC,=-Ù*-åówû/¿žf3Ñ 8,YZ.ßYŠ“lå1!ŽŸ3x¢ô«‘–[»¸¹ä€NÇ4áÅr†„ˆZ5j8gk9×-Å«¡z¿ßyIƒJfÉPÝo5H&IÚ”Æç’!<çó"]‰ë"†¢D+—‡clË1Ä;ý§ú½ÅÃjû⩬ç‚y}§¿^A*ݱ"Ol×° +šONâÍ }s,éàÀ”M8{Ò„]Z*Ž º©%ߘ‘tX·ŸKS ÐÆÍ|K| iÌ š*ѹ"I¤…µ~Bú)öûn+IÜõ¤XV )‹èÙøÖ.Ëc]RÕAßQ§ OaTöo;§²Gí!Uí|u(>gøÃ;€S^NÙÞüžž­ß˜q¤Úåy%õ>Ãè#2<®´‹¤i£¡cBUÊŒFŒJCñx'+«ºèrãO˜ñú¦yM\¾”ÞtHKóäU}mãÁå'vð;¬î9U°jÔìöìÈ„Ò(BOLêAzî"âÂ"LÐ óe>æ}³ð)¾eè¢îAÙaZPhÎ@Ê;¾yÅ—ÿBi•<úß+˜Ä—‰BQ竲—LÏy>\|ªyX$“^ŠZs[Ÿ 8ˆ¬Âzƒõ~‡ã«'+aì‹Ö9s*‚œÛGš¶WDöoƒõ®J1vù‰ž,Ê«X“3à§ ¢:»MZM¥ˆ¢Â¹2Û³Ö…†¢Gý]H£€Šm—Çœ4ÔQñ‡ÇþBùÙsЬa/÷ö˜]æ`½qEPq`FºøIo?E0¶®Œ WÕySÏm<’À·»NÎPœ«à¬ôö¬êéc‘b¯).qGO½ˆâQ¨aN1Œy`ç–Ó9â1!ßEÐ:RSu7/l\}ü¶é™ÁêåÙÕ­{—3$ý.Œ×«ï½ö@@ZƒXô݃hN¸}øð2È;ŸàéW8j¬í&/Heñèê÷¬ÞãôH§òBÂÛælý½9avl+Äfm°gµ òm-L\oÇŸÎÞ[ã FÜÌ'âzoîƒ+¡aÃBú:æ-ú÷®Z ÃUñᾫÊl“¨¤‰—¼ö™ÈØ9Å^R Q ¨ö{…÷>”íIžï¦¶H£?b‘ó)<­²˜CÎ7ÇÞÊÖLÍ®·© l™M<¿§ë»45JçgPx’ O7%Gã‡ÉI!µ/ÎGk¨|ÖG“db“¤{‹ ú&{…¿ˆÛgñ4¢ïC cÌó²D«ø·‚Z` ëRŠ­N«W`rddò9`%øv)j÷ U$qàjÉw¡WeÛÆ,~~0ËpåÄÿ¥ÝFÒ4¾y»™=Êâ’]Ù’–C;Í{£)RÑxŒãhÂÙ§dÊ/¹E„Å­:=óŠÏ(Vð뎽Pe´WÓm{ƒ­¥|g+³IÉXýôÞ™^W”)#_&pŽuãÅjN°,dÀîYÀ!ÏrùòŒÏ0D ­„½Çwé›[ƒS)EB“¡u¼ºÅ«›°ÃàMM@…•ƒúç2¶?„õý‘\‘Å^‡Ìó†áW‡ãKãªOŒ²`¤ú±ãHæágQÆ#­}`yy«Õ%aM¶’P“²—u:¢“YµÄØú z¹dðZÝ™õ]¤"¬ˆÀ/tV*¡÷å{×`%*JÖv$v±Tµ2©©Ñº]èüòx¿â$!oÅ™v˜ðÓUdzÍ%¨ `$ ¦Ÿ0%l‹Ñš:àƒžÀ×¾¥²são¯Â%…”güÙRÉÏßq?(4Ñ–{°;ÖúYP“cÈ<#®ý£ÚüÚp©kh(•p¥ÑÚWùcýäaå?ïcT.áÁm6y pE×b‚Eð:zÑý*ÌïÜ":"ÐVµ"x˜æ_ÈsïZÔSžd—”5<ö*áÖ)aš¦ð™ÛFf æj÷Dka/E¹ö˜B2é \üByãÂn*@¿ ÝùR˜ˆ‚¢”ðÙ_ðkÇ@-‰nYª—Ê;z¹[Èía¯¡æ7ÓÁoÑBm®“irqdÿÊë.(WÔ?CÜc‚sNõݤzÇR¿;Ñʺë¯g¡)Ú 'd˰…˜›&±äoŽžõr’Âް=b€‚ï K°³Æž"Èã{®õ$ºÑýJF7OôØ>3{tÔŽºˆQ•Ñ,:¢Å:§ÓiÌ‘ Žä{a]êôýH”ʌዥ€Hèf…PKºñPf¼ó«”@ØŸ \ôQA&Ûî0õÜB‰Ñ÷Û¿|”òf×ïâVË]HË·¹&_]-Ùûk•ùÛ ˆ¡Ñ­ÛZ³z,¿Ï·¼ä\f÷OáöæÇ—b2Ë—ÙˆÑñŽJ4wŠ•B"€÷„ Lš^ ¼ùiŠ zTØSTm”b(^<坯«¤®nl¤Ý¾¹à¾=ü.È¢¥]2ß Ò2UGS}œjÊñÚ¬ÿƒ¬ÙDu(YáÁ5˜î‹)8’f`9b} /óú…û .Ò¤,õáAò s ²PŒBÚÁštWè)Ò{qüÒò#í"õ…œžî4q¿–6VzF£YZ´º .lFßnV´„íÌwÌÝ9“¾)Ä÷5ÜQ>O,bš†L̵}°|!4wib»ki,X3UÎQe:Eû(c ð$X?°pªoY1t{z¢µöˇ®Ñ›W! ŒY|GzyÓ¶ÛµÚ’ìiYºªDç¢òÑ‘ëózF ×eª¹Yst€“² ÿ»n´ }|¹_‚Ùç…tçhÃëTÛþ˜8_Þ¢ZŽ8Q4Îåˆd„'‡¤ô´ÂoTt˜‡ò?Je/çŸï=n–vÆn(Ü©ã[ÛAÈsàֿКöšëˆ7°éç‹íɵº*¿¹õëR4¥‹_ KÀt¤,†Ô±Ñ÷ž…ÙéÞCWrÎâ°aƒ#‡ã˜ ‹ 6|V“¶èºŸõ°-M(E¯‘ 5ð£2åcX£qÈ›Zèìmº¹YœeÈÅZ;WÖ‡‰q¾Ò­ÍÃd€åo,ö ï›\ÎÎ~#M½íJú8[1©ÊøÂYª‚žEÓ¡°’׀俘 *1ð®&êÑ Ⱦ‡ï|õ\Ê º‘A<Îwß”kº39|Øû‘Õ8¤ÓÚ(±ù[\^Ì7ušq^ƒ_€Ê FfÊòŒ}T„ÇÎ9/ÇßS&ŠñMÑîuM˜t/¾£ÕTÉàFW%,F Q¨pRzGJ,Ѫ©ÒêüByìòŒAtÀƒ;én¸%‡Y¥,°¤$Ú·OšÙÞedЂ«µôÎå£5Ó*ÅŽeìm9p,~jòˆ ¢û7´ªi7{{ÏÛ‡i W8¹á™Ámr”¡‘/Lk–ÓüW- éa‰«’†Ä«ìyüÓÑP ÷…þiVJd8ÁôxûØ€°ÒlJŽF¾JÍÞß´û{(dsM’¢áÐì´ ¼±7Ç:ˆ>ß$Åo³;7T[Ø#ÔžE;10·æpˆZ1Í3®ºì8,“Û£L/Õç¸ÑU,š¦fA/ý1)¾¦°f1¬ˆ÷ÆgM5IÕáwÅŠGߤ­q{X±m!±oaL„?aN‘sq`,ßÙ,†-ýˆ´S,ÝÎßœ™_ó0Ÿ‹¿`öÙŸŒÍs—f”zlºµRÒ'jzì¼àC²4³«ï*€ï§s¨v½V«É¡~’Á'±È¿–¤8“¼:T<ëåÍ7°™³5!~ûæÈ(.ŸÉXÜÒTsHz_xa~ÉMxוúëK¶g”ÐÛÍZËòÝëòK½ïëËŠ8X¦uHBcacÉ!‡ <’9üÒ°ËbÎvR®Õ)Ás;‚ˆýE¯yÿ˜FI,ÕÚ\V}ìF~ÁŒ=&…³×0‚j\HLf”Ž¿TôÁYoòݲZ¶û+BÎ+?N+©@"aŠ+¤ùÐFx#ó>w|`—n‹r³HÚÎ0wm¥<Lmyâ\‡¨w;:±ÎÂ¥d¬1?|ee¯²ËˆÓ+ÚWø‹›…Ťô±-µÁ$ 2Ý¡cw"*±£àûMmï=Ë•±Å‡‰’ÈÊïp¯Fžu¹u2 ábù+e ¥ðšx£7U·»•iùWM Œ-Ññ­G夰ÆÄ”–“zóàÉ*t¦9g)ñÝÔœ¢øÐ·‡‘d°,âg×E™D¶°ñ‡8,;<~¶~Sß“I¿Y©j}#¦ÏÈO÷ÑÁ²L7µÑï~Y¬ÌQI«[SV!*áÙÓÔ}Ý’¨„Á­S.p²5@'ë©,Áª×,È!ßF añÌ 'ÙaƒJkN[¶¡„»—“׉(xlBz¥s ªyóñG§Û…»@) X$£C¢<š"®‹}Fì„Ì ¯ì'­ŸðÑŸl@”þ2wQð‹`þ œ°.ý"§ ¡ CÃ[ïÒ-vqÛ0¯ÉTSÿb¬î›fʹÂ?Ï ”ÁÍV ýo£±y 9k(óÑX¨„oòÕ8ÎY’|*\ÐD Žùpl­s[fΧCÝ—/ý×íÁ Ö…D½üÀ€ IÝó-á\›êh !ʱk§ ‘p9¯¬¼$,§Š5«yøÊÂ\üxÙpSOò³Ò=w~ú¾íxÖœB´–PÌýàuÊ(¾|p~ëëUÚtô9‹z•uUˆ ã™À².¡<”i³F¨?¥#ôo5 Ä­žªÄ¡^a{ƒKˆz°ƒÖÍô,ø‘§¡jŽ¥^ðƒ@µº»ò ôúøUÆÚÑð¬|þÒ™>).ŠŒË›I¤£ÆdÖ ­*>Oý·NAqô 86Ýã¿a&ùî ·¤u4„¢#œ±±ï,Ô+›Íx’hh£d_sRœðté׿3sYš¶/ìüÜ®ú’—2#0µŸ,óNaè{o…ð¨ˆZȇÑ›ã$<7 &wœä©S²¼~I°A_®Oé~Õ =NŽÑiÏØõø”vs32Œ|¸K§y.ƒ\;ug9ý)IŸÆpë§U:“ÚSþ–Ê‘SéDûqbUuaªn9þ²Ö»åÞI £¹?öÇÀK»„ô·5Mìorî´ê1dæ ´ì–(1¸Ư‹ºª×›-KШéN”÷¢Û!¡÷µ™_v†„y™6h÷´”+ŽpÁÞ j£…9êy%䯧†ÛôÝPê3mÞ¦îêòhfÃ`Ý“?æÛãÏ}w½6‘y”¡†º/“¶3ëq%j‡ÀnESuÖŠæ# Ø  ´Å¤Ç£îú”Ô™Fƽ;"à I£öKšì?¨j´Äc¯Å• ůïK{DXóÛΦZýùö¼ý­xÇ z^òÞÒã‡õ,„Ní¤ùý ¯Â9ͲzˆIì_TLœr÷—óU°¹„îBè}fOΊͭ·ÞsS–p±Øö&"þ0_–Ár¾mÒ›-ß<ù­y‡¿Ãr '³;NM‰PÚœRã[½“ÔGêõ·q¤•Pb­¬¿†ôÀZóЦ÷O#–Ð÷AÞæÉ§>L‹?wvýG$øä}¥îWËS±’¦}5PòÏ[‰éœwèW¿Ë¢òµ•’c¤Ã€1<{á'š¥$ÁWx‰XöÔ C3%š1Ð…wHXþ ìfa5”imúc  ×¼[%€’¾°”ýJFÖœ/AÛŒ vkšk²¾y… }H¥ w¨‚šbVÉYŒwùÅkTÆ…êÛ!…Éس¼óì+ »#Ç__ "'™x¸6Ô¹I s|Tf¾KkÑ z`ôø~ök›æ`øpJ'ŸÑ˜ ÷'­/³ÇEc3§å§Ú£7ñfNÿtGâ¼L³—Ý¢§ nÌ·ŸR·Æ›«½v’³N<Æ-ãäÇÇ‹ û¤¹@îecôL[^‡ä ¼6’/“‡öµp~f.RPðÚ)…¸¿Ðè Yªž4šfôÁ{Ÿz fz6Ë ª¹&5ã=]v"B¡Éž:Fég.ÍE¿æqCÀôÊÑråîÂæžB…¥×)†‹Àxž-"¾6fAÕeõÔ.|)>ûª(qXiö@5CY‡Ã_“*PŸY’ZÔ(åYÞ/Eù@C«)Ó¼‰fÕ®Çâaxfز†Ï Ã@\š§JÜ7öV‰-l‹~ÿ]|äVïH›õ;ûO§9#ÐwMc ({/´¼GGªã«oV¡u[Œ”ÄX7„;¹¤Ÿv+‘*Âk¨äDôbÜxôË‹Ÿ)PJóÕqZyÅå¹Á\øÓ (x…)”pˆ?°J‚1 ü~ÈÃZ F%{£ÂIÐõ–ƒŒÃ±t|Šq” p¨îztªBm/ÑÓ”,"¹L?•=HUرvªIJ ÊFоâ©î²"üI,N1 ´âyhd,#<.}òRØ—ïµ#•Ih{EE"çæß}>öƒ¯ ‘Lš%àŠ¾”ƒš>õöËû3H¹‡¶ªÇŸ;›É3öã´.q=la¢AªmuÕ :ðÆ.Ž•SöA¿L3wnù]þ©ÌÏx4\ùq…ßSÅÚN ‰T_‡C´V%‰¨¨•t9VøÃ½¤> ‡ë•lº•Û1:ÁïrpÆØ¹b ö1@š©éù¼ë&…£Us>žÃªúJí(ˆ=‰„.Ò°¹¨{h F…dŸÕEÌçÒ ½-}š¡"’ýMvbß×rNèw¾U“æ8 Ç ¤Ôžx=–l•Ò…Õ3sbÀî]zM⡹֤öÐÅb¹[Á=]Ã*µyZ9b3žKŠTFxÒ¶dÞ‘Ã-öðü4§æÂòˆ»g”Z웊¦­o±*œå¬ZE€?Ck¡ËÂ,0tY©Ï0/GÁÃÉ­Ò¿§z];Z¹/¿r©0¬;33ÿ+lÿÝ«5ã~©Ô@y¢Œhuùç\×sQf?.ÿÙÈ‚_50ÂN®é$®ôã8+;çVgœkÙ{âGÇPÏs€!ÑÞ”Ñû² ]úQXÚÀ¶:jºr¼öNý“Æ~³æ§¥ÿ Ê%/‰®Ú6Ÿjˆ6³×b‚Ÿór’öJæáÖÑé·8óæÑþ½ FJ·‚S²Ðéã!7Ý±æ”Øþ°o+4âÓK3fÞ™–µµ.½]ò}ÕNíÇÝ¿÷±ÇξID5{°ys`ãrîäØ¿ßS/ŸQv€ælî"ì0lèT†g× ;¸J¯Fòŵ’ô‡á;â8áþÕ߃¬ø€…¯ä¶¶b¶/3èý<u #Ï&»òV$%)òê¹R¢,ã¦$‹MgÍ)‚w0ñá‹Ý—&¨˜øÐ2œ‚S÷'p-Jê|tÉÁ'Õ>$‡·ãE}æüg›Þ8> }–‡v,ùêcZé[+ªDmo*¤ F[ó? ¹}×ð{rš b´Æíùƺ†£Kll¿FeGó›+°è Êû/~~4…l/ǽ'U~HÐ t&1z{»¡ôƒ OhìŸ@*ùÜÁgi)Rl®DÅ½ŽŸx™¥þI¼’2ÏIqõe’Ç´5áÜòL^m7ÖDk9 »}¸øÞd˜Ÿ‹î+d…ÂA»¸“·þ–¼XH”LÛß¿Ø @†¿ÐÖ¼Øéî­mšÔçrФ¼þ8ªuCHÝƒÝ ª£Kì+“*A¬£‡Š›¿2,ô#š½Pƒù<+¤’Qbä>÷)ajO¶v,òX¤> •6ÉL+-‹îY³ÆÀ¬æŽÉr¤úáód5ðµE©/Û3’?w Õôþ%, e7oBWò“Ø$m?¸Öò"sÎÙ_ nΧ*S÷y•”Ķ3Û<8¾–˜¿Asž'kp}>ÚF©!¢YµÓwJÚ€^¢õA…Db[ùòýO `æ\Úù¨cE ¦„½’‰4»^y?¡8S(b'pßqmÒ}Š™a]éíLVÏxSÊåöX»Þz¨)@6ˆ­¢Þþ½]FÂñ•¨R#E-b•ŠÊ/—Ÿa #vÚY`êHU´³…×r°b&ÖÞ]æC¾Áî²±¿^Úx´>ºÿóX¼×`ÁÑ=@´ÛùO(gs-È®KO>5 Ö¸~É$:gV![uMŠ1@Í•J¿jøÊü´Ý_èSá ¯µ/‡B£¼'Q–isRö¢@¦è÷¬•¤ÝÝ@üe„ƒÖø÷$Fã‰}±§UgÄLT¡DÄÁòP¡{5<ñ(C~ŸI™¦ë,!íB.‘£ï)“ÝÉZIB¬Õ·¿[]÷3Ói)_Ü©—ޝUÝï¸U*%¹}m)]qSGgBòkkYG~f4¤‰ÓÑÀ§í/…íù«f/Ý»(Kà<‰›  ´×ó:{ë!¡ä«Xƒ_À~Qeí«à`ÅëF|ŒKGì$%L‰,Á÷j©ëkVe¡6Ž?IüÜáeוeBr…æ_eWðö(s*HßœeMÙ|å]TÏY#3›Žé“"õ¬Ûs¸ˆAìD°#[®‹žüôa°õÝ¿F°ÀKpÎòCðǰ— SÕ¡`ù} ´Y±¤©+ 0?å'ËÕjwpcs=Í VF,»›_õŒ¾ËøÄ©ÇNf8†5IL7< æ-x‰(Ñòø€ïßÛê÷¤pËõP–„J Ðl¸®Û9ë÷1³ðÌ ^d‰@5`°‹X`ö³‘q! kïdƒ+ ¨MXôŽzš~ö’Ò6®g\d}¯Û±ö›*Æ:óÚ¨5™xÎ×c7Ñ×YØó‚4ðõW î¥ú†ðeÿÙ;ÖE{Æ%ƒ‚éç—´H-ø–Õ|qæÃPúXùwʼnrÂZ\y{‹yA6Ïü†xX²èsB™ž8ŒD'àIϔ€<-ਂš¯&xhnNøš.17½/NWAÙ9šOWÙbyN97ᛆ_ºgS`ã.‡^†sD½¨Œòçé³/Í[JU=ÙÇå]Éi-2ëßg¡³¼¦;æÊ´ÉOGW»~àáÉ'ÕFQkEÉý)“®®2:ÁR_ÞmžÚC‡LU\,óH[Ç';Ê„€–E˜N¨Ì¯’ÁCˆ­smp›J;Hýk”FVõcÆ+ µ[~cAa_¢VÀ™ÏA´gu•ç¨Á¶·=gH#zù 1áù KÈ„´ë#f70 ±¾°\šƒEÕ9(Lõ»5ÄäÍïÁ›ýœå©"­^ؘÀÅ”ç5HâÔ§Ç’•Êdgu{ÎʳÅ–ïbþ¼´Å‚'þ,[;.w8St¦(Ll! 4ãÄ›¹GfŸÔ’-a}¶^â‘Þ 0EýŒÖ¬Ú¦ó1j™¯ŒÄâ3s´µn?…±†‡v7Ø`°ÙÖÐûQ› Î-©r:e•´¹iè‹eNbŒ·ÃÏ,Ï~/WýÃBEéZ`¨flˆˆåMèÓæ#xüÝ”­EcJ—F{é^]Í™·È§%†wÚÒPÞúþIçO _.ß2(õê|yê‡[=8h•g™pœœ9šVGÕC²â9-%Á«´·7‹4á¿}¼ß„ª*éúù5¡l\0ÄžŠïzàÅåqcÿjo¡9…[)S‰!•Õå! ÷÷ÒÈlÎ~ÈZÁßCo®:†lôÜpô wB¶ü³M¬£‚.eþ+4Ì!9Êë¹e3¥Á>"o bA•Ð|  ‘$mŸÍSnê[‹ZE.ƒ-Ï7òÓ’Qµž:·'º´oÍ%ñ8FÉßçƒ÷Àõ§V|£2 ïò/RÂP²’¢™tï:QÒGæQSáø8ï;¨ÖˆÊ0ôÙh—xlÂñ):ÊèÜW*­¬Žƒ9".ûa¥&í_ã<8ŠÙÃZ#Ÿ8¥›Òã¡É­“ÇVAŸ[ÈËé ã/ÏòÑR%Ç?ÜŸõ2£$i~ZM®ôŽ qÞÙzŸܰFåXN›jN¡»<›aÁˆ¼Á¼žLÓ¹Õ³uÑu †XÍåsò®tá(Üb¯Ëþœ0â·_¹JbB8=ìðˆ´©¤?Õ¿››ô7ÜXÃ=úlàÛ׳(óB²Sš—w¯ûÆû‚i´S´’Šì…5„o6™ïÜãÆ€¤Ýê=F ÈæsøØæ "›<-³)×–ÃøsÑtgTûï?®§)è÷ÊÊsv ˜Þ×›{n᡾æ\>Ý,uN{C½€¸ö4¶§Ø·Å×јx´¡ØÒ—àê|Š~£öέ,WõiÔ+š¬¯asuËýΓKíúsïÍjÉùÊ“E×Üeø7î4KWOÃ#uì«çT~¤6Q_h'ÓÝfX=«ê puôvßbÐH¾ZJjè+_7Á¬ÝFíçÀ<ù`~?ˆH ŸgW0[¾Â¶f€\…¼XdYˆÂÆ‚ŠÕ*î¡….r…Q¨nrzèÀU xžÑJ´ :1ýC÷q[býjå­’Rd~ë˜}=Õ¡Ež‹öøt|CI¸cì“Íbä'eÉ =‚%9Ÿ?~#Éc¡wÍ""|¨wØÉæÄÏe´Ö²òŒEtÍŸè‡d’mŠïù·l FXCP'Áƒ©n‹’|™9¼_üÎþ˜K}Û-YàŠÀ j|{\>is»Âë­T¶§ic ,ÒËv—5,*`§…\Êû׺8ûW'nDMVÓæ½Ž½oÙÌ ,3£0c'…Ö¿K†ë!ìrZµI ¦HóäHÕH:2cery°r>œ´ý"=ܧªC´”Õϳ£·bÝÄÑÀ”ÀLik>ü“¬ølãŸ\~ÞªŽfU uãë°èö­ðƒaÕ%Dö·‡>&Öw‰}ŲhYÑÎ6üŽs·:T‹° ÔäÁµáØ2\ó†¸îQgòj&™8àA^¼fãþšÊäk4?&qgÈc­ŒiŸ†ÞÃÌY^)xCµëŽð¸T•{eMå7îhQ£Ï%¸è‡i7ã*eöö ãÅ%ð /™fy"æ`&˜ªÊ¿ù•'2põ‰Ìf›I`PüÄÎå Í&†ÀÚ>Gp^[ã š)9ÊØSÁUw›•õ—uC¹4“-J#G¨Zzšªäåvœæ%7©lѤ•¤9s˜rn ɸíÆÂæH‹h*j¨ûÊ“,;Mþ†–÷Õñ9B¢€ZpYů©æôâæð½¤^×ÄéÁ¬¹…'–?‹vùÆå»]þX®Wþ8 “ Úóá$”8iûáo>Ý\G/!ïªuvxiºÔï¶*ͺ¬ê¨Í°C(–µt SŠÓ¸–lÈ~4—JPÅŒ1é.Ë×ñ¸Í#¡}¥p±—Ò&•+bá³Y^à: ’ƒF[n¸@Kw) Ñ à·Ófð#u]Äø׎#w˜¿|=îLŸxǵ3ýaL Ø èÛ —âÇá󠮺s½¸öM"ËH«XBŽÿ˜CäÍÎï#Ú'Ìw÷·?´t3±=ÇØŸß~~„siÀ°ÏüIäÅ‘ÎËãù€Án”âÙ¨Æo¤yÒœØyâb|cy @¹GŠÁuv´µÕHLq3€p^Ú[°¸› ƒn—|Ú.E`y‹Ãq@]mòrÏ2h»¥«ˆ€ô™B£+Ž‚¯7¡Ž‚Ý·‘îß+föi½µ§nJÓ«É~îEŽu½"˜zèœÈ<Ð"¢Ñ ÊR ǸËT,ªfÄ·Øï˜Í{ ~S§TÜÿV¶jÊ­ÝÝëM²NÓ8”2V9¬”ñkñlܘa¢@+ÒߨòÙê™ÄúÐ*„ùxIß›¸Ø™‘ÂÒËáVg|œËåK\(hÑðk‚á°¡I=ûªwCi¸G4ÓšÇñ]²€v8i”ó‰¶o8"€qÇÁ\öðþõûoY0W‚Åh¸ú'ÄX–·=\‘¾i&²Ëµ¤¯~ÖiDͺ9@SªÈóS¬#ådÆc1C~=uÞ“¯%AÆníϸE¥Á%êÑ¡G[sHÝKÅò‚¤±‡ †2I4ÙóöêïaßlË|0¶—b˜¤¼YÓ­ÚL.Ñ’Ú¡\ð­‚€± ÖMxFÓå:"ƒ²õåìî#ZaUÖé~?æ®Ç«à‘§¦¼¶A?<³tÚ˜´ Ý|‚§ež£XsÚÑ68(…:¨÷6…l;Ò-]C/ðnyA³øŽÃX@š–ÿ§Þ¢1ël)Va±™µ”nÚ„a€ÊC’5ùkB'Nk/Ç[þ‰]°çëgp#»&áÁ¤ÅH9â«–04o¸£æ[úóüú4,ˆ‡½MÎG¢POBÊýK…‡Ò±t¶pÈ–$°†C…poV~!Às¥ÉáõAŽòÂ`% Þ°·\¬þºÃEqÏ :¬ÄöÄŒ{Õr¥SR]SÆ-çóz(G$ùr‘®çRç÷ f~}Ø?’.žâèûz‚³ªÐ6ð* ÀûEB®?4ÉáÄ,Yº"¹A™¹Ñ"_°Ã=ú]6‰YE:ö±¼z&ü÷º‚dVÍé–´"öPö¸0ùskÇ!¼â7¿uÓýVS&-Ʊ’RPl”dÛ¹B{KÅ–v)2Áz^íÛF©•µÌ…Ú>¯Æ¢U_ˆ,YŽ`3 /OŽÌa=Ód‰i¦µ×Å;çäî¯ùº:>5Õ.|L cŒ(bVSÖy›‰ý€ÖÄPÕ1ëÊ4»ùÀ…&uù3iùè<¯&&5™[ä·æ –y-b¤HLv€™}ô8 =â¸húgzé5Dj#à,–G0B@ðâ¦ø%ÑcT5˜N…â„ ˆ”,š —P2«!CT6H>1Voª‘nr "^b«j@Iè«F±´YzèÄ…‹QÅë]­XØ]Á±îÛî¡óÈ­¾zr(Z¦ hP–þ¬‚}KV§J 27 †›‰º´£‚Q%9*ú¢gˆ'wµë  –ÿªQâ¦6'·3Cí÷ÂäŸöÚ}ôkA²‘'óEÄ-@0Ö€jŽª¶êy¼Q>2ê=RüÃcBÁø¤Én«=Ë¿‡ž^jQK³a7(Œ¶]#hµY1+ÑýþbÊS-¼fÓòÓŠtΦÏTŠ"‹Xչ哞÷C O‰ˆ·¬-!Ò¾Ðf}®z€á¸”ÌI‚÷ Å,H*½‚¯¤ñ@bTÀ+LænƒÏ×Í~Ó¿—Qa©’ê¢ b\Ù—·§ôžÍÀ#ÕáãmÊù/l!b—ža§ýžƒ„`PòÛë´ÚÝb6òº òxc ‡ðÛûî¯v¨¬P:‚înóà;;:´¯Í“·?†¤oºÛï…à[´™ÞRo}‹›!į›ò*׌&KV}† >°PK¯Pmê¸à5d&d¸[ŸŒ¹3_Ú L‰CÊ_²ˆÎbÐ.Å Ð<& eS”hâ¡I˜ßL:ËUboÉ,›¢àëÚ89ÅÔ1æÅ=þ ×¢j£Š4¹'D~‚KÙâvH'ZV?mïýªýºD ¶#_77 ø]ƾàW_N‰/¤ä%BÕcìÄ‚C^k‚GÜÝ´Ó¯êO}ëþøðåE}€‡´l d!¥I½LÏúÑD΋ÕÖ-ð!z·ïZ ÏŒ¯™*Aßò8·-C_u-ÞU×_¾ÇƒWYeÞIüÍÕýõË*H«hòÇEƒ/ÿdÌÂï%ùåW~§Óµ#¿YÓË#ÇðÉšë\‹_–¯ ˜ƒ¯Œ.ÓÂÕ•Ò8 Ò)«ÔP”=…7UÖF\C?§³}gÕãß( ƒ†Ÿé“ב:ŠC ?r®u9ò°°¤!@,BŒ3‘@^s‹žâòú&ày ;µfõ‚¬êpcÆw¿#çlòÅl ¸ë‰ AW¤iS³¿4ì>Q®{<Áo˜6õužƒ ¸[ú\‹JªnNH¿ï¿œ¿k~âïIEà{}'ûøÌ ͤ["ËÇ¥öÊiãzaý¯ó›@Š%ÈzÛÈ–.`‹iE‚žÀŠôÔZ@‘HX©¯èÏŽB!å"`e8†úŸ[r >«b­9§cÎÇy©ÿZ]êJ®Mmý}XhìŽ4í9ÝRbÂ{QëH±ç±ñ^ƱÊ0LõÕ«1ÀþP÷Û\ìŸÕ'´Šš÷Qç³ dI¸ÚGä‡xêô†4šZÔ»ÔŸQ õ5 “,±›òç38¶“çË\Iå§~÷|ñÒC~Dz‚¼·TÅ„U]=ârÈA6ìþÛ ‡Ù²ŸH“>°ýp·yúÁT”"ÀÀ¬ãÞïŒ}ýBö{ɾ+òKg‡.ž&&˺…C“.ÇÍ)w¿Ma(ºË—¶\âmK‘ê*§jÎNÅAä íÊCëfP 0AÚê uñÝšVak~ʇӀ"uán­¶ªO¼«¶[p»p‡=¹ âÞÔOÈ*ŸnrŠÕÉvߨÔ9ëPöžÚ¯ŽÛ– ¸žrè¢ÐžGbêá5Ý,––­©çƒn¾›ôí®ßRÿ‹J4d¹ËÕ žŽ*éLUô`~”MÚqãó$¦ø FTÎèno\hÌŽ êUðbu³ öÅxëvkÈň7ÅõYüFe¨~Ó'v HÉ5?غ‚µqOŽÁáàùÁ5Œtï ç«ÍƵÂ&¸Ònc¨ÇTi_T4ÌFÄàw4"îw’Bbxu•+DìüxXŽ“>oˆŽõ´¥¸ÛÚucîÚ>7•ýL¯õ´p$µr &3xó¬³8+^^ÂŒX(§íÝ_–-KÕÂÅÕg@~A4”¡;Ío¶<(º +Ø4U¹¸çÐ5OË{üT$lËÒ€nöÓ¦GÈ›ï™3fe(­ýkf/¡43ªk¢s–…??Žç%WÌíl×Ïëôo.’Î(¯Ä!Ú©i‘:!ßyþp\•(ûUÇ/L@h5C?(£'†~÷Q˜pxfOé\8ò…í³µàZAĪV;q6ÝÌbæ½##gB…µ@r;“È-ô•…¶“B‚b_VÌïº5×—c“Õæ)g0Ýžú §6Y|…L„¨òБ´Íïb†O³kÞž õê]G¹ø KÍÂ9A0¹ÿzŠ¢[.Æ—‰a‰¶!÷éLwY‹c…h–)EC.õj¤²ßÒ¶ázà‹`¸sžM|×1¸ªýíÆ:ÆtYàþ<—˜‘×g2¸vð\–o#OŸIg€\¬±æ9kWKüÕnçÏm¡:•(Å7± Ø»Ý}X×DoêÍË=‚ gÏRq›Ÿ¥«Q$6®œûgüÕËܸGC¤5r>³È¥Žà͇3e8J¼EôòÔJ¾v¿³4ڣظ_£˜[¢ó>™Ä£¹È|ú ²®ãT«¼nd»Œ½þ¬ç„Ä×)½h’ŒíÐó¶§]ï`¤§ì ‹½®ÂIù Á9HÍ)ÛÕ•v\cÛÚÕg –@&²—Ð+/HÈÓŸ>Zˆ•\‚ŒT´¿Å³-d¡(ù ‘4­SW0œîøLÜ‘P'ÂO|u"-®Û{dߤgŸ¾;…‘>>¶‰‘zyÚÓ&p§¹zC˜fµ WmàyìĦú°(Ä¢yx— 9ζ­c¥øN×*Ç´ZJÄ`„««Ä4àBŸ%Á<Bü Ãå½ã>—Nø´&åWuP€ä[ñ]ŠÔ…¢åGv«£-s Ùæšê+n÷ÐÑé±aßLƹf%“ÛOBG±ÑÆcc²¡3ˆ…{äÊìÖú»ŒÑs–2¶ã³få„§•ÆÚ]—³«é÷Mã›<ÇXu 9˜O Aözø¶-É4=µ§â=ÈŽ O ܸÜT³Ézúº5Ù7}_™øƒ‘£› ;4SÝ>tT˜ã):~±ÀEàñÜäÎúegÙÏWÀ=šÜl3[Ù’·äÕÄcÕCÞØ)$RáÂfu7üÎ_ÜèÜw¿O{7êQÞ?[ËQÖQÑÄeÒ'¥OÁ¡DasDí‡Q&-=[ÛƒñB5:k(Xç|-)_;Kq´'[½š`†ØˆRÁüÉíOœ ¥fÑ:ý熥²’J¤3‘vxd¦2Ÿ² xsÃf¨-ëÅ^B0ÕÝ8‡ÐÃ:¶âÁ4Ì?Ú¿Ï€ùG01ûÑ:¤Náíx£N‡.f8à(…šmz²aôè‘|£ SQy¨"f yÝ$—¼•"õߣ¸ñÞòídãxÕZM)ó­Ëº¡l_–Ö/á^ÛTbõL‚ÙÂCl"- 0qZû8 Êœu˜>Ù^lj_k ɨö=Ëp6%)µs&ŠG©ò°»é(¦p?‡çY…Ó¾©2p…-O ê{Íz éõ¯g¯ˆè&,"Z ˜ú[˜»!1#_=/x2Îèð0ö÷‘ÆLÏÐÒ›AI¥`¨¢IVÿ9מ"ÇðU¬"Ü çÐþ­' œùþGÂÚ3¿ºž/XNs1…t¬C“_ø!ê…du®B£ç‚[®M iWWÔR²X¢!"˶˜¿[Zq=xÕÔFmPÍ¡²ÙO?Ñ:ýnCðµašB3Äx®”£ô.8w]l÷‹ßBöè¸ùDr+ŸXùøš¼SÀ:s²¿¾OT3e ì†õP€fw#ÇjóÑ»”Wø>OÂî+tÉȲRÐIœkIU@œ;±?9³ÍJSÒxëÉ;¨ EÙ‹#J0I e¡²·ú €>p‰½ž &ð{líŽÇ0 YzX]c´fOÿö@ ¾€Ÿ®äáS«–>¢Tñ?!‡qä5F!±NÏ8LJ¾^_ö(.ò­po­".™¾Ž¢AƒuX™›@r Úç ®ïç‰ÔÐQaú‰Ñ, œIÖMìQö÷†î÷"­¤bT‚Z Ó‹n’{f,¤šëù}r7†è{ŸŒ;9c¾ïá%ÝB¤Ñ$"4Õ˜ he©g–;;,»—¹2^5\EÉ .O2~°ìòLäð~­øXÐâN0B¢®¢Iw:OCíË̽ãæj!Þí4¡.Zùø²£¬•ffz[j |!ݾÆÈÔ T>`+Ž·]Ñ¢¼îÖ¨cOŸeÑÝ—(•Š­ëq\õ|µdæ±0ÊUÏ/µÿn}eïÎ߯q™’OïE à2» Ú¨9~m`è~7ž-m*_Q™sS7~à`ëF UÖo„‚äk«­€í¯APW‘d³ÊÝ3¶'™$ ”b»áô%Ÿ6-úêÞdÏÌš¥¥ƒf8…uôôåN±:5p£1bÍ#¶¦£üxôyåk½*“ö²ð±m G©ÃÈöÁR¬ñÎÚ›>'N:y;Èè6Í J8švë2Ï-çÅ »‡†d‰wã:K¨båÅè¡?.ZpF…9Kjádɦ§jAå¾>ÝHôÎz) °ûÐ0.0yvêÛN-‹Á#DƒÀ>Ñà¬îÀ”=ÃC&…Õi .Â;7cÚI¥®Ñu)ìiýƒ‹‚ü=LÈ«J |0œŸ¸a°oã–ãýñÝWð™þ!˜¬ÉELP £ÛQ£¹ 6šO iˆ l.—Hkz¬„_é¼þòˆ|Î2{bð÷þ3!Åv{6o´ïžçõwzfïèó®ÿ1%w endstream endobj 32 0 obj << /Length1 1630 /Length2 14432 /Length3 0 /Length 15282 /Filter /FlateDecode >> stream xÚ­·ct¤m·-u’ŽmTlÛ¶m§bÛVǶmÛvÒaÇv:fÇ_?ï{öÞgìïü:gÿ¨÷µæZsa®ûªQdDŠ*tB¦öÆ@q{;:&zFn€¼¥­±«³œ½,2ÐÜUÁØÆð`ƒ!#q¹XÚÛ‰¹¹@S€(ÐÀÌ `âââ‚!ˆØ;x:Yš[¸(Õ”5¨hhhÿËò ÀØó?¿‘Ζævò¿n@{[ Ë_Šÿë@ àb˜YÚ" ŠZRòJ y5€ÐèddPtýÛŠ @ÖÒhç ¤˜Ù;lþ}˜ØÛ™ZþÓš3ý_.!g€ÀÙhbù7 èatø¢8l-ÿ>,æNFv.gàb°´3±q5ý§€¿v3ûäàdÿ×Ãö/ö—LÑÞÙÅÙÄÉÒÁð7«¢¨ø¿ët±0rù'·³å_`oö×ÓÔÞÄõŸ–þ…ý¥ù‹ºYÚ9\€.ÿä2L-lŒ<ÿæþKæàdù¯2\-íÌÿ«Z€ÐÜÈÉÔèìü—æ/÷?Óù¯>ÿ[÷F6žÿжÿ—×Ö`éâ ´1£‡abþ›ÓÄåonsK;†–EÊÎÌÀÄøo»©«Ã`n@§ ˆòŸ¡ú[„‘©½'Àhà oïò7%€òÿNeúÿ9‘ÿ$þøDÞÿ7qÿ»FÿÛKüÿú>ÿwjqWy#Û¿ ðïKð÷–±Èþ¹glŒœÿÜ5Ž®Àÿ_˜‘­¥çÿ!ð¿;jÿ]ìÿâûï°”‹Ñߡٙÿ†Ž‰™žñßfKgqK ©¢¥‹‰ÀÌÈæïÌþeW³3:ÙXÚÿjû¯±þ bdüo˜ª…¥‰µÝ?"°ýÚ™þ÷òÿÊõ¯âTä„eÔhþO7ì¿<ÿn‚‹ª§ð¿ÒhÈÙ›þçáaa{€7;€Ž™…ÀÁÁ àdbòý?dü ÓåŒ\œ,=:ŒôŒŒL€¿ßÿñù¯“Þ£³3±7ýgsT\ŒìLÿ.ÛþM\œþjü¯÷ÿoÓÿqþ×Ú@˜µ_ö&c&·ˆéÊÎÞ'͘2ÈWŸqs¡¬Ü<ïʃì{ßï› Z î¡Ô jûno`r»=˜KJnLæÄÄõÌ èY€ÕѦÖ+{ž®j¦e,~È膠¹”Ìsvåþlã$ïÂÍ3ˆ^ øë^ÿÐèñôJËø‚"ˆ§õÞR‡ÿsö6ÁD[¼@ØV9÷“ÕbcJC¡j eŸ¶x‹£PlHk¯{€B ›œR@µ5ø]¹ÏÈå>°ÅÀ©üWìÕ¹´ê{$–á0Ý\Í9û´SU¸íMëÖùᶬÒv@Êü­ìDø°Éö¨»OO ÐxV‘ ~–þZ”®$UéÙ³ÅFv—EïÌ3®š:0™ê•‹¦N> €ïª®þ\ë§³­’™%L3Σ 5YàwA×3\!ŽÃWΙ6qf&ž³ðÃ¥#•R:ÿ5$S]œÜ¸¶Ÿ¤aÑ ÍlëÁ¤ôµÛé 2à<+±™4µ‘´Î¡jö æÔêŒê-a-퀀"VSÂShX$aAÖ¼Õ”Ž`ºÇV|³Y[5²+ríCoŽÅ¯ˆ#V Z™›L¸è"ÈVÏäǰm0´Ô„Wu%8Sän°¹Õ*|ƒò+qäûRFÐשè y«,ݲ„‹È4ëÈÁ×~Ôha‘gÙéâž&žžÖç®óH+5ú¡Ùã$w⼦l8&Õ¾{À£í¹%Æs„Ï‹„/Ëz¤.õB Ò…7%vʪq±3Nq¹ãÌŒÌÁdøMEwÄjcd ÏX–Gÿ`õ÷ÀƒOrI1 K»¤‚®ÅKàƒªÌrÝSÝ:f=÷²÷è0€²,û¼›jBÃÝÝ£~óÖܽE2¼RŒ¥A\<ƒwÝm´¢\™{óY`¯+ø•XjaN ÎV ãoë;ÀQ1a×Ö4I|’Öûb=®¡¥2Nê½ÂJ½5Mnàÿ®Ô·Æea§…Z^=®è ÉP³¨KÅ £c½‘ðÑ fhPý^Ì›ÁÅ‹j•Ý9qðŠÚK:+壛DKá‚wQz—bSÁbÈÂÚuåX3b\`Ý`ÝX8e´ñýTÞeG¦5ÙáÎF"/QÁ߯øú¨q¿FVíÓ¦ÑøA3¥Â!¹$p¸ é ·Ä'`þÛ$1RŒ›À-îÑ{î;¾›ÝaŒ!MZ©Í$>m»×ÜŸ¼X§…ÅÚ!)ÿ·O¨£EœçišM‹Ò(úí ¸x¬"wCΆ'çO%›õ·|˜xü–§ÌªýÓ©âþKUŒBD$Ú NSÝ(—ëêžyù1…º"iUxz}OBÏ3iØ™å k#ÁEÈæX¸=n‡ã½"Hi+Û–Û='Þ+t÷y|c ?\ãÞ6–Hy®ØçÔ ËßÓž|þéOŸ`h¸¸øAËŶYÒÛƒî܇ÖÇm:1Åd|®E¢ÂW§˜¶ŸQ‰3hßvËB èDŽêÖO È`à®iu¸@ë4Æ6âÕòp•^ØÝfÕ§Eñ<Âð<£kŸ(+æ·>û쟡Æ]Œ[]a*ü"‚6@>»>o”ÒÈcgÏ5P•‡R…¥ðë8†œj«:ÑÑQ7ÝÕ‚Ÿìþæv}ñà4¦ì£ãË3§9r¤—õ^‹¤ RHYÜs¶b2tá p=KÕjI4Âþ6a*‘¢…™° £³ÒîT?TBGæQ'¥SH2Nu™™ûÍ6‹R1‘d„a.°;BWªœ0\™²*ü…f^š]·¹ ›Ë KëMÒ!ÁïÖbŽBLÜ›ö¡?šË”ó_Ü“Ìpî-#øæÐ¨yØÏ`¯74ò´bé¹4Èp*¥G ;rrʹÚ_îÊBj‰Â1°©ôM ä#Žß)ÛÍ‚®›g~˜ã9›yųzø]Â" ¥žÏoâêZþ{Ɔ{‡@þÝJ‚ÕMD#œ»ƒ´™ncº|pÊ0ÀV­ó¢¦)bç ÃO¡Ë{¯¥¦ž¦«_$½„¯ ®õ.Ç|Vd¶U:žc9q¸½®°ŒeRbiüðEuZÑÌs xcú6Ís<¸¼v½ySkcu~@pï ué³  :‚+åïð bÁ‹NHwg¬‚­AUisõÁ?Á§Á*sä‡Zga3±£ÒY DØ«ÂCñà]X,V˜/OŸï´œ8ùàÏ3¯¦Ñºñ§¬(/Æm1n«ÙÇßIë9ò}+['ÚaPï—|¢|Œ]rGFÐf š?:@RP ÷¼ûjN¥ÖCQd-C±r wë ÚþdúÙ…€lx qbf•5ƒÞ›Žï<Ñ9æ[¯|G=pFÌw.-kímZýéååx4¡L‰,¨R¿Ô½NÊvÍÚ Õ9¤®>½?Ì#$JÌ›0~v㮕©µÝ1V<¦ÏE”(âÛ¾Ñã£:øÀš_Þ×ñܫɸFÓªY÷=/6N_Äèñq$–më“Q ‚ƒNj &èìäPU*ƒ`²e¹˜oÖ×ãa#fº3U`«‹¯$ñÐ ›í²«Ã©½TØù°¹¦©Ö©°ˆŽüÉ¥úôá5çë+ge·õ{ƒÁAûÍ$éÐEW":…Iºƒ7¤m¡Á1¼þì6l²|Töcßö²áüÚ©m£”h´ÃöŸì†AÓb¬óÉ;e䇻­±HN{ÿÝl•kg´_Þñ·W ÛYl˜9Ó[ÉÓ#ž™3–àøTâ”3ÎàK@¡÷±.¸"{³…§Á¢üÍ~ˆÖª· ±1ZͳrÆ=/¥S˜'»„®w6øD&°N4JýP ÃeÖuž„BZ-®‚Yȧ°ùñ nœ>/=ÐŒ£`Ãõñyš4µ¤®­9‘l°(;Og9B¾·Lîn«ärî– Æ¯íÚŽ¢¬é_rMáï”lu‚uV ™rK6F“¥ùßWüj>Ñ’ \×®4”¢ÝCjï#gPćƯ>=NGãÔãÈÇÇ}h\Ý2¥€O­½ÑŒOD!¨¯ˆÊÍà «YwQÏÔr1ôÚóZ² ¾?†@Þ²˜¼bH˜ò…{‰]R$§ ËÐ[ ÞJ;‹!XÝJ³v…©ˆlÃë-¹ûkÄWêžqü,+ÇÒë9 [ËìÑ£4DÒ¹˜BOä ÞÆ‰)ëôZ—Êf¹HyÙ";‚5û:No²¨Y¹~@׌ðs´¸ºnåöCó…Óï” õ_9–Á] ËÑïÌ9€ZG$º¯” cbÌ‘äÑ}œvü×Ú/kìacMˆƒ³ÅÁ-Û)!À©ŠSúüîcuÐÁÊŠDCócFABga±fE¤è(Ú!,‰{Š©¨b[D2fÏ8O³q v©¨8±$BY0ÛB)H¼v¤ <rQ±( ÌqŸ5`BZº].&=/üˆ#}£þ»oÙ½GcKw@'°µ–«GÓXòœËàS„Ë­$½¿–ôzæWØ—U:¥‰µùTJðâ³XM»ðÌkµ oq>‰Û&²+ÍÌ%rŒ||§|ÏÌІ‹å>¥ýàýõš ÇÕÁašDêÌø¡Ì„ί/JÊ%J[Ø‹þp‚BóÏàg=¦%˜U ¥Ô;©¿ ®ÿ½¸Q…Á{Ô?ç72˜G¢Éw’C‚Ôâ ÜCæt/£÷ïhMó² >¥±.7Âsð%ôCåUŒ…Hž77aßà—UÔx«i«˜ò÷øsŠÛA}t½L·¼kPc˜¾E﻽3ñY!a¥Ï—vÁ¬.›Q‡žcy§üJZl© Iø•É‹'GxP`$¤ê‘¦O6F9æ%e¡®SvÍ/žz7î¨òTå/£Û<É}A-ˆý¤¤Œ>ì“y¬`f«‘QÞ¡µzBÚ .¾Å°]B²j2µt…!¦{N£hÜË[;Ùvÿ&“#2»GËR?Û~ë³gîY#R…g¨e¿_ô½,Nø@)ééªfªŽ¢gj½[CC¦Ø.²!‚'¿kG³˜ÞÕà7®“AW’kŒ·T›M¨­z¬zÂièN¼/Œ¥?]ËÌp—þ„¾h±ƒÓ‚¥¹óo‡4‰–&!µ?*8츲LAo…Úþ9jŠWméœÁø ›¡ë8ó¼ ‘òF‚Iß:O2Ťû !BËÛþ<Å•Vyˆ”ÙbOŸ ”LyÉoä*´ZÛSÝýì8Þ¶ìò6ƒt:õ׬ãÑ`)¹yà qˆú^9:j1C’î7 þÀö±øiYÑ!Îîñ³2Æ“SvÏEbr‡äÃiªMÜ&c×*| |™ÖpJJ^y¸ËëÇ‹îõ²Ä/üUÜ…˜<9ÆVÈËaßJG+W’ì!ŠÔt$3c7N¶¬¾Y:\•úÒwŠèIc$›Ú鶃ð’™%4MÑKoêñ)ËÌó œ‰©¢§€|7©)رríaô¨ìÂùã™ L U.én—±ja\Í•ö´ÌÇ&¢y58ôþÃb±y¤AI]èvz­©Î$%+\Wf¯ÛI°žI¯¢4„K~¸wV*û“ò¥9LŠÒ¼EÍ4Í¢¯6&Ä+ޏ‡3ÕEÞäê–¨Q›Û"4z¢›ÖõôÌ}—ÙRœÆ‚ЀÚúŠûÔVò ÃI·s“)4w_U­žå‡ô‘—R%ú¶Y?[c¾\©oˆ5a›*K£ôíÓ,Šƒp¯íŒ™{$ÅJÖU´1í$ P–îwÔþA¦‹a9ã 7ó°ìö‰5kA¤Áp$u~øm ÄR´›_Õ|(|–"ÃÈLÓj¿¦…Ä âÑ6ã8@ÓɈýWäRÏ­¯øx’’H( ƒBÆÊñ­Š÷E™Þñv³:bjöÎzzÊ|®T¢ Ž\Ç@Ýï”è^Ñ\edÄ~O´ƒ?$ýÞ"”N³G·ZÞ:p á}‰üâ°äØ–™ú½{y–ÌÏáõΟSz”·A?µÎví:OG†uT.‰j–Ÿ…ZWÅ~}I±ï!ôêç_ ÷.…|nøtÙyÄ\Ê­`à)˜Ž÷#( `x†4çÓu”g‘Ç48ƾ ‘ôÌs¨ûÐ:\:ƒÙz³C÷džÑÄË(ÖT9¹rö2…Ð)¿³$ê3“ºgQšˆ™X<è/ýöƒ§ÄAJ¥]íJ\PIJˆy—_lÊ¥Ý'±µ³Ô]ïWpZÍ‘Y‰ìê”:ñÀ²_QÖ.ïHiߊîiz›Áá{…/xФAù3o·âI‹|JŒ’&æàŸ}"ñ+Tw Yâ&¨.‘º¹/‘)‰äH©Yˆ¾ÍIhªÚ‘"Ôi¥£ú‰†á}b]8`)>J4+гËq›‰ ¡Œ*ÃÁ^Ï-x…‚gð)ëÆ‡ÄÐhX‡ßOPŒ%\¦]ö·o‘ …Ç©A5õKJ5Þar¶|‹.bÌcñ&ѪOü n™aó³ÚÉ\ÒÇN(Â)U4¨g=òv#›û#½ÙާP{|n°û wEú ΀Èl¡LÇϰ~°1°oþdÌ]š¾LÕuƒ•LOíDZÄ7ÐJTλܮÊéå¢7ÑaÖÄý@óóR­p—-*üôé÷hê5"h]·¶bE€äB=”È}ÓÖ.^u¯Pá0:Ÿè¥…œÎˆy‹e{ÍnCl ü•÷g¸Ów+ÖîG¨“âÁó|X¥üD1 ÿ ¯–;RHÒ=Äý Ù—?VA°öš+üßÅB½¶D)%¦ý5IùÄCÈ8šuì9$º˜¸G_ª¯ÚD­gNõ¬4ÇPødmúí[cÁ^Äe5麺¤(ýtn_!Ê[œoÀxUšÿ}ÒÑ WêŠ@=KÊ>jÐÌÈV°²u/ ÊQè1ËíÒKÎ;Ì!~<ÚLLp±Dö•½á }— ¹bIóN%ŠÙàf¬qA+Ó0ø1X£WFÿ©ºì³K´5P6f÷ìcç!y»{ËŸ}»ò ƒ Äû=wPdf¡o*ESÊËlÖI Õ™MÄ­ö™Czo1kë K¾jx¥«ˆ&ÌÇm–¤¾§³ [ïeT©’yfª8ЙC1¾%njמSuÖ“5Ò©&½‹Lm{L«1\×ìmïÝÃóø ¼ÿÂÍÊéJ«éu^n$ C›Yÿ4Ø_8O&ô/E®6𒝍ÔYxÜZâ éÄŒ¿Åª˜èÉ<ºlÊu¯(¨Nµ¶Tùøþ´bVÛ¹ù#M´W)’r|{d\4ÓÝ,]¼ûæ?Ïãfçê5pé \¡]£©Ÿ%ßI§pG(ŸºõxRÿ>CÛ> ‘Úª¾eR pÛçw®„¦)éïñzƒf\Rv‹ê&T]eçjy£ClõÚk2~¼á»¶‰KfDÄApK(Ñ£ÓßÅß½"–}^Ü@®;qú”3°DËËF*;ý¢Ç’·Iª¯½»˜Ý¼v@$ÍI„N^Ó@îßLFZêY­žá÷•,¿°Îf,ß׳I<åÑM|¹<ƒ¤žÍ[H÷‘a'†sÊà ti䵆4z%“ÓÙÅÞ⽩«¢µ#„.a<¢¿4+oÁc¡hK¿„w&³Úp´¼kô;µ¡pHv'›éÐÈp¼¥O0?u·bdÿ‡¥ç6¬È˜$â8×äA#!Í_`bðéJà ýÛHÓÃ)ùV§úâjÐt")Tʼ¸’Ò‘ãÔ‚o ‡ÄÆÀëPN µª«‰Ð¯ÚOó‰¶UèûYèÝí‰Xúæk›.*éÎûÚÝôBœ¬`mýs#R=–g:¹Aeï(™2éJ6RäT\œ”ºQ?d úBZÊí¼cUgîLüæèîö/üKYåŸÁÂ(°5P_¥±´Ä¥ù•†ÝË¡x÷þ(Qq:!,àþÁ[ O7ªÿ2ñì…ŽOÅÅ«d=WHE“%dÛŒ³l¼©›i‹I;Ñ=þ{‘vÃ6Ï#™¼Vÿi;Àu¦üíPÅLÞ‘?~+&[eb¸gî~÷|àó‹_@t·ä™´;•“ìO”Úçß¶dá(– ]“OÞ{:##Œý;UJûO¤ˆØágþ¬ešç4”‘é߆V毰ûJýtÉÀ oÆ(g!Gù^%^l™iÕ–¹ª©Zéµ°,µýzâ~$ç­ïˆÕ1»‘æú¨y?”­A›… y`@£¯Êí{uhøÅ1]>žcúf.qa×À•åJ‚s·¡"9¶§QkÚ´üžc¶H»áÂÌ‚-mùéA°ç÷M{¿1OÒ}뱫¼áN#´@[|ùt„ Ï-—~€8OEÔ¶é]†5˃ŸPVÀ‘DÏ£vX½ì§/ %/‡á§Ã4deð.­ßøh“VÈÓÁk²–a Y57¯v‚Xs.ïÁÐ1í”ÚÒ¾7#†§\Kß’ì®3gÑ5’ñá1V8xütn›?€gnt‰ýÖˆÚÒBðšÄV×] ÏU1ag½HÜlÛ3þ 'â÷Xܵ:…ô¾¬ €"ò˜AÇ^§²µr½˜iû@Á“Šáå ±³Ѱ– Í0»>“Aù­MV}Z—n² t09±øàÎÞ¯v!ŠÁ¡Bmi«Ø»åJvº À ã8 ó«5ÂvØdÏ^A×ßêüû”ØUB½º]‚‡N¥¢ ßñ¦:W˜[_ÆGÓ8Ò0œÔ³—"Nü>®s $ÅÝÛ3¹›m’ÂÖ£ï%ßÁ³>=ƒ'ß’ƒRÍì¯â²D÷HTM¹Ñµ©·ó+ c¤'L!rrrjO >“€Ê4BêæQyü" ,ñ·s¶©¦¹[­>!^Õ+ õ™i«f=ábØ¢ÿèkÁ£¤ë‡\ÆÉŸÎ`Ç= $kÜ–o¤pøµ“[p§26-÷±)0È…øá°LŒ;¥BŒª'N|· —£BæP³Ü4› ~p܈q˜õN¯ûüÜŒ“/é‹ ¯k0NÒx¶iê²ÿ!ÿê?;¨ +¿oåSB£˜©¥ c¬ì”¸Â[²pËÚãàü1’9ÅÊÝá¹Ì'Òç¼›]©ÜÞáæ ÊPU3²|A)™¤Ë‰ Á|å-5¬<¿fz™ {HtÊ?ì­õ¥þì¡„öì„.‡‡!¦,Ê Šƒ>@Úï€Ès¡€½øÁD²‚­\õY.ÚÍÆüBµo!k²muÊ–zÒ1îŽLc^5×½òg(&ÈÖ§³jÚFn¨˜´«Òà n“b«ÀšÚ\–±¾à{KO¢¯ŒT_3sím àÔDb7]Ý*­RÎmrÍù¨PI&uŸ&‹‚@fР×ÝPï‰süª— ¹  ýF­è¯>ñŠÀ¯!·4UI[-oºs“”·nàÿÝ7fNi‰8×l4“»×7 vniUøs,º¬ê˜'RÏÀãyæc9l ãE@Òo½‡B´Ç2ï–wpZÝ‘÷¬J¬‘p½1@îÔ³Rܽ&ûf–ã)«¥Ù¬Ps­ï9}Èë—™ësºfÒ7½ÒI:Úvþ"æ&Bûµe¤Á~€ ]OÕÏük™Ík.Æßgcr,µÃsk€ `.<0Ó¢-ðöLLsÝÓ7jç³Y°‹ÃOÔ ~ç§ïää¸2½ð¡ZG’ ï‰P5=űFzù|ý‚õ{üQ1o…™ Õ võhŸ.¡XV“•ûP”eŒ_ê¼§ø øÃš…¿Ã…åQݼùïÕ4±²w Ów¾|DôÉÓp¼V^ùåá• d7 pQ¯€C¼M$dsþ©•Ü1¦ÈrXó‡ìÏ­`¢ÐïpT-åóÔþrÑ›\¢]ðPûP<¬Bª.+ΖÎZ"ÑÂox_S¿…#H°ãüg·TCWÆè âUÌœ®ÎÌTSZ2ð<;±¬õy|ñ5ØûÄHÄ÷Âì)æ|³¼àöå GqìÚÍÓ3‘”úT–¥@ÉÒ.Ü]žEÓDAÕ<ꦆ¬ù—0OR¿ÕáT= Q]Á€ÇÇYˆÆÆ¶œU’D›‰âßm4AÙnŠYàNYù·ïfÎ==v¸¨7(/QXÍÀ€'ÚåuÙÍHHÞݽ2Eú‚¡Š6“ñc9Ñ“x-ˆÈt AxƒžJúŽuôSÉØÚD×Y‡nW…éŸ^¥Déj" R2‘gSÍMêÓM#þ’Jeýžàøºûv”§õ?ßðlPSak^æ>… ïUHþ`rß™=k³ÿòOÞ!7 Fvá›®Ó[ÞBñ7‡`Rø|EȦ¶›ÍŒ ñsuþt££úuöµæN0­ê{dÂ_áhã»aè-(ˆ¨ÛedqŠ÷«ŽkëDd»ÄÛŸÄÁFÓ} yæ3I†¯¸ß,®Jðm*_ïÀ~ж–l 2ö¾Ã<\îÕŽ÷¯g•J0µìpM|GåûyaK"'¡=»Ï†ûRijSDØàÎQ6¸¨ ±šº…Û X$_¶cðRÏ%ˆã⛥»ù,Ù¾ÒhÂB*~/Ú7•ž%6›h'Q~ž$]µóçé+°I5lÔ¬øå¶jøŠ§lBÕ.¸~¯%\Ùo‚ý®†áõàÈXâJõ/&O¡1®Ä±ÆÜÏß~6Î/&’xcR$à„u%xŒgýžC¡·ËÒpþŠœ‚X$º÷v…‡%´QÌòp4†O†ÔøõÆX§íOµãnõÚ`ô™¹è<Ç <À|ÍU°q}á„¶õðÒ¾<£@Y„Ÿ•üé+6q‹]Lv‡»‰¸7@Ñv)þšír®±I¤$ÔiqQ+XçÁÑ)”Nþ!>9æŸC“UE†Ù.£TQ0ÿº^¹ÓYN‹u­zŸ¬½¡…>üBr P€Z\Ǹ“¯ÃÑqè;ŽHÎX NõŒ¡!J˜4ŽKÇuÒy#ŽêI}x’=LëÃû0¸¨"ßç7ìm}Ò eSB_»#Ä—1ÆÞ Í» úEqã}åú–º)"`wM·Hñ¦N‡ ïý  å¼ý½Æïzo¹{ž&›[“ÈU°¨“O?Ý\žR/˜.(|îóû†ËˆsS;;®iQ¥Ìšm&ùàçÕæ^Ùí2´3_JÔ]1eÑxÆ +2­Ï¹&â }RhEBçȰÚze\y ùeƒ¿ÊFx¼_,tÒºÙgÉ£:ÙîõÆñî’8ëFpë¡kÁ¶™… û¡UJìº÷ýéê2¦8‹Wí˜ô‘V3Ë“*j¦·R§•¶;Ø­ñ/™ 0uÍÎæ­¼òŠ8¼ƒ³bïº,‰nÏÔ;»Ü?u‹†üBŪÙqó&´‚ª3ßÔØ+AÓÑÇk¢ôlÌܼ­Ý ¼­‡†*"é ‡Ú-©u¯b!1 t¹Î1ýfoC- o.ñ¹{#íkˆ¢Ú½>g¢"ÙÓ“OPÑÔØbf{†÷¢9ÒþCHHŽo—;,6LÚ®lC ùš™*>GVö7ó!ª1†üÛÁ>ØJÁ[¤—k¿çqB¶§uƃ‡Èæ‹Âéÿäã{Ý&ëUÈzŽÝé¦úv"w-Ó®§xaÈû§/¡Tp•œÀ~Ÿ;Ãù7ÌZƒ‰¯“´‚˜‹i°×;åÂÛ±â<³gI/’†´g¦pQø¼£…œ{:@èZUØ +ʦénÓ2wUñOŸqòEÇ™,#Z^=ó‹ÔxÐî¸+Z¯¾¤=–yþò;ŽGJ1+ÍÕ4æ¡ôû>hxá£«ËØöRÛÒm¬=¶Œ‡i˜˜J½‰DNž:¤_BFI6JÖm¡EëŸ3^„«çÞ=º‡ú5~ªæ=Áp 7M¼¬ö?Ìe°l¸¥aØsøŽÐ>Ï&¸áûëÍ×êE9iµ9ª*F-àê‘Rv«ÆMuxš¸öë†é´»!ªâi€$¿Khô¢µÉñÉÓt)B7MZ®éÁ¡p¢o¡Iض‹€ƒJ²Î—ÙD²‚E”¡ty#¥ÓüˆÞ1ŸÉCV¼ë2îu(Nøßxrò°H'‘Ò1§pî…jõCgøòŸùb%ÕŸ’›ëúÃncëßÙkë(~âáîä£åzÍ»[)õ¬öÓ’íKøÖ—\€³ù[×Od¿œçÖ¹£ˆÇzŽºÀ"Ó³õ³ýAzH‡älÉ )ÆAä3³ºÔSàwm·#&‹þ²‰÷…“Ucz ¦Í¦œw ž?·Ìî®r˜˜|úP -;Ø,dÃô›pBˆEÍgI™2XéwF/±xÌ;½¢Òž£ÐZ\É¢c'³Ã¢¸SYéËî<¾0NàŸùYõžÌ¬K…‘¸Äiûcw&´ØÃ6É]~ë~éë_ 1gvã€ûJ”Q7Z ÙÖµ®ÁFCß#åúÀÁ|{iÑÉ£¶ÜßËÌ_Q7©ÓUàW¦ à¯=Iz˜glW gÄÄnÒ>Rë6¤,÷òs:›Ž¬z`Ì*[—+\”q\¢ØëvÑHzŒsˆÊú­}TÔ±ÙÂN¦\|€mo¥^`sfõ\}u®™ VÂù |‹}Üžr ¢ÕïNõŸªÖµq[¢2&s€Õ1Y;‚ã”ðÍ4ÍD. 5 ¼ù©†‰?ÀÇG‡Lnûyø ±ô€¿ðõ,‡½¨a²ÉoÁZ?c_?չ浼_ €2EÒPFuqp¥RíèLÜnZûÕ™Ó›þ,AÛB*"i€ìE§>*Ôäö’{úÙ¢¥Ks\…}nÆ™+ƒ±™’¯]Û&qwfº¸ÒAŠGÎ8( VndA¦SÀ(é¡Ù,Ç¿3k|þ”ÉnCh—ô,ÄGw ,FàEK¡Çï¯T­=Î{@!‹vùšÔ9(Z?0 ë… ·Fj B8?x¢Œ¿Oq±FÐQÌmKÑâÓÕ;Û'cF)ÕÏ™¶-ž°gs´»¡ ÑÓ¹ $+¡NóàTÀ7jŽQˆ>[ǤѸ*-^‰D‰©FLJ,'ÖâŽÃ:a¶± ?¸p(6E>ÐóݾÚ+{‡.@¤™©ãÆZÀÄM¿wEr §¶!P*;ë»åÚ»Ê×"˜·¨}öú@&˜õ@LF)!Ç)2ÛZtz£'¡@=Á•tå„íæÁD mqCvM^Þɽ’å®0ƒSæcÄ1?_OZú%bY_U±#Q`Œ¿*a¬ŽÜ£¨_‰·Ü›p#ôô+«‘×ÑÐ6íüV5ÍMŒk]jï± õwÒ€êšd ߯ßáÛbAÉt7üVê$j™Š".±ÖÄ&`2šœLÞqdm M';jxÕÎ{ç¨á‹ ¡Rj#©jUµA‰"\DJ Î2I1»ëõSR²[•ÔjC¯×Ú~É1œ*ëær¥Œa¤¹Ë8aLå®bn¯º¿È—t emC¢M›à±néCòÝP c‡«5‡àO†«@þÂYW€)Q7žGqgˆMºä­-…S=â³ú™Ìˆû0Qk<ý©/õôä©Þ®gŒ@l+|è%¦ÿÉÝQGžH¦GiHI\äêàÞ¼ßåÛŸI¥ªS ˆÈìïdªÓ"[¹Rj—:I Dß}E¼YÒ˾ÑqZkÍV3‡å¬ú~@$[òqÎà±Ïá=·›šxbÔÌkFó¼tW2‘¢E²¹,Cy4¶¤ÿú‰lY]TA=’…q„ÜiŠyËàKJƒOžjÀ’aˬ¬7tG«>€¦0NC’mïEºì0àOÿ)h5„ —'šŠ°×Ö#ž6ÛÕ¯F|,j丰ŖôlTÑùƒÀr4±…aIì§åf:Ôsë3þLé ­”بÑñR‹çë·<ºN50æQ÷+mßRßí%ìVOa¨ü_òó;’íG*m.&óÕË„(¤5YÓ!¯G}åíâákÔ›ô½íß‹õŽHy+"Á'’!6YîŸg£±f{]•¥]¢Ã© ²´„¼À¾Œaªüè± XŠ"#« ‹MÍ~>q´‚×è:Ù˜‹’Ï. ÖdS€¸û¾Ø %Ûf̳ÂoøjŒÄwÎ œÃ¼:ð u]ư]š/Wߺ£y[VŸEgÌþþûËèÕà!Õe-°ÃHŠ5jãV„8z¹¤ÊjÇŠQr2|äÝWµßÁUtêŒ#`‚Ú€öVäÑÌN¤&̕⟦!ÌâÛDË*™˜sÿÿä…1> endstream endobj 34 0 obj << /Length1 1626 /Length2 12495 /Length3 0 /Length 13323 /Filter /FlateDecode >> stream xÚ­xeP]í’.îîdãÜ‚»»CpØÈÆ6îw îÜ]‚»w–à\/ßwæÌ™:wócU­·õé~úíUµ¨ÉUÔ™D`Ss)°½ 3+@ dgêꬶSó*0)šA€w95µ¸“¹‰ l/aâbÎÐ6$ÌÍìì6^^^$j€8ØÁÓ diå ÓTÓ¦gdüø/É_&SÏjÞ=A–öš÷7s[°ƒ¹½Ë{ˆÿ±£º¹9ÀÅÊ`²5ˆ+«èÊ*I褕4ÒæöæN&¶WS[@dfnïlN°;lÿq˜í ¿Jsf~%ê 08;˜›ÞÝÌ=ÌÌþR}8˜;Ùœßß g€¥“‰½Ë{\À½™­+ð/ïr ð߀œÀïvïº÷`*`gg3'ƒ à=«Š„Ô?pºX™¸ü•Ûô®€-Þ-`3׿Jú[÷æ]ëb²w¸˜{¸ü•ËÔ9;Øšx¾ç~æàú†«3ÈÞò_>œÌ-Mœ€¶æÎÎïaÞcÿÕÕ ø/Õ›88Øzþí þÛê?1€\œÍm-˜‘ØØßsš¹¼ç¶Ù#±ü5+²ö`ë?ä@W‡êÜÌþnÝ_3Cÿ¶·õÍ-X”À.ï)tÿ3–™ÿ÷Hþ_ ø…àÿzÿÿÈýwŽþË%þÿ½ÏÿZÊÕÖVÉÄî}þ±cïKÆÄð¾g €¿«Ýÿåbb²õü9ý»µ¶ù?Њmÿ®“u1yo‰¨½å;-¬Ì¬ÿ‚œ¥@æ@‹™ÀÂÄö½_Ë5íæN¶ {ów^ÿn)€‰•õßtV 3û¿àú‡ÊÜøïðß©ú<‹®šº˜¨ã³\ÿ6Ty O‡wlÿQŠ"øŸ‡¿Âˆ‰=ÞLlÜŸLœlïwï/7«ï“òï@lÿ:+š¸8<zïu³²ý]ý<ÿ:ü[I{30ð¯±Qw1±¾OÚ þR›¹:9½ü÷å¯úŸç¿gÞÜÜÃÜ ielÆl–™îR‹Ÿ;4!¡××Ã=âPÒ QøÍ¿Üí—¾Í[aü\ÂÜ8É÷úÝsáÈáeOŽa¤Ï–¶;Åü,ŸØ—’¾÷æM;ã~ ‹a jú±v´÷ù¼ÂÌgnV­ýŸªj†ÅÏp$“íNçwôþ”nßüq¨nо˜¥ÖÅíÀh„Àª-8:¦Iü}wK;0:<4Ø} Û»÷1ç+"5¿ þ—ä#ò$Oc§ë³WØG7ÍQW‡Ïr+âÌñÀ¦¶ E‹ª ¿L–~Æ*æŸ 5շ쓵 ¢Åìn‹%T]k~ÏÖI;´ ,@4Äe—Á>jÆõÜÅ4¹À„Ü"Mó°r±ÔÂÊqTÖ¶ÒEXö`GB0‘Á”Ê{pÆz ²s%OÔ™~áRz2ÍØ2ï¼î=„ä å=…ÑÍðZ¾A7…[-Ò)@¸$‹‘ll_r%øAë––çǻêEw±9b:œ‡'rÍŸ@?ª[µmʇ?RtKQð¼™ËÇT=ý{ÕÑ ´ºˆ“¾¿™¢smYÉ´ñ&øám)ˆyü’x¾hFñ”ìU ]ܼ‚=Ðè†õIR¤Œªê0ÎÀk¹ÆÐû„€•hè(ß7ÍÛÔ‹ß¿—ùDS0œš–wššvH:ÏÜ‹+]Ïàò¤È© ZÄJÎûµ¦èà*˜ÙI<¨éò¡Äqzv³QÙ $+òäÀ†¹ƒ_¤Õ‡ÛO„úº±ÒÊß»3¡;+Bã”™XgfR/žQdVMÄ$ÃaxŠh¸—f;ý6c ãÙ2PÄg=w+” âa®Ð’52ÖŸuÔL¾{¼í Zcþô Þ%.Ûù¨Ý±Ï¾{BheÞþ÷ÓÖ-„ÁëçØëø&Ÿ¬¸š- idÿñí ‰ÂAáúÌÃË(+†£W‹î‡ÔÊ1»Œâë†Õ¦Ë3v&u¢»±6ð§Y•χ¹`òUc8Ó wFw^í¼>üiÜ6ôøœåþ“8zc’”ÓR÷ë‚ µNw«DT"­Ýbê«,‡Î9%~]ä7⼞F·êþÛˆ©`û¬@]™ò=޽ÇzèÅÄ—·Ý>‚nC¼­B o<“ñŸI­TVè·T+¹É’}0r™Pü²ÿ…lWÔ!ÖMX©é ±Ê^]S{‡ô$Ä÷hE>JKËfFܽV ßã` ~ÁÎÐrœýwØû6•NÍÆ™ÍVüg."ßü0mœåÕîuö0]_——¸)"Ÿ¿ fE•‰Ûê¢kÇÚUHõòKpÎ!c:WñpoCÇ=wõ<­Ó9y³³ hTóéqüçt@—=·ò¯t¬&»Ë\–©ëu3u+©eñ ¾Á½x¶Õ®”×vÕ —ÀÿIÁ ¿”G3,¥1I—/F9Ñ„¿]¥ö 2µ8›>uYNUÔºµ(8S.hûü6ò“˜ úʼF7 =%§¹5ì%„€Dãòu Òí³à·EUgiãR,·¦¹ˆ¨j‰Õ[Bš¼(µdáqƒ{#9ó++?pD/år 5ôZ#1ðçŠ]49þT,@O–O~P(ê0zx°0ß ˜¯¡RCYyíoÎ׬p†b=¼”ÖN8ô¸Ê/â:aZ^Û,rÊ{,å‡8‡ÝTÎïÀ“‡†à¦Ë~õ¤ ¢Ì@œpM 'Ùùú+®é É²¸áBêÐ;lqêóüéz• x«„Ï[ídDFÀËjÜ™J›ie™.ÇþŒÝ‰aìxî/þµ–©ˆ>užo#ÙbtRÐȾnpIMK?´XØë*qls&Ì(ÈP¸-Ö6=ωýí‡ñÅškÄ1ðÊÜ£:jÏúV½FUgt+•ð#6Þ3Oÿ'Uáoc ÆKMJ×ò®}6•)« ? ©Ñ[×UHôÒ¹²{JÂ5¯c_ÍQr‘i¹`†\4Ãzk)žqG0×RK…·epRQýò‰¨*/uä—ööé)=Æø{èí½·¬lCÓÏuò/‘d™Q±›˜nÑØÄŠ ùÐdÁb1µ£ ‘éEø2!;« <—N®`¸*zù­8ª4©6-]úµa[tH Å ÒØ (óðþy;î†ÒûÒé\]»ˆÐS195Ý¿InÛ'§hË0Z.zvøWïä´™C ›OÖPg÷ÝÆêñ9Õ©Ÿ?v’88óE®¿‹hFàC&]ðêÇö•K¡Œ•pÙ’Ãáж ýáe( ôýrÔzÙÎÕ8ßýKúµmŠ5X#6BÅp ³µÍûLôéoD›Gë~ÆŸ Åz€’‘iZRÆ©J½'-?;›ÝÉ·=ÿdÔ]çúì¾ó9kz¥U‚æ2a+r-Ïl9c~DÚö(>8ê<Ô£NjõÄì–8wÆÿ^Odl–\É+ý ¦ŒK™Ãב‚dªŠ±hqTNR£œW?¬–:¥qÓ½7úò²ÑúŠ}ŸñÒA‘ú½²P„"íસ`UØï–xɳ’h,ô"§F¨w/ΦAÃCH$9_r[ut"³ +aä½àêÒÍGG‘±ÓˆÚå ø¢ï@Æ£Sè ‡‰y邌¶…ÈÕ¾‘‡"ù+Ï`©_çW²¦²R*8já¹–ºŸ6Hõ0‡ãUZX þôÞœIåʬèúætà: ¡~;ÜGT²ùÐÍ'êAì:Ée[+D®t®]’­0ÅÂÞÉT¯63zEGö0ë×îïç+ÿù|>Ë(êÖ¿j˜ó¦‰|¾)­gµG¦34¨‘ݾjjŸ‰!E!iÜÁÐt$Þ$|}hzúÑpÃ}{¼ÖÅ ¾Â€HhÊ“ _ßÕ üLmæš#ýV¡s(ö›eS£¤š"Qx޹€â[ºõíÃ×,'JÆh¹MÞ½õ(ÈÁjȤLFnVïsUc5!²N#©ZTÉêTdÛ“¼˜”ãÌËÿÎøý+{Uµ  ªqzî=ÑôõþÆÂÜ:{Þ4ê4<óY^Z©Í7±mš2Rs´¶G§_u¾ËhNLW$´Î ¤5ŽAjGµ?GïØ#Dߨ»H¨G×XÖ : ¶¿sODbö*‰òÆÅwC+”u'J¯]ZjFªzåû륆ÐOµo¿L@ýdx,¼`ù|'óR“ZÞzêµ­C¤Ó»Î6½Ÿ_æòfùæVÙŽñ…dU6-†Bf9Ž8‘_]“l'üv+(³1¬jÚÇtùd¬9]›‰ s;\¢ëPb€_8¨Þt ¾r´Èêzmu b¬n?ñÓáu.ekÆl¯×‡Í„ÖK0HåžðJɬIìIå$~áÍÍÇ{¢g%k©b¼¨]N@dA’Òp®)Zö«øÒÙÎeÒLAãçân‰«’© ]-‚Éã3A$±#—˜î¤Cî)q‘Qþ¢d·²ññ½ü=öŽ^&#ɆëÇsw^%³âú¯‚ /Â|Ba Úœ[a±•1õŸ¸ ÙÓtL\wÐkŵuÇò}Ý8ÞNŒ”K¦5ˆ[ ¸›ÛãÚò2¯wc&cÿh‡^Cr‰ñDpNZJ&#õ"EË…¥¹°>80÷Æ­²¬Ÿeçî„ VLþ:âh$À‡Q#àâFøF—ÑæOç°œòp*¦>#mÂÃ* ñÍ_.ôKCÛ“ÿà© ÿòµÎËçïŸæŠ~+ÃFõ&RoåíAâÄB&Ò«9OÊ¥/iN2ÃChf›ú™íN»®7¹kIí"ûû\[BBM&íŲ·бl ®íóyÏÄÄ2åT]™Q„ØbºÄÛËëøåb7uþ"&¯½kÁ̬ýytP¦|a¤MÙ²k= É‘4FЛÏ#y "¶îÏú¤³Î+ »òÒ’ßöÆ‚µ›¶±ÊÑ'GÓÏ ¦M´tª‚ˆ6³ íÁ^ @0\EÔ¸Ÿ¤p »DãnÅ“,`ÌH@Ÿ¾!ãÈgÎ29{j†4 ôrí ¤…š~¾»Jy<Ä*áÏI•ßV«ôñï)¡,øêŸÒ'c Y0Ðá2i ’k±€¯ÂîpÕˠ霧ï1Îjèµ¢TMÒoš=:ën/$&ç(¦Û?΃'ãók\ýÁ“ÒD3ê‹©‡º“´¥£ÍÅìæì}02xÙcÞ®'QîCï¬ÏPaþo^þôÐSÈw¸‘ÕÌfÂFéä¥7 !Ü’ö6 -H;Å ¹dúIÌ]|ŽZ7œ£ÓjvmF5ý@·`™=6ʲG€V웉Ì\ák Ú!•ké©ÊH€Ør9?nY`ïm¹ ±ã#ÁE‚ó(RE12aB±j>PàðÂ.æç“B-ÞNÖE Aæ*).œ!¯ äÎ* ”ÎndZëº[Ü€l$dÞ¡¥d†î7kÏçìaMe/ùÛ•°dÀ Û‚?T7‰ÆßBº|€ƒä8ÇtæÃ7;§oâZ?Öèç…!,6úe¯XHrÍÍ¢tBœwppq¹zÞV˜ú³?|³ÕŒ9"N kDÁÀˆ\h ®›@I`8×FÄ¢éTW‘Io‹…Ûôé+è> F¢¿Õ_2vž¬­Ç;vqX,‚çÖ;Ç4y*Fúš¸7Z‘ 4+6›4Ï KªÝK?}‘m}ÚXQJâ›øÁÁúûëW,ß½£!Ƽoì×òä6H>6±gGÌÕlkåœÂ®Orâz°>»Ì¨^BwA¯BòBÄXß} (QÏÑžôQãë·g[eXlrY¦—ëÒ6ä;âðsÙ³SkÖ„,‘&.Ǩ+0¶Ñ?Ç °§¿ðx/‰‡S‰Øp8!øwŸç un£TT$ñ0.kzü\Žâ4/çê¿]UiY÷r¹Óþ82Aû–¸’ò©*Ê3Hëb<]ÁಳÆ5\™+S’ û¥´˜cV§Òæ¹ö8g²‹X•'XïHRû[|gGŸr·qí B;´@n0FUÌ)Ú…;™\‡UW$;¿9oæU^ÑS‘ —I63§®ÿc*½¦fΉÂ[æJ´í¨u¼ì^5¢ä¥ë ƒ6aRbüšá†©È‚tx #²\ ¬t« óÉÕúh^+䣫…WQñ~|ÆNCÊåŠBUMo77ëÑ·‘š?’{¶ê·p®ê+¶_ „µ9Õ'à«û„yÑùLóªœÊn©Ñ§‹Ì,¦˜‰I¯ö”øÒJ1ÏtÏ!h£eycý6lŠx1Ù¸ ONþÀÂ×Ó#®F”Aé¾÷Ô¯½xŸf8Órʳڋòî4>¤iÆß,757°0}VÆŠm$v®eÙŸEò ]ª9ÅÕòÉ© Kå&Yíw‹‘8‹„êyŽcd$ØT*ùyõ›)ÏøÖîdDJ+•¾rˆ¤æŒ²‰-…öf`§eK’(«0žƒÒÝË!˜×Å[4‰Ë\!×^þ€ÛQ=ò ƒò¡n×8ÐíÍdŸ»B¹4ÅŠÇBr´öó^wæû½=mDÐè+ g3JWoö"`L8¤FGÍ ×N²¼Š´„$ùºïá»`;NâCÃc:|aŒôMPJÑO&ó»wÆÃØÓÄhº½á5ïnh·d‘›UëJD«¤°›íc(âªRãªKŠŽoO5;ôh‘y|tÁ^¯‘él9šï¦-qdÚTv ­êÁZŒ[eÚ~[ä·/ó0¾/Qp]XLI#^be8±²øtKeB~¯x6BÒxJÈšÒè$_Ó›’ÀóhžýC@ýÊ}ŒÝlÛµ„*ˆ 'oûŸÉ—¥BæÐÆGÃhÓP]Ä’jzOo3j59õEQ› ’Û¯­×Lqâr2».˜~¬jG•cuo\OIí2•OsÁã:° 𕌳ûmöYUÛĨSüÖÎ “úPŠ‹zªØå&Ç{È:II#VÒ£C :<Éæ¡‚6Q(ók}ˆzƒA·íµ¨Âi¥³þñs±5¯+ÃÐ’—HQì÷:¤(Ÿž¢p°n}“ªjLo,ŒØ#ºcSÍÞjÑík,@Ø£zØ)ô®k?ßNjkýiv1õ«>MÀ÷a¥¨az_ž¸*©·Û• &*ê묂»t&Qà÷¶“á>P³ ¼®1ˇü Ò¥É'2'¡ –«Ù›úÈ¥Dq?ªR™«¯Æ¿V¥L›"+bÏ=áù ?Á;S‘‹Óðzfá~ê"c˜àüodúp½åïŽ#–hÍZÀ”e“Vú{>ŸàôÚŠÛLýÌTv=³„ñG~:cÈö}=†ÕG Ë SfH󉬾ë²~°K‚˜£èÇçLõQÅÔðžÝq- w~Ë×íª3ExèÄ‹o‹bh¿^¥zBôú(Wúž°¢v5ÌîX7‘„ï¸ñ!`SºDg‹ÄÒk¦%m–`R¦Ž´h£°îÌÏ‚Ät|J©º³È¯¤âÂMtÇŘ­KBFqàiaƒ S DoNòÙ7ÈFáÅ%Ãü.¦Ê.TA8y±2›c\±6õÉcÊñI¨‚5ÌŽÈøxÛO¦1` ·-ôÆ(›%¢¯¡ÂüSI’çï–ïê˱›ì)Šåº|šÂZ¢v ìóý-t§ÜJ$ïý-©Æ\°EÖˆK‚ú±¯æuNCIsç‘4ï÷`twJæ“Q¶ãá¨Qoì2QÁÒ¯7 [‘b~ƒéõÁË­t(Œõ¼¦à$Å‚ Õ1ÿ ¥˜GûuȲ Bb)yD€²JWæ_vqBoÓ…ÎoS5³­öïµÍªsÆÑmrÖ‚Eµ#"¿šSðӮ܌RpSM¸»ø%LDñ™A(5ÚùiųsL… ®–ÿ`º“|¶©-AtF»gsO£ê“$á±–’²!ƒúp£3}ºèÇ…’% {o¹S.ŒÑ¿£Á!˜“²»‚õ‰-¹ ´Ž­H¹^I„u ô®Y¦§’»ê G ªCáñÌŸƒVGoŠuË/Î2hû˜€Ç°öj¢º§ROø–Xß‚_=ÜC÷ŒÈR¼m31Ϭãp·ökøh iŠ„»”‚o—y’œB³3~ú„×rÀ,wIZ6‘œ_ÍÌcXìbœô0‚0ŠÁ{Av´{÷]Q°`éT>#âÁ5ÁG‹ÏRU˜šÖŸŸŠ½ê9b­°UâóÔžMÎ$Ûô°}Q–-¹`Q¹èà‚Xm‘A‰î<íK*C±Ox¡0i÷=wqßÍ &Šå ôFÔ€EµÙí ¿®*KW¹©õŒª®[MÀß+\FaQWlpi¬x¦HJZõ¶c¼HáÖ˜ÿCÅhl¦D©X0Ô8G‡è’ZTi­8dPfˆtµ]¬S:Ê­TB˜åm=QmsE­äá2_×bš”UT}á“÷|F±{Rg*°áõ.CØg ×í! rú~Á8žÌÎ. ÈÊüûFïÞ©ª+â˜"5š<™FÛÛïöyä+èæúД™t“êþ€¢ à ˆ‘˪áæH£uÄSÅø ›Ñ+yòö˜k,™Ç{o»Õ(ëVÜqÖ¼ŽG¿U©í®%L>bÒZÆÊ5˜|®¡ AE'_h°”·E¥Ú±á@ÿÝí ^æ}ÔâSùEfD꾞«‹U³é Âåí TRž¸/d„Ù; Œ ºk”Uà†„…Çâb«zÏ‚ÆpVìÞu@ù;hŒŸ†àj †CHN§î<ˆÄ¸Bräì­Ô þT«Í¦0fÈzCá=Du Jû?ù“ÐoJxKÉöÚP†\#×^"- Ц¾ù”éy¡Íú0)´•= #É’|S˵$zèp¡Ÿ‚SúÌTŠ#šZ·ç"ä$3×—èd(íãl†xÂGü¿T7>©¤=-õÓ¢e²ÁÝ>³â¾¥8µå:Ã,%·ÌÍ2óš0;¦\áÌuëmÄo» rÙ<Œv›¹•¸~zÔÛ–?$ÏKö•ÁET™7*™ÎùŽ­¤BcR¯ `Eäð½Ì’ƒ?)5:~-¦{q.Ķëw‚á´E`sQ Œ‹²ª±É*z(0·@c=äq¾ý©G,BºáG9'›6L„ìÐ=SÀ=l°ýH+(2+Üò㞦Û;nœÎ5A}íóЬ]DU(^#®ÄAÃëp–ÞÄ‘šß`.XEô 'S^J$~ñ&vË})²l9Ýn‘ãÏc”îY¯®Gƒ²Rc¬Uxé}‹Nd¥’Í'~LbJôc©Ñ‡ˆ<©”Lox¬ÑîýóÓ\tö×D €½Îg§¦/kÇ[î4/¼rÑŸ,rCÈÇéõõn)Yr¬.þÐñ£”Þ–çéÔ›&2ý—TOëŠzá±$K>Q%÷8§ððÁ0­îeA²ÿ3 y’2"çÇA¢žV] µ‘³Ôzôé0ÔÜ‚7âù×gÃ"‡,ÿ4”Ä9¾©¸Ês³² Sl¾·-{ɯ âP£ -båíDуu-¤âŒ¹pž1e@²äV?BŸO%)iØœ¬5<|J­!qÄ}·kÔ¼ä~bCìöň© K†Qx®¾öÞŽ~F{á)´ý¸Jó᥄Æ\õêuW W T¢'üŪYk±H3)šæ®r®ÎQ¼ºÄ1duÊioä/±ðó3š‚Q;zý®>á‡4ëÓè;™†°Ç²UÑíH…øÄ$ëýÓE_Õ'Ìšü|rÉlNwÅÒHÎbþÉYšÞ9²<5´)üú±õ•¯liIÍã ÒZþ?­ðö9ŒÞàZ õ ^¾-Æ)²äAøï«æc«!ŠÿqNN›ÚþËc}Mçj0=I)E7Š’@l&æôôøÅd%χ¯;}fxMÛ畹ݹ’èëo*µ34c6ÅX®°ã´nvJîœõwË/ñÇy™¨P¶ Æ<¡XÜ댨…Íû±:oFãgÇOH*ú©BJ…qÒî•.êpf,:'àÅI“.îœ[$ïú8_O ¿vJ[‹j§îŠý„gL¡wà’7âË4úX‡··´I¯3Ü2pUçJ¿ÞW­á¶éš9± ¤zõNÃ…½ã¥Ð¿î²œ‹x/£Ê?:þFLìb¼›w$6!÷ÊîŽ[ hb2ŠÛSÆ X…bÂçÓíоm0 MÑZa l+4[÷&×Ñ0…²Næ)‚EEUÛœðÊ+m)azR|¤>´ ÞÄxɶ±–™ |_ž…:Ä€ô ÐMx±S볞U‚ži‚H¼ Yg'è1žn—HxjÆ«/+b°©_câHÝÎEçB0#Šž·¬öv9P¤”;—  «¬ Öº¦l°ÛG{hÝ¡²Ä„=Ä}ü­Ó„åU(ß|å±vØU¿Ç–|¼ío?0õ4u ›;“k–+~îq8Ö¯€C1‹?eæô·ªLªÄ` J?VŠÂró× hOÙ!¤‰LÇbìçí¹GÂ.|þœÔYY²Æ‡pµ $'í”âÕ€æ¿;7ݘ…ÔÞ×M2;ˆ¼~ƒÏÊÀsÚ¨ºi²)jTVW7aÎpjHè[xyR¸“û±+`}$fëÐìAQôæã\öëºÍN†:ú0s\{ãㆪ}ÛiÈYØe»…o™8wv–`KsÁØ@ÝmS3"§‘¡c@cÉvôÜ‚œ%A̺룟֕$iÀ„_ߢ_-²ÓØIKÅ®RÚà  ÇÒk$‰Ã †¼²j#Á[$ZR-÷ézZŸ }sE2ûwýáòº éÞ/aÆŠÎ,yÜÝô[ª¡yO8¥Kê|Ó~Ýå{{¯öF –œI Ó³3ûÛ¹bµ²#¯e0šv[ .£‹x[˜¤4~r‰3؇Є‹=jãÔ<ìk m!¸Òë#Ø%gÓÞ&Hwq.ø¬ÏBnU P¯xÛ·DV£t©-˜‘}ïÎ:tÿçOîp±øÈa…>)Á!¾—*ÆTk¼VÁ4 ErWäÇ0@„Ë0ÓaË,%Ž£œ.iªO7÷øЇ1-ØøD8Ÿ×ÂD¤|:ÀÍ`‘H÷îéÁÑ£zâ¶ÇÔ.‹Ô†ÝHÕkžSDZ ¯AäóÜ*ÝSŒ> ?¹ÀcÇš22s¼ØP2 ˆói:"˜MFj–¢Ïh5Ñ~ÚÇr®¨q F1Öò1u;q2ÙáwØ8=à·ª[fTCè,}ÏŠj£¢ÇبJ#£„ u60{( ¦klVây½™¿óeáÕ€FïßXñî/ëá%ð´]°&=sÂMÍŸ4'ÙÃb3ü«6Ù¹Ú k%V9nñ×X`á0ˈ>̦î Åü@3˜'±ôÚÑÖ)féÙu·:-ç—GÕ³’‹âº]Ëã>ãå¯&j3RKªîàH£–ò 2ëÙ,Õf!Aö#îÛäcs e7-l’´Ù(©ûgŽ“Òìx£O·qoècÆ-^âÏ«˜oÛz]Í0Qמ_WLŽa)Á#suEI/ý#”Í1ÖóÔþ„r±®iâªFâŒÊâ62i,ÂAPLéÅß:>ùº}lç¿0 9)› u¯’=P '”ÊZàigëtKêz73´šñ¢¥Sçl1—3#x†àUâèj ³.±÷¡áNýfš†z‚;lBS°öeÁߊµq*jí½ ñcÅžä$Ìæ£tü­§~æ&f¸ ·{¼­˜$ÜXðÔ›묟u‰¾jáe9àú}]ô&ˆŒ8=÷ØÃæÃk›ÉEw¡°Û¨2?HôKµ¿Ö™[~åcì›U;è–v0ÎŽh‡cf$„f»Ë,Èä]‘»ÅIlèÌe’âÍ˹ðgÁå©Dцõfy-LŠ~U ¤´”ÇòRÄ<ù½±‘Cm+Žéæ ¯ÚÓ[ø ]ÚÏÛ=õ")ojŸúéq ™«U~YÎ_øYØþpóðÆ&+£¸îCé#/fY”´yɰ+yY_=‘É¡½¨Nœnò¸PƒgqŒAì\· vÿžšô* óÕ`Ô•C©'ßÚ¤â,ÿò°gô‹¹çŠOâµÎø•Læƒ J æ…¨*æ3Ï邎É1ƒýçkm^}@ݯko»µëM¡|iVŸU-{é5r*5]ú)v@x\8p_®°Š.Ü=1ëË«ºß5>¾0w¬`µKšw‘ëÿ8´wš¨ñ™EC³ñé7YJ@÷´ñSt¼Aò£»+kñ=SÊúÝ}Ѳ±T¡5Ñí~‰ý]')©ZO×ü=8W/„vϲۈË[¬5æHLLsN-òšß‰a˜½ÝcO)š©•Ðû.lÃ% ˜êw¹;ì±x!Rƒg½'ò¯º®x:Õü=ÓZØ_%u[¬Tð ϧ»²Ž» 5áæ‘Ç'RéŒ8å&Z·7§&¨<îw.ùŒ­Äu^ʽ—¢+©g ˜Êç:¡Í,½  ÙàÒ"N¬D†èþ! Ã^¢ë€Š.@ ¤`µÛHg¾ŽàHié9Ý,€·ïÇE@¼_ó|Veª'—³ãY¡U×XY¶FÙ«g—ʪM¸4ø!‚lífÅ•á’P4æ¢æ4hßúEêÍ¿GüÌE‹¦9ËÌ€0öœ¿7¢†.¢Ë5³À.ŒÙ9)& öC”àFåùˆ$S‰‹ëF£]7Ê2TÊ$F+Õ»Àzë‡ANØ{ {ûÛØûtBù,ø¹Hªxã¸FhÊþ jàû²/¦Ûfç˜Ú:ëœg!,ÓvÕŠì÷£Ê¥bÎŽ€“êçìk@ÊʰKéJ­@±—\ZО¾mw߯30*þõ˜Ú3?ù­-ŒR©s¬z(hgú ý¶Q&•âÖT~`ô=¬d $:¿V{2_¡Üo„.~Y),ã­²‚Tés{Z.' ÚIoòûîK,Ë9§‚W?¶ô$è5|»gqfŠ)žØÇUÿC«DÀ(Ú]ÊÒ¯ÙÉ}²ÌHÕó·HŒß!u ’m ¦W¿Ì§·¦nŒp¶%î‘æ}‘C´>>bül¥Áyü?ØjŸoï<8íü;Í/WýyMe$à¦r•ß`Z÷beaªO€¬_ªìØZw‘o‚sEeLŠ5ú¥Âˆ®Õ+Žâ¤„ЯÜ¢"‚é)ýˆYê ‚,SÓ¾‰RågI b›»S¼—LV®"ïž_å üŸ wE³ß¶G?Ñi§•ôkûi/EŒƒ“&}N ±Ÿòq©Š. á"´IçW3>;OÆÊÙbÌj— ¶)Ú*ª=Xó¿)£žk)XÓ½æîð7ëö¾YêòÒ6mÚI1DPÇÛý0í½Õ-(%E÷œEœ;o:ø{àóëú¨¦rBƒq# c®E›±oÙ+åÒp$f;ñË…ðŒZ9×1‘§š%Á¢ÀÝ©ž*DTبŒ€œ ž³É¶ˆ®õrÖ®áT_èt{»ÚuÖg7ƒŸ¤‘¥V,m˜‹•¤^: ª³xÐ 2úê²ÆœŸ`Tjé’Jaü„2ºNÁŽØµ¢:ÊTDx0^z™¨dþ¦÷_^IŒ¨Iµjwð¿æyY.û’|&· íà>ˆ¶ÜRc8DâÖê P}@+hÈñj@:t½ÉlÐfbuÈC2?Y*ÈK4ÓÚ‡«e““€(ök:©ØŠ7¡¶š¹Ëî—5™–ÐÐuÔ\µ‡n™ 2¼»=`ÕÒ…¦jÊ”ÛK9iÕW©j?$•V® <(Æ2‰¼…ZæUع3kûÐ~ýž0£ª7÷©¢ñGI™¦yg%–N»ŠŠ´µx—<Ðk E–­~h¯[ONLâ܉¡ ²À]ÊŽ”7…?–’轘å­\I™  û%,Ù1´·ó ‰¶_ì è°zuëe¿Qžè”ç’2ÌÛã§%š{{Ø`àëÕô«üбñ-yjA³ä. ûóúdnouV¹ð.{vŸIîÆöyÛÙ÷èpæM=É<m+çZŸd;Èñvx¡X;Áhi* †²†”äJ^,’ä1bHÅø4äRþ™ É-ªÃsØÆô¦jÉþÝŒj‘zæü4KɆ‰Å¬KÇx‰ùN]…9nì¼¶'¯N[ávdÙe,—r>IzÍMü³%Oë¶äÅÁÙ¼¹$¥>©/rÅóSÃkåèAWâ­%ë—^Ø“%Qh_£_¶Õ½Ìx7몽52&¶N>VlºÎdìÙC‰wŽí๙/n}5=…ï ëv¤e£:%¬åFn ŸÕ‘!Ƴ*pîÞ.6­t&„¢žê®^•ضòrÏ×áQ|Àè7#è§‘—®~ùJ¸G§/Ó°@ˆ¹æ9¬‚º ‘ý™w¸I&Pe?±é×¼>qƒØØ˜$+ñØoËØZê9šçÞÖS‚t¤ETµìSÿjg˜æõ:»ã#6*@Ë©$€7ñ*$‰êKsôJŠüJœq¶Ú §¨Ž¢%pr瘨S6üCŽ‹fÖše·ú!'â¾!Z)Ë|¡oC«Ó£Ø@¨¨ÊPFYC•t¾A¸âòª*üÿfµ endstream endobj 36 0 obj << /Length1 1630 /Length2 16884 /Length3 0 /Length 17732 /Filter /FlateDecode >> stream xÚ¬·ct¥]·&ÛvvlÛv*¶µãìX•Š*¶íŠmÛªØf¥*¶õÕó¾}úô8_÷Ÿîóãã^×Ä5×cQ‘©¨3‰Y8š¥AnLl̬ü%3wW5G%G>E&5 •;௜ ŠJÂhêfã’4uò´I 9€ÀÆÇLJ@ptòv±±²vÐjªiÓ100þ§ä€™÷hþzºÚXÔ<€öŽN@Û_ˆÿkGu àf XÚØÊ*ºrJ2Z%M€ t1µ¨¸›ÙÛ˜mÌ W ÀÒÑ`ÿïÀÜdaóOi®Ì±Ä\¦W' ¹Í_7 —9Ðé#À èâ`ãêú÷`ã °r1¹ýí›#ÀdnïnñOå–ŽÿJÈÉÅñ¯…Ã_Ý_0GW7Ws'7Àߨ*’ÒÿÎÓÍÚÔíŸØ®6ÕGË¿–Žæîÿ”ô/Ý_˜¿Z7S+À èåöO,3 ÀÂÆÕÉÞÔûoì¿`N.6ÿJÃÝÕdõŸ0\€V¦.ö@W׿0±ÿéÎÖ ø_ª7ur²÷þ—·ã¿¬þg6n®@{Kf6ö¿1ÍÝþƶ²!°ü3+r KGë¿åîNÿ¡óºü«A´ÿÌ Ýß$L-AöÞ  %‹’£ÛßÚÿ;–™ÿûHþo ø¿…àÿzÿßÈý¯ý/—øÿõ>ÿWhiw{{%S‡¿ðïø»dLA€¿{ øgÑØ›ºüÿ|Llì½ÿO^ÿÕZøïtÿ`rn¦Û"²úK +3ë¿…6®Ò6^@ 7sk€¥©ýßžýK® ²ºØÛ€€¹ýW[Ll¬¬ÿE§amcnú‡®«€ ‹ÿZÁ_ºþ•?‹ªº–®¸ÃÿfÁþËPåï ¸ix;ýÍíTóÅÑâþwôø0±qó˜ØyÙþÞ¿¿ ñ±súþoBþ ˆí?Ï_LÝ\l¼úëfeûWõÿãûϓᑙ;Zü3:ên¦ ‹¿Óö?ÿ¨ÍÝ]\þ’ü¯ð·êÿ8ÿkî@/ 9ÂÚ²£¹@°mzV†[nÞÈOIý>6È‘§ÒF¢5޽þéá»|•&oµ!ÌMÓüíÞK'Nï‡òô¿ÆúpìizSD¾tý?з¨;y~}g1*EÎ8ÕŽö¹\TÜÒãfÕúµ÷SUÍ¨ä †xº“Ãîò‘.€ÂãG僊ŸyZCvZF]áÉ)uÒŸÇš¡ñÑ‘áÞkèþCB†Ü8x*S\¿”²d7o—»Fóèת¥ìVíô$Mϯ„¯Ë÷±»˜lç$VŸbଢËfq ža¡ˆ±ìE‰ÂŒ¤3òFõ]Ër§«Üëg ÂüévY«|±6ˆGMQË2éE\ÛèZ´¢²C‹Yz¡ ²Z¬¼hªºZQB3<œõ"TRÂ(Q¢uãÉ{¢Å1Fn¾$pB=`Õéƒõ9§*L#B6L1lGž‘w΂¬¢¢º¶¡ô§Ñ°/j圱"û‚©[M8âS¶Uó#kа"éͱÝ赞 T/øaè²[M¤üÑryT·ßnSŒZ{õ»{Ò¥¸¾#/ˆ˜ÌühR(ÙƒónÑ•í9+S€ŽUÊ÷ãLÑ;}GY4«njbÔúc°[I˜Ý!žšÕɽŸ,@œx¸äÄÙ§öÑ,H@õŠ´CYˆ®Ã¿7f±bµ?–¯ÑotêEáé[6<DJ9@Ä™­îù+¾MmÂJ¼BhùC$Wznæ·;EQS9ÀóðÈZŠÏϫƦ8è&YzvïköIÇÕ+6pjÌpÚœñ€ÉÞH·.2³3¯!ÖN…ÇÔ˜îVm–',÷ÊóðÒ°Û~PÌVt*RiG (|cè­–± ¨Ôö—m(VÌ‘¬ær@s -3ñªwÕB{ðð rÂb»ÿ¡Â!¦há»ÓA“D½;/Ò~ª&Ç„Žä°·PÃ3ÎÝW…°ÈWZ÷ƒj«=HTfʯ~–<¼àq¸ƒ¼lp8÷¢Å¼oâ6¬„ûmà…ÏT‹LÑX?÷û ¤@ÂÕЄàãJ†¹ÇŠ!·„m¿$ÂnöËóVCõ•Úé$P2ûÒä x™q*˜@ƒ|ŽÇl”›:þÛð «VÇ—ÛrA[’ïu E'Sç¿ûr´ô,0ªXßb{ÂÉÊ!ñT´³ ¦?L b¿‘›–ú¹Þó2ëÔà€Io¿•Ê ”0ÄïR£VÜ—uѨK Çû:MWe»S”íëÈ5U™TÍ®ÉÆÃ-ðãj³ã]ô%îÅSæ4«™x œŽ°Ï•›mcóÄ·A1b<–ˆqŸ`5Šc¶Ž‹Ë>)ÝoÍ”0ÃpPo1RTÈxG”‡~Y`Y?³4>Ê ñþSû³õÕóñá”íü—Èβ5¶ZÈ`þ-Pq`”3?×È“*]ð½ àörTsñ,þÆq¤[qˆ¾€_{G#NÈ·c`åæ½‘˜žóª kw3;V>¹§mõrm]%U I12-š´]†;ÜV»õèã†T3·ž@äðéÞN=®æ *™L×4¦¨†³e>q>åó[,Ø‘˜…o%Ïz=Õ² 6ÂêdáŠw+û\¥ñ/•™JÆ`d–¢-|ÞtŸ‘>@îco•QMz#§8rEk©1Q…5óÞ,Ó$Ô½–°2üçÍ«ü’?µ¥“Àpé¼Ä~ Dâ¿ÂQÇoš­bë ?®m³íw‰bOžIIG÷Öþ$aÝi7Í?2vCz÷FÚâ4bD7¨-‰¡UþB{óÄKÿýeP¨ÉBûH°Á°‰:¸9 Ô}OoX/kM>0ëŠ2]CR[×*ˆo%½¦%D¶Z\˜â1ð6~Á±âñáÏj T¥úÖi…ìíCø¶–;ÎAE“Å›:z 5b¢U ÄIa¡¾œ«†ãÏjp^KºÏs0 úÙ>øÐ7àåϧOÅŸ.¦ìÀ !ã/ßY‰ø9O&ÉïÐwå}Ÿ&‹…Ú<ɵ«B¨¼¿·›ˆ°Ìò¨m3üÒ—Me V¬líYŒ(ˆŸû£ž®>Z¦‹ö´ÍM$]¬_süyµÚºY²B¸–Ú;}ìdÝ*zë‰a¡Ÿx3[PØ9ÚÊçäËK‰¾T½ lV™çJâþlÐǘ£§¹m埩íÓ÷ÕÌÇ׿„a=N<)dWÔÒÉÊ @‰M)îÞ0µ'H¨šÕÊÅJç”êî!¾™-躛7)~‹¢p×in±x‡É‰´óÜp¢æ¿Eã÷ò²˜1Ù7"d¤ÌÛ¼)–(fž|ÂÖ~´v ‘ØJ:1PšrX>Õ$Lšý&’k§Çð!í¡Ÿº{‰/Ŝŷ¸4ÔðS}1ù²B0¤‡kó§DV¿÷ìO¤¯Hj˜Í„Š^l²fËfÁŽRÐSŸFQµÙÁÞvÔjÍ™9t¯NÝ¥|—Û¤0­³¢Áº½@i!­×S<6€¤‰ÓÊÿÆIU$¢k‘bì¤z…ÓÚàVËÈÜÒÜXÂèo/Òß„Εޱ)j/gß$¯.?ê6 ˜@£¹=£ù‘-O˜MƯX}paWU wتàÌÈ/S§n¬‘ñú%:È[:Ã…#˜F=Ž .}<!˜äråŒ`Jó%)9hÖk,›pëIéUÕöð£.³¶Ù"€»o%Šõwtˆ_g£¡³©Ãa+\_Tã¡_7„(佋D¦j£æábxݹ¶—LWƨ"O€î ÃëDÃH6µáR•ÑbG— …9®Ÿq ÷عqaRPˆb##[Z‹ªfmxe ¨Aþ&ž¡ý’ãíd°ÓOEˆmˆVVdB;\”V ­]D•™,XÒ° °Ê¨|´mÖÜÞÅå8ÚÝ_ÂÒ|&ç-zø}–òâE¾r·JôEà{eñM̽üUÈ”Ãps<«*¨êV³ÎH«Îo68ë÷2Sp8¢)¹&ÁE^ü+ï²L#¤=|Z’Kþa1Yÿò¹É;™uf‰uV7ŽÖHF·[f‘{&¯M2¨l)•ÊyÛüG®E&A6XOÅ@öWSÛë«{ª¢·=g®ÊÜÒâhIT6´%Ò7èÐ…¨­:c‰ 6>õ)ü|ÇÌäx{qŸaŽOJÖ&þ€É%•=h(Ù27²ÞC3R6‰¨Gß§´·|f÷(­b_8¢gº¸’+‘øž¯aÉ$pzyÿVžèËG‚Œâð¢Ñä.IO’'&ƱÇU¥Wîlu å—xOO­,7;r ¡™œ®z!ôEº")·¹€€†’F)ÀpC ³[3›åCær°Lᆆxùõ”ýƒŽ.(Sízþ½´MÕñ–NÛÂÉêO_·i‡]ö1YõF€÷ãÏMüÉ=×.©¼S²®O½xÍQÐÝyÅücëÎ…KŸó™²ø*yÎ ÜG‰zà Áç°›NÌ ^ßþu§ì&[%%Þ•Í¹Š¢`ÜIˆ6û–ï˜íVA§xv¦l…¹è ‚GW®bÝšMÿÔYóíüåïw[b†=S³Î+•'‹£%&r4Ç:;qùæ}i®ž&ˆN‘‹%•†Û‚m AK¦üÝP@—ß]¾kdÍDªZý±:wõ`üxô£W¥RÝϘŠLW-àÂDbêEgÂaÁ|Ù»cv’Q‚_]„eÝ’~)­ò›V{uHb¹Ò´È[éíYSn·ˆEù¥û óß3¸~ÙX(U´yœL×@¾æüIêÃD Ðyuæ´gißn-”߉»Yù qzÂ’•WPÇ€5ê¥J.Œç³ÉGÜ™1Ÿ€W­ÎL¬TMÇp_‹oiªñþI7%Ô:€¥õºJ€†r¥ª^!&=âF’ü!l«Úºµ{–Á‘ÂIþ8ÏÀÞ¿åQ5vãy)6Çâ´FW⃂1ªr2nÖÔèŒY Å-´¤gÆ’·]+ÈžÙ—çdA>ׇ·ûÊ_~Ä}7Ño¶þ¶ýQä^3$d¤:m“/cÞt<~ÌœÁ`úÓ&¨8”õþ„ÆwYEÁÂ31âÑù4xÁOHC'ˆuÀÊ@Ńu$,±ldzº@Ñ¡Êcõ…~å2*€°æ6ŠÑ¶­®BhŠ4eÜþ!SfÖœ)ÍŠß©+¸øïµô3Å7ÇæKx·Õ+è”léž1KEØèku€ÊÂuµ_‹îÀécN±æf‹Çój-)Lß DïÊQìJd›è‘_|TyÑ¿õáü â ÞÏ Ôó(É­Þÿ1Zy~ü)øà©.VòBmλ×îÔHo>«;,Qš™ÚïÉÁçI ÝìciR šOC”wÈ£¨5ƒ(h¢”8:B?FEŒo¼c2o=6‘z`‡ ò‡¨a#'ª6EnX7—"é¹å¹×"8SÔ†$ýiAle?GÙÕ·0dQU˜ô`’ dö‘CR_ȵ•!-„ÕrÆÜÂoÀ´¡ñË[Æõ¨qõ>¡26œ} ÊûmÀGÑ€ðëá·àƒ@.7œö Ëà™ fô×8†¯)^‚þ:t6)SéƒFªáÆJ°õ|å|/s8aM"#ò]£²!70êA{Xü]Ž‚ìáP2]Ê2WšøóžÓý˜€'„íHäùõ15;•0]®cÀD"˜‚ƒ 긜j: úo·_˶™ò„HõýA²žýS,&R9Ä )k²¥àH› ü 9õë–‚³DÉ£Ëèî:¤Ó:!¢ÏÓÉ·J±hû95p§R˜9݉GwvçѸæÜ¾3ÑÜã¾ÂšÄk>®øžÉa¸ÅË=i6ÞHÞ7ÂÀ‚¤ CÝxÆï»Íµ£ñA‰×‚ë£6 u8)ó µP‚I6>¨7E[™+¢¦Õù¡iû0 {C Léå†&F7áê嵨y|  ~ë>Ý9PðF|+xHl74k^Åz¶ص§Û^M“YiYo¬Ò¸ò°ÔÛåuþé!¥¡­¨¶çWî mîsvs_ Ò/)н"“Õ6ºr,,¥Îõ6ïŠOh@RÌþ6Cù‚Ì£û+=ëÚEl1(Œñ‚"fp6 Ë(‰¼ˆþW¿ÜB¬”oqƒä("à¼Ñ[]ŠåÈ®I }=#óqÂE|¡ûúW :í>urÊ6nw¶5ØÖ÷tjÔTJë÷©j_ü µ#ØTPLLgôCI ¸GYõ k¹’Çû‘Ò`±É• kñ“§!ËRùºUN·&aûq-®N¡Wç¹O`±­ Ì·–%”Vpôü°ò~Üm[€*æ½µ¶k]Î'©iZ¦\ä)§ÔêLôIœÍá.~T툠xý ¯æ#µØø†}å „ˆöŸm¡ Ô7$Úm3íàsf›„QûûJ­JüG˜t’5È”§(AbBÕaT̉½àÎ%h䋬ó:PB}Q3ÓX2Aµ•ìIƒSùùoÃmû>ó˜â㋬Äý'â<úmZ>ß7Á¬d> SCÔ›63ª‰ b‰ˆÌ`…^aBIs>ÆR…:¥fV¹j!tôÐŽöɡ⟻uÈn~JøîqWª¦)VÌ2ëßš*ךÐzdDš0L?´®;«©ë#/“¤÷³Þ ͘¡À¨i ̵4)uYÌƨ Ã>Ðܹ̽Û!±Ý§NÎ뺄ϧ½{H!bÓ‚@û\ZþuÊPen^TMd#·MÚcuI Ñ/êˆÎ¹Ô%8zÞ»ví¥9¥$íK”°7Ö^‡°X Ÿ<Ø‹%¾4íÒë‰ý½Ctß’£ån” §$ÆÃƒº]Zâ6W6ñû é~j1É3•9<7æ+×uØ×lŰ QnôjN¿ÃJ‚"Çdº×À±À9Û;ÞAV÷&÷@Ð×b.Ckp?r»\3ÒàIwœk šõòÍÞ;ß'G仫ƒX¿PMÓàævC…¥ÆîüEãàì‡UŽÙ9$P™r`E ¶L>îc\ƒªÖ^ˆ7›á{ê–¬óå)º =È(à¡.l„[_¤^a©ªÎjÜ;¦OïÓô ù‘E™Ë{µb4EtjÊàø lÝ%éŒð±Žjé5‡˜2Yo;/}UèÎ7 ¨N.x0º•Ê¡»DéAöÿFWuH©ýzè¶É{À÷b2ªñ®v̸ɿ¾JÂD_¹›³§·‹j3ß l—[u’²¶#¯·cq„{¤C×'T“¼åÇt ¾ÛB©@ï×Â, AÔ±Œ$ân4‚ª{}`f £/o¼‹¡‘'DXØÄ€•Î-/ÔîÔž EJ?éÀOhN½h"ò¯hf•%”RtÇÂ?Õbn|•oÉ¡nî‰ïŽyFsGQ?"pëA‚T<¼mv€$„¬GqÖógÈž/ÉÚ-úíŠßu¹òbËÊÅàã1ySÆTSʧMÎéY¿Wû‡j:|•Ñc ­cýyŠò¯Æ’wo.I¤z€[0/9¦˜bLQ Ô ‹Ð²ôúsÈû9DxÔ ß&Ù*¬caˆA».NTƒÉ€Ä…G”ø¾L ´Z`EZ}£NœHßU­Ž€ýöåP¬)ƒ6[ë`¼O}—k£ƒàYÿÀKÀãÆŽ’ ?ö¹.!ûȽú@²[cºZ´ì‰×Z½qýøá´ŠÁ4(‰OBN%ÄùðZŒñ£Ê¹ÈŠÅøVòÄ…sBÛOÝ„’WÁÓÒr?uø\Ûj}Ä^öÏ.‚CÜzC¯BÁ ¯ÜôcFz_Ÿö,µ®ÚŒJ„f;ã4Žå ä÷C'Óô_^º¬2úºx«ß¢v”,Î=tpM¯Ö$n*¥Ü,€þ$á>|y±ÖÀô÷(õ¬Íüe}ÿÎáF¸÷%¼Y4þ„cSþ•ʱ¸>)3‹­$ÒWe¶icOquW*Š´ëé—û¦ús*y¬«¹‹í?õØŸKËiÔëL&ä¯ï`äêTIòo0VãO_ª•<ë¡r£oè£NªWð1R¦¢¾;DìrI®ä5`ç o$s‹Á@».Šú†p:Ò…£ƒ¦Ò8ÔÍg2[{ò–6âõ(ØOê?CׇË}}›Yx宕—íÀ$kµ½ƒÛOêzáÙyÜØBP÷ƒ5àfSƒH@U”®bò¾ü£t6ßýõß™P’mæLÓ°h*Ìqv[eß÷NX¤qèÉ@Þðˆ/a/Ö ‚ò) ºg^Ũb•î0"ÕìüïQl +?Å– Ýy .¯?GîÕw¥¾vì¿”­zékçžOqh æt²“ÝÖ/mÑð6L–à eaúÕ<ª£Ðþl1"Ía=v1â’}R›yê*EÂ" ]œÞ1ä÷¬´?”üð˜qÂo ’+™þŽÕ‚ „G˜kì8l$ 0².ÂeWú¹ªD_NX,Ñ[Á%%Œ“ÞFåäÃ3 –Ñ©ÄÔ]£`3Þ*ž#óö`®ð櫺½g[w¸‚Ū¶¯©þ·ŒˆJD*3eІC¡(¶¸£é×oDœ—…~I=%Ë©V¨Ü)\£#ˆy[¦Æ[ëŽÆ†HŠè›ÁXâG°¸{Ý,ì=éãñ{»)a{œ>á’°¯…€Ä/6ž‘ÙNèïúÏ! ÍÑÈ´.2êªÌŸ;7²D¶"?NÛijq6drˆ­Q_úæA“&L8G®sXîÐÜ “~,fÄïaäÙZVéï·{ép«ˆÜ à×˪{uœç;$BâíÙB•4pñ4Âg3+Ÿôëú–wVòïLk˜ð ôÇ´•"mÕÂßm[ÜqWEÎ߆ŽAç †¹Ç% µ=è;)¸V\äSÑ²Ž å£R 2*nøáÅ7h}Ï2ëq¦âÇ/j’‘߬»c‹´¼¼NG¯DYûÆßóGS{EÙ>¡g¸~µè••H¤,¯ä¢nØ—È"†Y¡õ0O¢–?vöì‰$¾Iî 8ô6ý¾Î‘æ¤Ý_ròÿœBà!dxíŽeÈdò–ÑÊ@×Ë㤘—aqjeÿŒ@t€¿ó`ÜÀúÝ\çe§C):E }#Q˜Î-[Ò›cÌPïyå”omJCÚ…U AÏ8=M÷¢l"`éÇë²XuÛ$>¸§"$ #XãÉÓ¢,¡mþÉEBŽú^vþ9SOõj¶œ>44XÆn»ac’]ñxV×YV'|Í|³Í)ÀYàß³£ß:u“¾˜x¿è˜ÔÔµ%ß‘•¯o¾¢Ê9+[¸óÒÅNO/bÖk²|#‘ˤ²Ù{»èÄø®=òì@S—EV‡eÂ$Õ¾‘oY»…Ý‘/v0ÜÝ_ÓÝ?·ÁxÌù溥MëŽÉ¶ù0Éù$ìYÝSÿŽbŒQ+ŠH%Eƒ¬ùumq~…,óýȘ~§Ò£IÐ"€$M†x»òíWÒ|ém­‘Š9’ƒëán¤“xཕ-z&)“ÌRy=\ïÉ¢ÿ--¯×L’^l–»ñ£x{"2¢Mk®XɆ#Í”YÆø£?¼±¢•qÙòNïTO܈ËBœÂîVi‰îyk¹`5žm³ºõßwû‚Š’1¥Ïïi?˜QŸæòÕògJˆØïV‹dQOt2FOÅtHb¢šK« §%è"­¦2˜×è÷ÑG¼-Òîv¡nØK}qqÙÖfµ°OV$ì4¢\âŸ*€ Ñí¾EjGüQ´Í€­ÛS˜X…«_ð5³­ÔÏ_P_âQ«f¤À'ñ´ oY–b·?Òw؇ý$Z; ™rÙ£Ý]K¯JuºëúÝú^{Kšþ]:®_°ÿ0Ú¹Ý?×?>!Ì–>¬­5ÛL6’ºfÛO¾R ÖÈ´#´»•®ŒhõMÇÈû»IXÓ‰´À6N‹—eP ­,Ò¾?Iq òyóϱ´E¸=fìÃ|›ÚŽƒ£E(Òf,T—i%‘cIÙ«²ýðB|–Øi“è5ÅCËþ7áõáyƒÔˆÒ†L™ØÙõ—Ù”èì¯GÀ›>T>Cúꉌ>ABóœ}#J}N ”×KdÌiï3UK§¾ <·qÝZ¯¿¢RâçüUÐß1ó\¤—S+ömž†~&ɾkஹÓéU½GMºy‚:Á×JiE\1dÞ¹es0ŒE§‘­#ÍC¯ó$§:ÊïuïrUfгþá!“9} €Ì®s9­RÅKûªxî¼GázÐË1ù\¯±¾f2ŸW‰26_C i¸û¦ß X¤™«¡ZøŸ…Ø,cÓÒÁÁ-óàâµS[¢÷úN¾N‚‡¾Î¯>cè&u øØ3²S ~ÛQq{<ï·NûòŽŒ³é{VŸ›•¡œ¿€w÷‰KþÉ—<ì8Q²_›øÒgôAáCpÍm·N©Žý‰,!XááÞzþÛ×Ì_C¸e7PxHUû#(_áŽ|ç°úÜã9E¥‡ážéŽ{Ûï’(§fó7àÌ,‚¢™„<õ9éLÚkÊkpÎ`ªzÈ@(¸èC—HòlqüË6~êE"ìbk<%[ß(›<Á$÷N6ǸÑåè&¸ï˜‹oj€?öF™;Ë–²£eÕm¯¤HÞ (u|áMu¢ÞÄš¾…ÒïÆŒ2èÔ†„›™k;âûNJL!†Ò·L{ßHæ’UIû+5SÊÍÖÝ»×úc€ÀYx¶ÊÄ)˜ñÕ¶j{ggYH2%ý~Ê[Oû¹Õ§™Û!)¥$Åà‹»‰«õ‰û†0åñ¾O{Pmo;mae‚âèpGv¦¤lJ."ÉÔÁìvù‹kúú”Œ®%l…Y úµn"Ý_È2×ÄA ¤;~OÁßg|YU®b°Kù·`!çäî Äàik'c ?àVN®ˆ“ªvçn`‚eÆk( yYì·&7n²é:,3›eöÒE;Êû¼Åsã",L”Y`ó˜dú)·µAø .Žá6®Þ'ûa.ï£Z7&òmÖ§¡þ:”iy¾–&Ðô1&‡ÔdUÃ’M®§{†~¼1D ™¨¨ÆzT”9zFo‚˪û±ì¾p(ë=OæPÉ 3ËŒÞq11c¦W¯lð(øI+¸">ÜÓ½® AÍÿ5Eø¬w7÷¦ K©ˆd«QÏ•ð‘]`:ß œöáòzR °'ì*±wÕL…¿2y€;¨É;:•Õ0Õè÷µñ¾úŒÇŒÜw¥Ï05ÄûNg^fÁ,w®¬îtÜ/‚`N:N üp]ã¦ñ ºT}±D,ýCØë?^w3rìg·¹ô‚= c‰¨‡Ÿ¥Ç3aÙÚ Ñ ,‹\GγZbn%:STU˯ûòw¶î¨Qð)ÙX·6iS5ÙÌrRØ®Ñf?FªÙòHòŽÿÌtq3Ž(Ážv36ls°ýü[°_€ü7¾Ô7H™Sõ.M]Xã¬iÌá6RÆ̓kÍQn¶N ìsóuZ Y«˜w©ƒãyÊJ= ¿?¢:-!8Òñ;ÈD‡J0•g¿Á:Œå';ùŒá´QˆJݹ…\*3Ô›éYcÚQp l ¬Ývhl Оľð0ȤۜÞ­Æbì_×Ï€£È€…¡<"%E¥‰Ãbfõæ3|®Å²Þn 5𶬡V¥Š;Á¼ØçiØ 4:=‹vìói¸¶<¢4í ¤|û•ª¡+5|šøn—œ¥a»˜CXozÆæð$®¼[ôH!ô\Ò­ôÛÎDîVγ¦¾¯ðŠ}§]vÖ³JÎÀ0ä^C€(®þGú(žK¥É'tÿU$̳ƒº?ÆmD»>£ ¬³|ÅÙðÌ—Ÿô8X±mÖý@¶ 'Ç‹…çèOnT¸¢Pù¸à]îî-cÊäìÓ½"üsTIŽn„$ÊlScy…qV&á_¶Yiþ¥gd(ÄÁ2ƒóYg[ƒba²ËŸ \GßÇ)ëš×Š¡ºAoH;´uïiÆjÆJ¶÷'<Ö-Œ{Se › ~Ð)gžƒìnÙ-ôPuÙÏÛ¶ao0ª0^G\eQ=†rÄr¨*fø³ý©pדâÅx‹í´•£uápHî?Rv¥*гB‰¾½ïhSÊ•°5'â9ëe†oaËè¿zÇÄuÀý„PkC °žkùòN‰ æb‘pÚ™Äëá­š!qˆBŒ>9÷Ô†ŠÜŒe‰t—­LýuÉœìhÖ¨+q¦—zuÐÄÔ–|ÕeÒ¼‘ƒŸjàF'Æ*—Ž-]êÅDºþ’Æ5.Ù§åÓR‚¼¸õ¹PŽð;–ÄN˜ üªÅ|kƒ 7Ê)^áÕù‘êS.šµº¿yˆS”¶IhÑ|W¥H®—L%- hÙhŸºj”oó« d9ñzg¦QÚGHXk•UoQJ=‰jÚ|ÂNŽw‰¤zõÂW-Y1µ©BJ¦¸Vo×A.¯Gà @l8ÃàP3ÇŽ´‹ƒh¬4ûƒ³âNL-·Á Ò¼Óô‚ÖÇŽiù3à:õ¶ ®n,z0¥F8f¶ò‚‘VÈçŽ4TíGȧRLõ´¢ µ³?k>+,>LˆD¹¸ZP~I+S½mŠGsÿ÷› ý†ÝÉŽL.Ê”{ùݘ¼:¿Ü·±ÛÈvžW7÷•7$}%h‹V\‘ÊÉÖubÊ_]ù í¡ -‘e°>)y2(M‚7áå÷›Ý>.nì†ì1\Êñ~‡ž¸m¿JŸ¦9"ÃÖQÂTÒÝOÌŒ_öø‡xf³¾b’œõöv—)f Á'ÚÃíy…_£U4âs'p=µ ìœ'|ÚŸ#ª,«Ci¥oCÁ˜Ý™ºlw<ס԰ô·E|ëÒ™Á;»ŸëïyÒ°Ô›½¨êœ€—H^¦‡–—^•ؘ+¦õf…†0ß…•–J«Lßjà7—R•f Ö—àH P̘ ájïw¤„ªzöÄ®,ïb§}Œš k °<† u&\mOŸ¼¶œÄãlí@¶«Îqc)§èÕò%òƒæ;;$S׿jîÇ•2‡Îðô¤%Í6cý‹h ýÓ¬ˆr¾bL`WÊ(Ú«aÜON(h‚Ûœb|e1õ«²Ë äúcj¢'Š„ªz^áV‘Êô Fù+€ h Q‚9kì[2!råQ-¾ª.šùzôøzf·@ØòKÝ‚|ÅíŒwók·pnóQX†ÞÑ´³Š$q ­ÏØÈú6ƒŽ.,"ÈxR¾­m1Jbòþ‹Wlu½=Vf*è=0ÌŸAm¼¦WEÓj^NúZ;‚]¾I8ò[Zè`üM.¾„m@ z<Â3ÿõ—•ðq3]<æ8ÈeߥTU†à|V²Þ9ÌmÞD'¶Ðk"“pQWM…ÙS‘ „h?†à©ñ¿õ—=RRqƒ®ÈkÆ™Õ.ƒÑH‹Ž\ÙŠ_ ™Ÿ1~Ú¢þhËx¿ÅCÊ¥BmšOŸäÍÍQ9[¼VO¤Áé%‚÷IÇ}и‹Ò¥ÑaIÔ×õ‚Ãø) òNK›!\]Ë7CŽí¹z÷|J~És°Òëèu™˜£9â?áħüú¬‚‘æ+Û`õ¥’®ë|hÜ÷UIˆ¯ê‰u$^†dÓ—í4àF«&gÏ&äïF]?D‡Ì1©Mn Ì@z°PWš‹žºBë†îá¢l´øË\3ªKœÕý(L¸’¿¥Œ¶ÎÚxâb¾ÙŽ2s¤åý¡ûïGn>ئwpJ$8½&TD-äJõ'øÁ“u°ô% Õ~™rƒ^   ]*ÖÆÞÿ9L¨rÊTVäqöO’í^[œ×,“µè2K¹Ö§·Å®®rÿ¤tG¦Z¾œ¼Ê±ÿÌSìhcù(¬ ¿0{jž«½Î©?äØ4åkî jòÏœþ‰ú«t!?jžuL•õånhƒÒ›fyEå ~ßs(þ# EÙ{%AÊþ¾LrÑé ÈmI-R 'þPƒ7J==Àò:‘@¬ŸÐ]"Ø!óÜÿÒ²Õ"Söâ•3Æ’m¼‡?U§¾ÌKöm€3m@ï}}W¨rõ§Ÿw¸é“W°ÂyH¬†}¸«{Qì²ùÕ”Ó:™= æ^ {µTŸž; ¹úYÔé/E=½Æ“åi—v—(ôÃï_²XdjôôÁß~Jjœ ²¿£ ExTuÜCúõ³DSoÈ‚ûí.ä…’õk` àëüRW›ÌЗ)rn|J *v/·eb-fbvÅ óÇ'Á/Šu‚o![oœ 0>+á‚ÄÄ7å“]ö‰& Ÿ8E¾ù+~yÔ®ÃáßKò‰‹Ûôœ;™ñËœHähת76ÃAMêI×xÅÝÆnAŒ„̶©$!d˜MêçµÐê5")¡Ñ³žecžg$d³ C.ÈQ;Þâd÷§Õë7ï:Ï`9ÊŽ ÒP&ìJÏ=«è_#ûÇôãd0£¦ …%ˆ$¸˜Cœ˜C­©Ö¾Ùã?º/‘ P®0€ 6¡˜­O(Ǥš“êásJ•%`9x¹3NaþâÞ!„åòÝA2‘"è!É«ˆ¨8XAß= ëîÐÕ¹#i¦ŒÄ:ðO®ëRÃÂïÚPïpX?N™¤/©Ð,åUýÉ¿7¿&o ìž;½”FÂÑ:j—òHƒtFZ,ønCìó1êÁvD®&íÛ0Ä~ঙÌê‡CÎÆº51®›OòRA5µT…ÓÌ”Њ9ÅôìàÈLÄË>Þ,‡Höhå¶²™°Áƒ>øZÚ…¨Ÿj§¾¢?E®–€ÏÕà ˆËß9ë1lUÒÃÎÄ$UcP‹õî?(Î0‡ ‚M›ª¼]u¥ ý˜ê•r0Œò‘§c ¯JUººta«È!¯¡_õÄpùZ}šÛÝû`_ûÈ ó£Ùí}Êl/ù Š²ÄÕ–:âÿA*ÊOÆ)Oà?^Å×äyjÒIýµ µô¢=\S•8SÁC¬ Ç k²7¯©7¡gi \Ø\¤üCŒŒ8"?x~a¤‰F OJû Yè#‚n2.)VPݯ¡ùö¬J ƒ e…ÊŸrDÇÎã÷r¥iå%£Ùù€B']¹ÉkGÏ7aá %QÆè¹A‡ðy½ÅÏ(Iݺ[+לq=`•ªHï áTÈ2Š@Y×·}(°òÒf¼Ô¨¹°5,=‚¸ëSÏǺMƒð­0Ñæs´”ÆêW•mì•Å~öÛ°\¿'=Ÿˆ‰“òº^µìôóS­’Ð y 1Öl ÒrV{¶eÁ0Н\œ>óg_3pª½8-M¢V‘Í¿¥äÌF:òHØßÝ]ÌÝC0üª7">ñ0µU0»ò=@8[@…\@<ŸÑ•¥TJyªÐÆÅ2³í`FhÌø ñØúËÐ÷,™6—˜A¹Kí·~ 'cW9øíÀá^Õ›¨S$bu¦$õõ=<ŽWúïu‘¾ø³½ãN ÖºÚr»`6´Ž««È#¦åœ¾ËÕ«×BäTÆ*g„B+”ES[/À†˜'ñÖÿ…óK娋uª“‘Ì9P–µÁ-k÷|çgíU´ƒFwãš.«šàWý±­¤W¸ïF÷u¼h7ê…?kæ«×KûùãO™Ì"ûú©²’â¸_¬ü-k‰™£¢H¡à·w¦õ›á$óÜåì1Ÿ¡á’§VÓ.“¯l–Àh¡i5çø˜{!€Ærö(KŠ|ˆæÆ/Q©ŒN1Rß÷Z˜&ßüJòÓXw2ë‹xs(RõP‘XË{ûA¨Ãõ‚±î“eI•öÍ8¨ÓùBßéPª7&ÁíR·MÊ ½/¢´ ÿèØío5Ù…˜5˺å+ªÝ‹…¨Œ4e€êƒW–=ËNi‡ÓûJ§Î:†8Ápp1øŽís¿zUø¦0 Ž×vÈŸP²cî_ãSœ§”õa¸Ñt„nx¾9Êà¾y}?ñý°Ö;ƒ M)(}›kö±®–tÈj,jdßÄJ¼:¡oÄðòd‡Î’Òë¾è9Ø÷+ËsQaº'úS,æ~ÚßÁ%P«”6r!^.šlVDZΰçm!Ǻ,ÑT®„r"á%ttú&.Å‘ž>úÓ”iÅÑåq<Ød²$`I[º´Lä=x.¡'©R É|½¯²¸æ6y  2ˈ£WÞ•Þ€ ÝÔô€‰wâÊ =Û-LÙq¤1Ei•nÜ÷£' ð +ÜbB6R@ ˆ/ ªØŠÀÁŒ÷ Fb¬ðÌf²6 ܶ¥¶]ù²Ö•$õ6íÆò‘D¨±sÉ¡a Á>æÑ;=ì¿÷>}-±ƒÇ=xn7W¡–††ËŠY`bä6d¬áºj;‚‘#…Þ±J¡¨£\رÄEUKŠkI:Æ$~þ†ûãM¶dGtÔ…~Œçêþµ;HðláÚ*ØäÊ~WéÚÀªä»Èt°z;²'ò»v\ §¸íBi†×ãGfPD²Žå çÈ^Upì*Po+B“)Iׯ{[ÿÃ"„MDÇð…;„ÃÙv¸cѱïÔÄïð=¬1Ïòlm§óBf¢3gJ9|ë”E©ÂhÊ Õ7ëºH,¥)Œì‰“Æ Tø;×CcîÙTðÒİÑRù¼®#-ò.ˆ²uEØq•ˆ´Ïlõ#Z˜ìwH’α°@ µV]£ÔO û'ÇE½ÑœŽ}iMMSö≌›{_jOâÁß»¬&¢2”ìÖsƒ!ÑÇ’‘ òy|T?št³J†íÒ˜-êEê,Ü¢dž›{ðŠ\P×\Ý?mcë™à”=1ªÎ…šò#/å`iH +n¶M{ÂcåD&ß°y~u@óJÝœ„IËHÞÊÓó Çà'ñÜ..Ç_ê¡ô¼˜àí’‹¾SXC¸_ÁºQ‰Ç’ï›dü!Ý-;ƒ.¦¡¤>èíá½E­§ã¿;…=40]DíJUä}ƒº±}’èŒ9™Àè0ÄkJ¾>òüRW7ïYŒh‰7¹1DŽã`b†£Ÿ»ÛQÅVÊšI ×.çb‡ñ«_üùÓ½æ‹e@²[¯ü{!9Â㡳¬»÷ ÷¾ùKÔÙj¾‹]Ðp°J5†Ûñ&nD^4ÚN€DœjvL`Íò# —®8°ïíóöƒHé’s°äÚÈo‰p;g²ŽÅŒP90è?tfqlÜ_¢Ö.òËfLŸ¬q(t[ºPh¾Û˜’ Óo4ýÀ¯7.q‚'Ì~Љ8½ªø#¾½ñVÜÍ]^Æ‚ì…E@Zèï}Ëá™ñ‰—ÉêX8.ÿÑ.·ŒûOËžÒbìu¼hè«i9ÇÀ°5ڟ﯃¸[cy”c? ˜D9+[t)æíÄ­Ráëôˆà,e7TK'5~Ð5ð}¼Ú4Sq¬âŠHp”pÁPŽ,¢³-éí©Ö¶«?ý4`‚WÏžo§üES\zÑ‚-ÕÀðÝaUÓÛí®«õ*¨2ö]µÿ6•$+­ßñ»C¾É Bt3ŽŠ*b7s^â­‡»¡h~O|ª#'’ÓVÓ‚!ªT£©=p3V°-ˆÁX‘!„÷_A™Ã ‡vfKžCï¾*f¯ÝŸ­s"Šb­r(jò^šA;Ï“i«câkšž'e„7T“‰EÒ¯æM-ðW .MePÙ †×}<ñ{#lÚŠå3Þ´ç(ª<ûRH9ð;'¥ü²ûróÎÀšˆ¬ÎÞMhžÎ §P„UnVúëÖ⬶×?¡ `tæ¤`»N¼²»‡³”E€|‚Ía‰ÜF369ì¤c*¢…%G”)Ç—ãékê^^Úw*¥ýÿ=Âû¢±2ͯfɘ/ œ¤Ô †Ï늢&õŸ3V–ÎC'M‡&ftÝRsÀ§;=¢€û¸j/±èI½ÕèMð Ë˳gA1ÓÈ äÃãÀ^þPÀO¨ZH±>󢧉ÊO#˜Á–@Ý} Rxqè¡Rã)»z(R‰ÖV¹ÿ¨£;&ꎷŒ‘9ú5ŒYA@ôJ¥‹HËçT(Uˆ š—Qàq…#}Éhä mPHÖèÿY̾ÆñjÙG.ÃàÇ|Å'i³”ËçTÀ‘lˆ­cE9'Åvƒ`E‡ö×Õ4ÚoæÚhÓ¦x±GWB;Æ“S7("î ûðœðë¢Òü;ì#äõQÁãyè»@G¨)Kô"8od¨—oç1ðW~CÈîWÕ‘|G¾.'Ј<‚(é ù³xBœm&‚ýæN3§¶ãÖ´/ž2²{âp èk‰"J]Ôi®(°ð@çî2Í®ëIÑå©ÎÊ©â7ÒÿHShîŒ3;¬žG#6)è:ãʳ 1Û.íPÞúøz¼=6ÔÊàÿÌZOÎåà]USö½š$Þ—ªlf˜Âë¸t‘Y{§£ ÓåuÕûZqÆ–›g\tFr Ÿ Õu¦É]^—’ó^¬œçݽDÌZ‹s+jàƒÕégø¥dï&,þZ îÅØÃj?]*¦Ä`åè7úÆpj: òn© ×=}ª~èï¡[4FNR“„ú¥­œo°¥sDOM‹ܺÒO @`3o…¸0·É{¤8æGÇ€n@hÓ„¿PåNQÏ{¢gË%~ö¼zŒ×Ü#;‹8UôŠóx³Ú·Ý–‡ùª¨àb´À¥öñÓÃj¶É†•Àš:/‡› €ObΛçç0ÄK2³ÒâxtÄÍpº‘lÂKÏ×ÓäUVà´¨Õ,nþÍöïÐŒ,³Ôߢp+Ì2kÂìuïôÔ³|™¥Y(9qëèÃB•_ÕþS÷en@ŒÝŠž¯æqë¤0ÄšÓá0¡… ü¤ÛÐñ®Åž¿y^÷³,±‚Qœn‡Á- ötÖ\8DÌ+øá|Ž£?<Ð=849V<Œã{røTôCü=£ÔˬgGøi·QóênózJðÚ¨µ»ÐB¡›¹˜¤˜sh÷”`ý[¹{gÇœrÆw³b§þ¯wFvqƒÍÕ:á72h#w¥l]˜û–:wuURÿÅ^L’éÇ˼7fÀ „ã7,èJ-9V(6”ó3Ý4‘Íaºè8lñ¡§aT’„¼½9ÕN~–ÒæÞàɚνm`%'à…ßå¶¡í ÔõðôÛÒÞ×IèlC[ð,HÃf–†½’k¨Bì2KsšOf[ïtÊÄHPÃÁ-R (>¥*Îìu3§'È›tlj-’šÞw endstream endobj 38 0 obj << /Length1 1647 /Length2 11281 /Length3 0 /Length 12129 /Filter /FlateDecode >> stream xÚ­wUT]í’-îî6îîîîÜÙlÜÝ‚;‚»»;w—„`‚»»ÛåÿOŸ>=νýÒ·Öë+™UõͪcQ’ª¨3Šš9˜‚¤ì]Y™XøJVv¦n.jvJ¼ Œj 7YW[À‡Ž’RÜdâjå`/aâ âhÌ € ÀÊËË‹@ wpôr¶²°tÐh¨iÑÒÓ3üKò— ÀÔ럚O+ {ÕLJ;ÈÖÁÑdïúñ?vT®– €¹•- ®¬¢#«$  ‘VÒHƒìAÎE¨¸™ÚZ V@½ ˆ`îà °ýÇt°7³ú«4¦,Q€ ÀÅ´úpyAŽ©Ž g;+—o€• ÀÂÙÄÞõã\Vö@[7³¿ø›;ü£³Ã‡…݇îLÅÁÅÕèlåè øˆª"!õ<]-M\ÿŠíbõ¡8˜Xš9Ýþ*éoÝ̇ÖÕÄÊÞà òtý+–)`fåâhkâõûÌÑÙêï4Ü\¬ì-þ•Àdaâlf rqù€ùÀþëvþU'à¿Toâèhëõ··ÃßVÿ™ƒ•« ÈÖœ •í#&Ðõ#¶…•=ó_ý"koî`eù‡ÜÌÍñŸ:wóßDóWÏÐ~$abæ`oë0™#0+9¸~„ÐüÏXfúß#ùâÿ‚ÿWèýÿ#÷ß9ú/Cüÿ;Ïÿ-åfk«db÷ÑÿØ3€EcbøØ5À_ËÆÖÄð×±þ_®&vV¶^ÿó¿[kþ‘õ`þ»ú!Dí->bdådâü‡ØÊEÊÊd¦bå ´˜›Ø~\Þßr {3³­•=èƒä¿ï÷É…åßtŸ-­€6ö±ÁùÈÞìßkøàíï ˜Å$T´Å¥éÿ›mû·±ÊGW¸~örþ#’–¢ƒÙþ‚sðø0²rñÙ¸Y>†ñcyÙ8¾ü?Âþ Äú¯³¢‰«³•'@…‰……ðñþçó¯“Á¿ÁHÚÌþê#uW{³ÖûOÁ_j ›³óãoƒÊÿyþ{@ OaiÁÈb–™îZ‡›;<)¡×ßË 9êXÚø¹¨  Æ¡Ç?-bƒ·Òø¥6”©išï­ÍkþÈñuGŽnw´Ç–º't–Oô…œ¶¯}•ªƒ›~7ˆÙ°9ýX+Æç|NaJ—‹EswsRUͰä†xºƒÝîüž6€Ü½ ‹âÎŘڇ݉ֆQWxtL•xpG=862<Ôs Ý·CHŸOÉo‚ë—|Dšäêeì|Ó|ƒ~rçvCô@öÁLu#´'Ks¯÷þõÈ@ÓQz<­/–êÒ¸dÙÄâ}>|c).H' }Éàö ”ª#†]] íôóߢ²%¯ÑËidt¹kÜ6þNAö•b¦aÏ8‘õ¼2ÉÓ2Ñæ°lå—Z¦Q[!ÎDT¿sSm9ð'ÀJÈÏ^tÎÿÙ󕤶A¾¯±Ø^’:þà9¦`lÇã@¦ÄWqäó;ºm%†w|îÓ!Ù݉³˜Zº9³ÐQýJKI¥õRÌ•÷Kƒ%·Œß´V7f>æ¯/†ƒ²Uà¾#—Ì÷­¬-5¦×=ûâk]xå9Ë\?C«¹ ÎsèDž“Uov¡´b¿^Ô”l£Íôã}$ë~Þ(T¤ •¼0á‰2­lÄÅmü±üësœB‘b*þ7ËHUd?ãÑvD™¶9²Ykp‚¢Q¬èb½VøÂ:¼ Ÿ)ЬÒqˆ€–Þ'pS¬ÍldAHĨœš²²³Ôßíï]ÌjŒ|ýײÔ)Ÿð2‘p¸ ;DÁ"uõ~íÑÏ7HuÝôQƒG}.ž¶‘ì«é…ûrã¸È$EàuyPŒá¥èÌK1Gó2^¡<8-tþ£Yý÷‹Žvt%¨² Ï«!{zº˜RqQ˜'ºMίèÒ%úëQ> ý®]uSx'I36"E|OÁ/SÌ}ž~g/_931|í'«K+h½!qd±CƒÂª»ZË«šÐmW­V‡‘âËrÐä¢i =kEô°?á\ÂN$fIØ,×˲éý×°:± Eã ?1VÛí*,O ýÇÍÎȵzgÓQáñ ¸—á£bif¥âл9MÔJÿhG;Œ4ùqÐÞCg‘_Ï%Š{j¯éQ_Pýû“gϪ«™…¶]Á­èÙTTk„ú¶=†1È44åœÝ¢»sŽM:./_…ç›Nó77Ç18“ë“·Sø«+Z«EÝˆÉ k]E\“‚&×ýÌÏ£ó£OËÐ!Œ[Pw/¯ïvc .Ë´ {JÓbÌÄÀWåYhKQ¼(ÇýG9û”¨Œ º)êïÚÐÍÆ ͽõf{ü :ÕhÃ,»àÔý„—“ëÞ‚Óò`µ]Ì!ãøcª¨¡$;Ü}ÏkòÐkx*ö.MÛÉ+ß8"+[ŽsSý…­YîöÊ÷Ÿ9¬³oZë.ÀÄuF«K_0[CÃëE%ù~Qœ/Õ\>Ë;O°°P`,–D4ˆ¸v5ÏH¿œ¹E(Ý´ AmžÄ0=ìÞ €À‚Rάa"ÀƒÂ„¯ÔnÊ®µwð 6ÜGòăº!øS2O ÕÕüÆš½ïþŽ'T@ZæV6¯j<„w&Ýàlb¢÷m,ôÞ\-ýéÖxÏF#š OìÏ®–ü»‡V¼xT Òòû¤Éïé”(+IÆAKÂ{Ç ìöoà†µj'Iž|nð-Í`oVœÃvF_ N­_"ö{œÒ;ï¨9¹3~°Ã¯ \#/ÎzÂýôøÄ ±ØR¨&HêÀ}u‚u:×iv«9ê'ë(ÀUv› ux~{Ë¢íb…Vsýé7Lsw¢`~Íž„M¸e–}/XXý»I°Y<åUGõk–&)¡µz·v¬gA× âùù|ÖC¥²B#†É£¸è9mððÚTHÁ #D¶^¸Ôœ¹âÉãúݘÏ$‘žkÏ„ß7ÍF¯#åÃnP÷8o,ý8,P5»e÷¶ú}QTı¸¬ÜÈàÀ÷(?§7Ñ+•¯8d£}dQ>„=iÊÅPóŸü=îõ¬%€›R—‚îÜ (bJÙd« ÇàIÄЊ&Í ñ„îA½­¿pþÛÓÒšª²VaÖZVg鼪iïc=M[=£ú–é~ƒŒ¬Æ ¶Ý=B_Zú¾Ç¨=~ §"ªÈ¬pHo—¶È¹‡Öu ÝVV¾Ð¯ˆ†‘ŒV"ÏŠ ¸¶Ê*±[ƒk÷p¾Z÷a©¾CR¤“sTs?ý»«Ÿúý~Ú:GšLê)ššøy‰‹H;ºÅ¿võíQöòüKãW_DS!DM]»Kq;£R47ŠÓBž1ÀŸOìSzµé(NXÉý¢ë'£òe¯üY¹.1ˆµÑ´­•]’Rd¹’Q4}™£ ª’4,â]q09jRضŸV’{Oú꾩vD>¢š¼.µ2•õ¦1ˆ’ßcÛÊ]þD›ãJQ—Ì: ¿Dƒ›ç8W±5·ÿ m %Káe ¿Û€sU×êæ~Nâæo‘ü˜¦Mæà净y?ÐYäVнrD~ºi²Y‘*à£!³J]A–ý.¿ÉÅH{­tËÙMg{êŸÜJê õÌîMùCuvŠ5F7;ùåm¦ŠC€uí—€P(BH!Ú©}ìwúšÚk¸dà§UXpxô½Ò*«6Bl”ª¨tµ¡Ž\ÿ»B 1žIö-/¢Ê¾??{†âo?^$­“í¹Þ ô…HÍGHž‘8ïy¿ã¨ñ&&mQ ŒªÜ’š jÇõ¬ _’é]ù dILâSÜÑzÑ4”x¸ˆ£*c¢¬¶uolGšêÆ[*¼<òf& ³`Í45½Yë‡5Ÿ5µý½H<Œ’}wu0‡µ®Õ´P)šÅlÕØÉÊ{H怅OÏ.'slßHÛÓ6ÌþÔ/®ÈîzÐ Ng‡àìÁX æïÿ‚q»\@ýQßò˺@ÜÃõÈá,é±gW›îý‹Crb"ªò)z¤}Ùv°—œ€±4ªæò/ÉNw¨ÃŠxƒ*¸„Þ)$5Ž©Êpö–q±š”fy¾ ý(^!ô ®'Î÷.ŒŸÌ\ûc]Z²Z«v¹¦˜ÖúŒX—@X¡UŽ]›]ÀƒE·1õòŽþ⢇ė4Ñø)úH„,²•ó‡¡Lš *¥ã®´+["Šö”‚¶Ü¢èaÕÈæÙtðÅKüVQªU'_Cÿ\v«‰„³‹úƒêsÑ‘ªAë1€We}y¤65…©{:ùéô×NßÔZÝd\Ÿf»e2‹¸þm·‘òCa½Vw¹f›FÖ¦jžIÄpͬ „C‘`»›öÖú¤± ý•€k)ûÂo‰ä9³µ}åzdRô3„k¤}ùávÈü-4ìWëäkFà6õAàcR}ï`c•þä¢Â›•¿ZrMÒÄ2Û;½£˜ÕžwjZUô*)´e±^Í¡Y±/í͉ò• ¬¶®¢ÝFW¦ËžÊ{+ñr6L“óF)Ø”ºO4¦k™1ƒ]nÕÊ…w®ŒŽˆ'õo­WiŸb(w»* Høh²õ²Z±â¸_+¥yïÇÏâP7Ÿ%ºüÊbŠ|ÄNÅŽlJãO0œ¬G¤.Õ‹= ·Õ…˜^)~ÈÜ… Q…VòF«É •Ò©öQisÈïëä\#Ç«ËÂô"zbç¸0øußZ¡¬1o:12…½™¯‹;ÖfaÑTîíÏ_³»‚WŸv¿WƒÃywÓ!Ž0k<êcŸ°kGQÕ:±­5®ú’8²o-\‹“ÆI"¬4$h8šcGÄïŽ|‰‡~ßä«íSÝž[Ew[§ØQªÝ9Mº÷zš¡ïP¨›VܤXÐ:P‹«kÏdüCž>¯Ðý’¥çïŒ)ßi¸œgÿ„ëRíeFdNêåábñ«É;ª#‡]%Z5 tÐNË SÑ]ÂþI--v»'ÐÙJoqºœÞõ<5i†ØE+ušÝ…kùbÙ~‰˜úÇŠ±S‰<2›¶ig"ë×—ˆ?C|~´ãî%½ÆP¾„ŽtÈ®Ôs“*Bt*h7Â*'XEl^ÔÇ/âwÇñmÖ¾¿(¼©²F@ºçR=U¸ ;Åzïf¢K<`‡íþôL‘êí_ÑçØ×ØñŠqñªÁ0{&üdrË!âc—÷Š_Å ä×¢n_Æ æÑ¸¢½H6Œ…űmx÷T(8–dÕZÒ¢è÷¤büXR…1ÇÆä¿ •ïbn‹f\î-dëh‘ž)¸Ô–Ø^µÎ;­l–Ϥ¶&ÇŸçSð£n< þb²fórxªÅNsðÚ§"êêKÄïÌGn}ú®éNé%À:s"ämÖhÔH”ª<ÐìûÈ^>{¯ãÂ¥Èl×µeÈ£¥N˜JŸ<Ä0‘&6ÚhÉ;à±àG…0øe-{?Gº¸½fÃÕ8Noc¢O½ÍŽgÝø*—tj£ìtÉô’` ¦+…;IN±¨‰£›û¸h'€î(âÔo‹<ù+?Í%Ç׬©|xŽ–`šU{¨„ÔßËøâöáô"²`e“#+xx3€j׵ස®¦idÕÔÊ·„¢¶G°|úÕP…§Š§ò°jmhPfL/ `‡üß|€©¢/ îü…Žľú¹7w94÷EmX4F/NÁ#¡\':À¥X+â‚ïÁ ’mÕ0Œƒ®^D üÐôK÷N‰-¬¤;t@•¤ µ¸*Ç’bÙLÐXªdu¾–µ“k3£–8ß_ý<^Ö=,+fûUÙAXãèc\×Fi%9ê_-ØQÍá°O£&«Y÷†Å"Ù‘žûo?¾ÆS51ƒ ~´áKÉñÎ@±’„á²bô²öÙ5w$_«Ü†'À’¾Œêz}-›"ê ?p: âÍÿñ]?)!B^)°8L<öp"šÛyã>–Bh0«´ûÛìU˜Ç„‘Ko²àóÑç+ׂÊ>=¦"9VGÌ×4íQÒÜ­ïòW8U¢‰;µJ!Â?!Ö‹;XùßQ¤×«q/¡?H#-àÚÓ¯”leŇÑ*P ¥«Qù˜€½Z§ Q;žgik’‹bDÿÇ.q}º±p@d^FžØzSUdÔ󪼫æH].'N9=ÙXäà”½ ÚL}ïøåMÀIÆ»«¬8)d]D+<X°ðƒ1†Ôw±à ]½XÑù¤Ü´K»ñçl[ÿÊ:R»ïX°pN¨„êÝ{Ç7^•Ÿ¼6i•EŸ+×IºT¥<€9ì+!EÀ²C‡6lX¨Ró#wb_ƒfÊ©Ù78êÓa¸.¸9Ä„µiz†¡XôàaI ˜Äƒ3ÉÓ‹„±¦ú±ÚWE»0ý7ßÒÌÈêŸñb8ãœQL”ZmÌ™0äòH7qʉ&jßêkÊ—¶’gnlã 28ñb*¦æ£ˆWmCuÂÙ.ÅöOÔ Ý6ofž*5/whõj…š‡ÓçŠXù'Yo±Ø“èœ#sšl ÍäeÜ÷"¡â.2íç- ÍŠàæ3Æ'…•½K È’©\hƒÐ° Û+±½Kr3&}}›Þוž=+uÞc ¿B©°5Ý*Qx(*S*s[¡‹ôþó¼º÷z¼ÓÈ»Èuךì$=ˆÛúÝ+Ñ á7ÂQÿí†ýÞ{ŒP8ƒŒáº[9úÕ÷zpcó‡x«B*òÑe]®f ôr&Û¥òÏpAŒ¿6%OFt= ôï¤ôZçùúLõÙá.NÜ;sô€SÞ±ú¶Â¹V-œô.‰ÇÂ,yçLäí¯½å7dÊè T̸²4ˆ ŽÊå‹ôì·î {ÏñGÃKÁ > Y Ø1ô`zœ@æ²dØ´"ò[L˜,Öâo"M­¶.§7 óY¸ºaÓ¼ú¬Q¤dÆjvaDÏ9ç„ K屪MÉ›¹½ì|{“”1±5Ú“„ƒäÍ‚’^b1£ ºµ—âOߤgóýD8(úïÞÎðY&U –È/¹Ïˆ°ågenƒQ#ãƒÇ99°ÈûuþA@,jäÕÈड5µÇ&#ãØá'*+v¸¶Úオýš)Þ ÛïÑF¢å‘‚æƒ];‡÷úwã”,m]òâ/åqÇ%±pÏ]Âä9Ë·Sþˆ9˜ÂJ+ˆÃ„‹¿iòÔ[ø„ç&lìFbx²öbz°µêdÆvHù=s%¿û“ìbǼ³ã²þr;M¢ÿ6Âã¥v³²T´«¡°/‹Yôº‘ ’î!þʹŀò‡bƒñÏÿ쎦Ìè5q»õiÌf¥õc:±j+v«g¿Î0ÿ¤ÏÈkvаùS@£øMïǦC`ƒÎ¦ûrðçݽ„V”Æ[«|“ˆ_rï¡|_¢%îÕ+öÇÈðYàp²ÚúeP˜}’…÷7‹×†€Å/d‰Å&C€]Å7ìQÈ0Žß‡õ!ž¶òj+¯`½érÂùöɵIG ¤€ûà#˜\}³Y­xGkÝý¼s¯=\R'§H/ðÎX(Øçæß7›ˆÑîU@ÇØ£q-âÊ›)ÍqßÚ¿vGUFCʵ{œºØ•O—–ýJ˜rVÿiZ=„3úg6XŠ«ÁÒG¤­}°*±ôéÝI›Iåä5Ó°5G“n'8 Ü1M–Û;•ªÂ˲6ÿÓ™¼­T­5#|Gd€ˆ=–áyÔXŸ;™7÷d÷[Àç†_ò=_A1J©:åle¨âê—¾÷jt· ð‰ØÄ¤ É»ÛÞÔYÓÀ÷ª½[éID0LðŸÁnìä3W[&°¿§¶åкp>Ú|B…Ç:6ÙpÎ.¤C5ÃêÚ|qU É‘ºEœûqy‡táÂþ0Œòð³I&Ä…vVïÛ»5µÎ²äôœYR±ã"8Ú³Gß#£"Æií8ê^kÔ¡±{íêSwÖ 5cI…{ž¤$vøu]m7×E|nK¡¢dáD¯™­¯}:ÍåàøyŸO±„R›˜6cƒŸ-F•:­d¿–»¾ ø³{ŒIÄó[Ü£ Í¢“.O°h˜ämdJÃ;"„ g6¯ÖÀyc·Yþmÿ¹7&ÇÔ¼“bÃÐ/.¾É(#rI·~Mk!z#k;ƒžùÙÜ#©™ƒ&ínÑ÷nQ»‰“)€ŽÅô O›A§)UH)·þO• ÞDƒ‰3žd52yF L©L”°¼»Ûuð8T6»ŸˆÑA~?H©&¿Ið7|:_B I ‡ƒÇiëòâ H#DáKh{è×Nk‹´ªR±Ýp¼®7Ôû‘é‡ÎèW†Ð¤Y.my@æƒ%qŠS4ßåá´ª_´JÔ¥$økŠe\œ¢†:ã²$OWªœÌjõH~¡Øa°õyÏyo}.~'4[¹&hÎd€8noC@±—\ö/¼¼$g=†‚÷?•¦´¡@ªU2¶Ú6 (ªSz ï7<kâ :ÔïLvk<,ç…_„¾f+ä÷ "s¿YÃViÝ ù:´x#9œeÁ¥[L͙̻Ž~èÝrúÃßšÍZØpßÌZeYæ·Û¬Vó¢´þèHÒ–Hñêä÷•K3c ˆ8ú1Ø‘1=°gAݵï*oT¾i‚µ­€Á¯ÉðG¡™»­¯qUô(øšø^"%sFa ×’]~”F/ÒÑ¢ûÍ.²ÅcÍýpwà¨êùËõ™äÏÙÏ“w·»­–ó$f‡«îI°8Gt¦9¨OR¾Ÿµ¼ÿ(Pp(BÀöBH@ ê8 D¦6O4ÅïXfZÝäù‰óûJi‚ãWŠd¬\]F^øl¬‘G»àöµ^×þÒK˜1SÎE£Ä"ò+óXÐs-O¤¤Ú'Åö±í'ÍíÒrçºÎN„»ƒ>º»1«åóª•] LÀ¸w²èSâÇøp3LÏÓcg,](uÔâ–ß÷õ´}J¼5b j‡Ào¸ÔK´}Ý%u¼éÿ‚1H»êÿäŸg óýó•BŠyÝÄè<·Öf¼m““W;)E •aWͧðÈatLÊ$d4!z’ [t]Qt‘þ÷´ ã|k0#K›Ñ>”~Ú<‡'CˆéòšAI^³&øTÍ#*–z^2‘ŸÝp”s¾0(‚ ×ðjçÃ3ŇäÉqý\ºL•†‡&Ü\—!•a›‹‚¤èn•q£Öß^ÎYÑ{0:mÜ\DƒMd:‹œŒóVY×ßa?§Úêk-í ˜&\­XŽ´q¤/M>àR#ºÄ¸ZH"Ía÷üéNB³|éÆÿú2àq–ƒ‰¦D2Tz²à¥Kéla3?í À)6gQ±MÉqåòÓ#A;‰›Æd‚ðåÈÌ;262½7ÓpN0¥×(ɯ0‡»,„uÐÃq2hCP…|^-¯4•þŒh§…9­ièf¨cHö¨›0åbçRûsaaæõ˜1=J!f—gÐÌ]Ñ vW/•‘Á±ººm"¬Ff¼¶ÍØ~|O{Msi‰EJ•^‚P­äiò¬¬ÂMß?ݬKÉ ð9­ß Âi“dœƒb8ÀG M‚“™ã½ÝPU ;ÚO÷1*Õ8hE„ ~÷熰‡««g“ê%$6P³‚7”ùX1ð7nœmç'qY©æ;0t#~¯š¸Fë±òã¶š¿|É×3Ë,. ÏÕNÊ*‰Û©cá\ã®mƒJY•^á!Ñ¡bFZò mOgS6#¾_ƒ]wQ%vC‡Ã)~À+ÀXvˆí»uJ$¡‘ŒHèN˜E/P2¯á^YmNÃ5 @4WB-F.èåfxêl´dYîŠè˜ÎPGÓôæ9üvfy¾q(,òŠVy7“Ê2ó ³39+˜'µ€øª_ÉÁ¶ŸœÒ=ÚÜ% ø1ìPx3Á;<° ƒåM£:ìi~¤[Å}µ=+eEÇ9Ù X^Ô×.:§M¹H&‰rÂÞ_–B‘U/@³Û»kÞÍ=Vê69B¦™Cô/0£&Øâž$D†úñŒkœÃFå ‚Ï¹wרiŠò ŽÐi«#¾ õ`øê‚!, ~ôÊà廿”á–¾í¢í³öb749½ðFÙü`$ZGú91Eª¦oÍÀMBª)É=T¤¬kV,g*P5¥ @µiÄÚR°œ1!§[c619[ê>DTÆj–ðîiÖ3å*`‰¯bz“a8«ÌŽ›ù«Ö1¥Æ§ðìq90Iv(fO©uñT–Áá\è’uZ1ÿJì©>4Õ¦7±"ÛcãÕ£l‰â¢X{‹Ê/„|æúûN?ˤd½= ‚êÔï·²d}6£äÃNª\“B#ý*ã·ô¡†=Qð’DÿH– N§ÈjY?©X^.ü{+tÜ„sWá }¦áQݧ‚mO¡zè`œü¡¾RÒHbLnQí[Ì2‚uRlƨ7Æ­nò+'¤òÒoÚGr©¨¿'ïĦxô^ß’×ä%üLt”Ûª ɤûEF2DÑ>›°k¯Øÿ>íî_ãJ&8¥¬Äb:*'%MˆI˜̷ÁÉÝâÀ²ÿfþƒñ[¾/`Õà™{wîŠÝ²bËrþw‘´Ôˆ!ÉgÜGÛŸ#"(%uúæ*UÌQ2™õ;–ø-Ü‹ ʈŸaÓ×7¾1 Ú{ô4—I? Ì>Û¹Ï1ó.WÙ®³;û–é!¥nW2¸"RÛT[9Rz3N¸<±UŸZá²Gµû Ý} ²¶FòÐ,3öÏ~ß ë~¬Çºvkòªë³ù²ëA€dz¥.ùÐ’c3ë½ Ûƒ9Ù÷‡FŒ!×ÎfiÒ7bo®¡(t :#¡_Êå †^Äj8›Ü÷̶Ԁ¥‡¦1‰¸NXB…ç 3]vòÂÖ`†]ƒùuÔ“~)qñ¯Ðßg…º!¯C¿‡—+lÝ~Ç£‘’âHê—ui5ù¾TÕ 9ë’) ΊH./ðÚI^+›¾Ä'_ª×¨È<{*Š¿R¹!ÜÄnœ+éF†Á¼S­ãWóÃø Zò²§¥;w5ìF­;”» ’,ù  ŸMÝÀK©Ò€ãx³(3£›;–¿³½ ÙÉ_(±:¬Ž(²¥¬´‘¬ Ÿy!Ã̰ɒFt‚IìÛ…?ó(ÃT¡ OnØä›Í¡š¯—øilyÉüœ¤?h_¬ô)Áh¨_¦B‘¿i˜Jiê12À„â@š^ fpðĪ1Ó*51.(¿X/è%Ñþò†âV! Bׂ>È1šE⨶~9Ì‹%UI „ø”}£.s>É%á6ã½ÇfÛ~¶gð#¶RC¤Éô˜°³Qÿ]@;±/퓚q€@"¸+¦ä]¨ÖU,ÝØBýtG +þÈÏßÀÛö3€B‰v/&ÌÃõB_}"„ŽQ™³©½QŸ;"˜=ð ÕÝ#£¸å’üžÀÎ)gBÙ9Úƒ´É˜Cr4N2õðÌ\yÛQZQeSॾ_ûΓ:²¼m²ƒòû˜hûAã«|ûðë%Ülƒã9ö6°ÕT£—™ë ˃ª0 é5^Îÿ÷€Y͹M$}EÈ]½Wði3öÉbK5þË‹*±V6q”2ûÚGŸÚ«2µ 7ÄÓïPíÈÁt_8Ϻ ³›ËnºOñêj;q£#õoû4ô¹' ¢Z(¯ŽoO”{tèP^À´…Ș:C{Ÿȵ¢zluü×õå‚‹$ðÏÔkvpGÈÏÒc/>*æ+äiêËM>M¾‡\½<åyÉMTÞ»èm{SÛ¢Ð`Rþ&~\¿[»CRAj¸‹bIŠU ÷Ø´›‚»ðSV!îaYÇ_©ö] JêT¨zöà ÕUŒèu{^×JsÊžÊÁ4;¼´¿›öÞxäÞd9êQ‚ ¬G×½~ò˜X*†4À´J×`'¢Ë%æú°ÈXOxÃ}ÿÉe‰Èfç<íس¶[…Bª£˜]÷gœ˜ëâ¦h!þ'¸hp.˜\tû£Óšòé¤ëw{ŸÀÁÜÚØý ê´=›Âá^0q<$£lÕyËöõ¯Õ`×%R]†…Ôe‘–^PQç›<ûß‘žoU·Ï±Öý Ø]ÌÜù¯Ókh髯s¡5ì•^ȰŸcò› OÚØ„ú õzÃüà¾î˺Ïñ ÚH®“Ø`s©“t;øî£~f\ùùÜì¯õ“Bø:.›`ç:-lȳ߮Ì®Þ‡Š¢þÏRMö¼8÷Îh *"U ÝÏè/Ú”˜ù"ˆBæ?ù+köÖ4±U–ŠE#täÓ EÃÆ 2~Á«¨-ýeÜÖMBòΈpN2ë©çÎGÌ®ôÆå4nBlFö²ªô¾ä šò¯ã»‚ÌÕ„¨ D‚ùÁõÏß ¶hÊwn ›ËÖ6?-´(jò·h ßRÆÓHX|M¨_0,ÏÆæëfÆÌ>Y¢Èà †B|'óº€_uP´ÔÔ˯ó£{.ýˆbÚ#ƒÚH®ªÈØ,ij#éQmfÕs‹÷-ÙódÆ@ú”¹¨{kÓ¥ñç™]dXå‰J?ÛK¸GƒYZ5Ñ‚£TÛÌ÷²·®ßȰÖaVóɪøDPœ¿ÿƈÐçlÖ”X%æ>UÍ~ª I#®” 4³7 ̼µ÷«ÿ¼qfHóº¢Þ‹ÚãFr×”„–Ü*“#~í’òbókz Â+›+ãUuoæ“1” fö[¾¬Ÿ–Žå´‚£ü|‘ÐÀÓµ³Y_¥<®‰î1áùEÛ ñ Q± @â+òYˆ–ÝÇÌîÔ~M.„Oˆ©Mú%¯Ï[#žÑN¿±D,u•ç2y¥ïL:g:‰¨,\ðÿ‚_\ endstream endobj 40 0 obj << /Length 699 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öƆ@LE"¤¶­šhµ×œ.Rˆ$‡þýΛ1i·Z)Aãç™yoÆ7?ž·“¬î^Ý$º×êźËP¹Iþsß77EW]Ž®=?:W»zÜ==¨ç¡«¶î¬nóM±i›ó%oÚêýR»1ëÿI+÷Ö´Ÿ)àQ·;÷{ÒWÃ`‡ ý4òvÍùö¿o)Z«ëZqê/7œš®}Pæ^kMÀº­óîݧ`ê¹ÕtTshÚzðÔ+ä&TuSýŠŸÕ‘ @ñöãtvÇM{è‚ÅBM_hót>XÙ]0}j74훺½ª"t{éûwJË¥ªÝšÑ¬û£SÓïC]·w½S!¯¨©ºÚú}å†}ûæ‚…ÖKµ(ËeàÚúÛž‰¥äõ0æ&”«çx˜™Y°F\20/0–b“Ò# “!Ú‡\§)&q)€% 1Ϲ‘NÐÔ"Û‚%”’4¢81`rÈH%ÃDdè‘åÜ#C ýйk Ю%£íºÀÜ"l é%²Ë€ìR„Q ƒF'b=:SýÙäøuX¤ð$”Qúó:ú\C¼–AfpGÇR~m%^!N%ί$†h³³&„ÕšñR 󛣿#Æ¿p'XϾ¬½>ÿ‹A£Iä Â}3N¸h2Ž5ó¯gNÑE'b«£œkýkåØ¿sè ý»¢%Æ|Vâ ¬áž!ü°¡äÀË3™¬?Ðfc91˜ÓŠ—9Ç|u 6ãZÖcW‚Cƒåƒabî ýd1×®eFæ-9žAg깟ú÷Æ3•ZÆ=üI=ú¤ž ç6-Ä7p¥Ìçœã?)pe…øÆgT<ôŸ«?}øpq¹\¯ƒê2 tSð Ä·¾ÿ¦u×KªïzTñŸo·ñþÄê© þ…çr{ endstream endobj 41 0 obj << /Length 700 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öƆ@LE"¤¶­šjµ×œ.R’Cÿ~çÍ8M»])AãÇ̼7ÏÆW?·“¬î^Ü$ºÕêÉÝi¨Ü$ÿ¹ëƒ««¢«N×ï«]}~;Þ©Ç¡«¶î¨®óM±i›ã %oÚêíT»sÖÿ“Vîµi/)àQ×Ïî÷¤¯†¡³Ã„~‰ÏÍñ¾½S¨  8ù—ƦkÕZ°në¼;@úL=½šží›¶¼õE UÝTG¿âgu P¼}î°i÷]°X¨é½Ã;k» ¦C톦}U×YoO}ÿæ Aé`¹TµÛS7š÷~wpjúm®÷Ïï½S!¯è©ºÚý®rî}uÁBë¥Z”å2pmýÏ;KÉËþœ›P®žãaffIÀqÉÀ¼ ÀXŠMJ0Lf„hr¦˜dÄ¥–€ÄP<çF:AS‹l –PJÒˆâtÆ€É #• ¡G–s =2ô+æ¬ (@»–Œ´ës‹°5¤—È.W PL²KF1 :;ë³3ÕŸÝ@>€_‡E OB%¡?¯£Ëâµ 2ƒ;:–:ðk+ñ q*q†x%1Dëœ5!¬ÖŒçj˜ßDÝ01þ‰;Ázöiíõ™ø+&‘„ûf.œpÑdkæ_ Μ¢‹NÅ0VG9×úmåØï9t…~ïÀŸh‰1Ÿ•8ƒk¸g?l(9ðÃòL&…ë´ÙXN æ´âeÎ1ŸFAƒÍ¸–õØ•àÐ`ù`˜˜{B?Y̵k™‘yKŽgЙz.ä§~ßø`¦R˸ç‚?©çBŸÔsáܦ…ø®”¹âœsü'®¬ßøŒŠ‡þsõ§.®—û : ]|ñ-€ï¿iÝÇ5Õw=ªøÏ÷ÛùÅê¡ þ‰Rt¦ endstream endobj 42 0 obj << /Length 699 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öƆ@LE"¤¶­šjµ×œ.RˆCÿ~çÍ8i·Z)Aãç™yoÆ7?ž·“¬îönÝkõâNÝy¨Ü$ÿ¹ëƒ››¢«ÎG׎ÎÕ®¾ìžÔóÐU[7ªÛ|SlÚf¼£äM[½ŸkwÉúÒʽ5íg xÔí«û=éÇãÞúiä½6ã;íßR´V×µâÔ_n85]û Ì½Öš€u[çݺOÁÔs«éEÍ¡iëÁ P{È L¨ê¦ýŠŸÕ‘ @ñöã4ºã¦=tÁb¡¦/´y‡VvLŸ†Ú Mû¦n¯ªÝžûþÝAÒÁr©jw f4ëãîèÔôûP×í×Þ©×FÔT]íNý®rî}sÁBë¥Z”å2pmýmÏÄR²?\rÊÕs<ÌÌ, X#.˜K±Ié†ÉŒ€íC®Ó€Œ¸ÀŠçÜH'hj‘mÁJIQœÎ09d¤’a"2ôÈrî‘¡G†~Å\€5h×’Q€v]`n¶†ôÙ劊 @v)Â(†A'b}q¦ú³Èðë°HáI(£$ôçuô¹†x-ƒÌàŽŽ¥üÚJ¼BœJœ!^I Ñ:ggM«5ã9¤æ7F7ÌFŒáN°ž}Y{}&þƒF“È„ûf.œpÑdkæ_ Μ¢‹NÅ0VG9×ú×ʱçÐúwþDKŒù¬Ä4XÃ=CøaCÉ–g2)4X( ÍÆrb0§/sŽù4êlƵ¬Ç®‡ËÃÄÜúÉb®]ËŒÌ[r<ƒÎÔs!?õïf*µŒ{.ø“z.ôI=ÎmZˆoàJ™+Î9ÇRàÊ ñϨxè?Wúðáâr¹^Õyè¦àˆo|ÿMë®—Tßõ¨â?ßn—û«§2ø %ôrg endstream endobj 43 0 obj << /Length 699 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öƆ@LE"¤¶­šhµ×œ.RˆCÿ~çÍ8i·Z)Aãç™yoÆ7?ž·“¬î^Ý$º×êźóP¹Iþsß77EW®«]}Ù==¨ç¡«¶nT·ù¦Ø´ÍxGÉ›¶z?×î’õÿ¤•{kÚÏð¨Ûû=éÇã`‡ ý4òvÍøNûß·­Õu­8õ—NM×>(s¯µ&`ÝÖyw„îS0õÜjzQshÚzðÔ+ä&TuS~ÅÏêH xûqÝqÓº`±PÓÚ<Ã+» ¦OC톦}S·WU„nÏ}ÿî @é`¹Tµ;P3šõqtjú}¨ëöî£w*äµ5UW»S¿¯Ü°oß\°Ðz©e¹ \[Û3±”¼.¹ åê9ff–¬— Ì Œ¥Ø¤ôÃdF@ˆö!×iŠ @F\ ` H Åsn¤4µÈ¶` ¥$(Ng ˜2RÉ0zd9÷ÈÐ#C¿b.Àš€´kÉ(@».0·[Cz‰ìrÅÅ »aà‹±¾8SýÙäøuX¤ð$”Qúó:ú\C¼–AfpGÇR~m%^!N%ί$†h³³&„ÕšñR 󛣿#Æ¿p'XϾ¬½>ÿ‹A£Iä Â}3N¸h2Ž5ó¯gNÑE'b«£œkýkåØ¿sè ý»¢%Æ|Vâ ¬áž!ü°¡äÀË3™¬?Ðfc91˜ÓŠ—9Ç|u 6ãZÖcW‚Cƒåƒabî ýd1×®eFæ-9žAg깟ú÷Æ3•ZÆ=üI=ú¤ž ç6-Ä7p¥Ìçœã?)pe…øÆgT<ôŸ«?}øpq¹\¯ƒê< tSð Ä·¾ÿ¦u×KªïzTñŸo·Ëý‰ÕSü¨r· endstream endobj 44 0 obj << /Length 700 /Filter /FlateDecode >> stream xÚmTÁn£0½óÞC¥öƆ@LE"¤¶­šjµ×œ.RˆCÿ~çÍ8M»])AãÇ̼7ÏÆW?·“¬î^Ü$ºÕêÉ»ÓP¹Iþs×WWEW®ï«]}~{¼SCWmݨ®óM±i›ñ†’7mõvªÝ9ëÿI+÷Ú´—ð¨ëg÷{Ò‡¡±Ã„~‰ÏÍøF ßÞ)ÔPœüË Ç¦kÕZ°në¼;@ú1˜zz5= Ú7m=x ꊪº©F¿âgu P¼}?Žî°i÷]°X¨é½<ŽÃ;k» ¦C톦}U×YoO}ÿæ Aé`¹TµÛS7š÷~wpjúm®÷Ïï½S!¯è©ºÚû]å†]ûê‚…ÖKµ(ËeàÚúŸw&–’—ý97¡\=ÇÃÌÌ’€5â’yA€±›”a˜ÌÑ>ä:M1ȈK,‰¡xÎt‚¦Ù,¡”¤Å錓@F*&" C,çzdèWÌXP€v-h׿akH/‘]® ˜d—"Œbtv"Öggª?»|¿‹ž„2JB^G—5Äkdwt,uà×VââTâ ñJbˆÖ9;kBX­Ï!Õ0¿‰0ºaþ0büw‚õìÓÚë3ñW M";÷Í\8á¢É8ÖÌ¿œ9EŠa¬Žr®õÛʱßsè ýÞ?Ñc>+q ÖpÏ~ØPrà‡å™L Ö h³±œÌiÅËœc>:‚›q-ë±+Á¡ÁòÁ01÷„~²˜k×2#ó–Ï 3õ\ÈOý¾ñÁL¥–qÏRÏ…>©ç¹M ñ \)sÅ9çøO \Y!¾ñýçêO>\\/÷Auº*øâ[ßÓºkªïzTñŸï·ó%ŠÕCü0tÄ endstream endobj 46 0 obj << /Producer (pdfTeX-1.40.25) /Creator (TeX) /CreationDate (D:20241029192935-04'00') /ModDate (D:20241029192935-04'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Debian) kpathsea version 6.3.5) >> endobj 9 0 obj << /Type /ObjStm /N 28 /First 204 /Length 1695 /Filter /FlateDecode >> stream xÚíY[OÜ8~Ÿ_áÇ]­Ø;v.ªÄ@i»JRâ!̘!m˜Ð$CiýžãÄOæ ª´RÕz⻿s¾sq‚Ï<&X2.|Æ9VæGãŠÉ0f%α¸,F:Ã>]Ù¨NÅö‡ÍÚùHçÍþvÂHO,—½‹€4ø»üÊò[ë¿HËÖÃl„"ËŸP*¤Èc½âQŠ<¯‰8J©Ö۸ׄ©nˆ¢#ž¢h¶Pˆò½:¤4!ÇÖMè¡pЄšKu‹Q@3—Úv… T’»ÄÝÔJm€D|6Fáb£š§Ûß®iêQS·ãíš&7Ø1'–-â‘.»ó<”¶hì±<òhJ‹ô¢µ™†Nø¯4ÚhM{ØB8cÁ§Ô9ÙÃf ›iHCmiê–:»ÞÐèd¨–îfË¢ â–E7ÃØ§›ZìM=\ ·ÅèêÄÍH&㾩ŽO%¹Ã„a Ïݲî ,‰ ’Ûå°ÉbøN‚V2½>Ñ gG—ƒ"½«ò¢¾ñ$·8òötûŸ³ý¿ÒÛ«I¹Ÿ÷6Žôh‚3²d„oõÔ¾¹Pmà{Õ†À·œ‰Ž8ÇëÔV9 ëT ^Î’»·:ÝT.ìGc\bë]•dé`k<Ê4ózp\éÛS&yΚ5R¸ÅMRÐÕêØ‚>lü†]xoáìÁ>À8„pÇp \ÁU‘ ¾ê*Óו­´ `gùoo‚s\Ãuz¯á¯0‚¸ùqw£ÇB·0†q:ÖCŽ¿wp§‹4Â]6)á|›ä•^eP@ ¥¾ÇUeúe–”7PAuSh Õ÷&pßá~ÀOø©‹üÏZ‰»)ÊîÏ\<בs¼ßÿáS—œWYº˜ €×Ñ;í3B¢[ŠüGS´ßRsŸà>Š’r¦Uš uÖn¹Ò5SO¦P›$Y‡ÈQ¡“J.¡_àkCjË']þÍ9¦VŸò(’«.±]ZÅSh=?:îo4´å·y¼·A/.KÜ.ˆØ†ÁÁx~x¯±çòjš-¯Â‹—8—žCkÀÓú½n¿¥”¼mÐq¤e¾ô¥«øZÇs:u\ÆèuF¥ò)*ýx|zÞßê¨tE$#•ŠÈªTHG¥a4£RÅ]•ò`‰J#åhTy«cÙû¹hF.Cs^GµI–éÕ1¬Q}¶Pû_F³GZ=ð¬ <…ºþÎáÙö›Ô‘ž—Ñ#!]/y—¾ ž¡šÓHûÝH§,D{K äË$Úˆ´:ÕaøXL¬æ;j“®ÉGóz{=äÃtëNFâ÷éc›‘‹þˆcõGen ÐßkðÑqÐíÁç£^½ý¶ Çßur¯·s„T  ›¬5ÃYW¤ä endstream endobj 47 0 obj << /Type /XRef /Index [0 48] /Size 48 /W [1 3 1] /Root 45 0 R /Info 46 0 R /ID [ ] /Length 157 /Filter /FlateDecode >> stream xÚÊ=qð™Å²ëcײ>¢Û„3l%j‰D¢Ð‰“¸F¢s…CˆÖô þóš_fæ=øˆàž¬öDW¤¢CîGvˆ‚ðˆða[_”D‘H¶•…OŒ/VQ!²Üj[„¢*j¢.Äìj/q<[ЉÛÝR“xÍ-%ä–Zäò rõv¬?ŽÍ×±õí:$w‰«‡)þaW endstream endobj startxref 92203 %%EOF ArrayExpress/man/0000755000175200017520000000000014710217417015003 5ustar00biocbuildbiocbuildArrayExpress/man/ArrayExpress.Rd0000644000175200017520000000512714710217417017727 0ustar00biocbuildbiocbuild\name{ArrayExpress} \alias{ArrayExpress} \docType{data} \title{ R objects from ArrayExpress collection } \description{ \code{ArrayExpress} produces an \code{\link[affy:AffyBatch-class]{AffyBatch}}, an \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} or a \code{\link[Biobase:class.NChannelSet]{NChannelSet}} from a raw dataset from the ArrayExpress collection of the Biostudies database. \code{ArrayExpress} needs an Internet connection. } \usage{ ArrayExpress(accession, path = tempdir(), save = FALSE, dataCols = NULL, drop = TRUE) } \arguments{ \item{accession}{ an ArrayExpress experiment identifier.} \item{path}{ the name of the directory in which the files downloaded on the ArrayExpress repository will be extracted. The default is the current directory.} \item{save}{ if TRUE, the files downloaded from the database will not be deleted from path after executing the function.} \item{dataCols}{ by default, for the raw data, the columns are automatically selected according to the scanner type. If the scanner is unknown or if the user wants to use different columns than the default, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files.} \item{drop}{ if TRUE and only one platform in series, the platform name will be dropped.} } \value{ The output is an object of class \code{\link[affy:AffyBatch-class]{AffyBatch}} or \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} or \code{\link[Biobase:class.NChannelSet]{NChannelSet}} with the raw expression values in the assayData of the object, the information contained in the .sdrf file in the phenoData, the adf file in the featureData and the idf file content in the experimentData. If several array designs are used in the data set, the output is a list with an object for each array design. } \seealso{ \code{\link[ArrayExpress]{queryAE}}, \code{\link[ArrayExpress]{getAE}}, \code{\link[ArrayExpress]{ae2bioc}}, \code{\link[ArrayExpress]{getcolproc}}, \code{\link[ArrayExpress]{procset}}} \author{ Audrey Kauffmann, Ibrahim Emam Maintainer: Jose Marugan } \examples{ ETABM25.affybatch = ArrayExpress("E-TABM-25") print(ETABM25.affybatch) sampleNames(ETABM25.affybatch) colnames(pData(ETABM25.affybatch)) } \keyword{datasets} ArrayExpress/man/ae2bioc.Rd0000644000175200017520000000444014710217417016600 0ustar00biocbuildbiocbuild\name{ae2bioc} \alias{ae2bioc} \docType{data} \title{ Convert MAGE-TAB files from raw data into a Bioconductor object } \description{ \code{ae2bioc} converts local MAGE-TAB files into a AffyBatch, an ExpressionSet or a NChannelSet. } \usage{ ae2bioc(mageFiles, dataCols = NULL, drop = TRUE) } \arguments{ \item{mageFiles}{ A list as given from \code{\link[ArrayExpress]{getAE}} function. Containing the following elements: \describe{ \item{rawFiles}{all the expression files to use to create the object. The content of the raw.zip MAGE-TAB file.} \item{sdrf}{the name of the sdrf file from MAGE-TAB.} \item{idf}{the name of the idf file from MAGE-TAB.} \item{adf}{the name of the adf file from MAGE-TAB.} \item{path}{is the name of the directory containing these files.}}} \item{dataCols}{by default, the columns are automatically selected according to the scanner type. If the scanner is unknown or if the user wants to use different columns than the default, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files.} \item{drop}{ if TRUE and only one platform in series, the platform name will be dropped.} } \value{ An object of class \code{\link[affy:AffyBatch-class]{AffyBatch}}, \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}} or \code{\link[Biobase:class.NChannelSet]{NChannelSet}} with the raw expression values in the 'assayData' of the object, the information contained in the sdrf file in the 'phenoData', the adf file content in the 'featureData' and the idf file content in the 'experimentData'. If several array designs are used in the dataset, the output is a list with an object for each array design. } \seealso{\code{\link[ArrayExpress]{ArrayExpress}}, \code{\link[ArrayExpress]{queryAE}}, \code{\link[ArrayExpress]{getAE}}} \author{ Ibrahim Emam Maintainer: Jose Marugan } \examples{ # An example can be found in the help of the getAE function. } \keyword{datasets} ArrayExpress/man/extract.zip.Rd0000644000175200017520000000122314710217417017543 0ustar00biocbuildbiocbuild\name{extract.zip} \alias{extract.zip} \docType{data} \title{ Unzip archives in a specified directory } \description{ \code{extract.zip} extracts the files from a .zip archive in a specific directory. } \usage{ extract.zip(file, extractpath = dirname(file)[1]) } \arguments{ \item{file}{ A file name. } \item{extractpath}{ A path to define where the files are to be extracted. } } \value{ \code{ Success is indicated by returning the directory in which the files have been extracted. If it fails, it returns an empty character string. } } \author{ Audrey Kauffmann Maintainer: Jose Marugan } \keyword{datasets} ArrayExpress/man/getAE.Rd0000644000175200017520000000316114710217417016260 0ustar00biocbuildbiocbuild\name{getAE} \alias{getAE} \docType{data} \title{ Download MAGE-TAB files from the ArrayExpress collection in a specified directory } \description{ \code{getAE} downloads and extracts the MAGE-TAB files from an ArrayExpress dataset. } \usage{ getAE(accession, path = getwd(), type = "full", extract = TRUE, sourcedir = path, overwrite = FALSE) } \arguments{ \item{accession}{ is an ArrayExpress experiment identifier. } \item{path}{ is the name of the directory in which the files downloaded on the ArrayExpress repository will be extracted.} \item{type}{ can be 'raw' to download and extract only the raw data, 'processed' to download and extract only the processed data or 'full' to have both raw and processed data.} \item{extract}{ if FALSE, the files are not extracted from the zip archive.} \item{sourcedir}{ when local = TRUE, files will be read from this directory.} \item{overwrite}{ if TRUE, overwrite files if they already exist in path, default FALSE.} } \value{ \code{ A list with the names of the files that have been downloaded and extracted. } } \seealso{\code{\link[ArrayExpress]{ArrayExpress}}, \code{\link[ArrayExpress]{ae2bioc}}, \code{\link[ArrayExpress]{getcolproc}}, \code{\link[ArrayExpress]{procset}}} \author{ Ibrahim Emam, Audrey Kauffmann Maintainer: Jose Marugan } \examples{ mexp21 = getAE("E-MEXP-21", type = "full") ## Build a an ExpressionSet from the raw data MEXP21raw = ae2bioc(mageFiles = mexp21) ## Build a an ExpressionSet from the processed data cnames = getcolproc(mexp21) MEXP21proc = procset(mexp21, cnames[2]) } \keyword{datasets} ArrayExpress/man/getcolproc.Rd0000644000175200017520000000172114710217417017434 0ustar00biocbuildbiocbuild\name{getcolproc} \alias{getcolproc} \docType{data} \title{ Return the possible column names from processed MAGE-TAB files } \description{ \code{getcolproc} extracts the column names from processed MAGE-TAB and return them. The output is needed to call the function \code{procset}. } \usage{ getcolproc(files) } \arguments{ \item{files}{ A list as given from \code{\link[ArrayExpress]{getAE}} function. Containing the following elements: \describe{ \item{procfile}{procfile is the name of the processed MAGE-TAB file to be read.} \item{path}{is the name of the directory where to find this file.} } } } \seealso{\code{\link[ArrayExpress]{ArrayExpress}}, \code{\link[ArrayExpress]{queryAE}}, \code{\link[ArrayExpress]{getAE}}, \code{\link[ArrayExpress]{procset}}} \author{ Audrey Kauffmann Maintainer: Jose Marugan } %\examples{ %# An example can be found in the help of the getAE function. %} \keyword{datasets} ArrayExpress/man/getcolraw.Rd0000644000175200017520000000122614710217417017262 0ustar00biocbuildbiocbuild\name{getcolraw} \alias{getcolraw} \docType{data} \title{ Return the possible column names from raw MAGE-TAB files } \description{ \code{getcolraw} extracts the column names from raw MAGE-TAB and return them. The output can be use to set the argument 'rawcol' of the function \code{magetab2bioc}. } \usage{ getcolraw(rawfiles) } \arguments{ \item{rawfiles}{rawfiles are the name of the raw MAGE-TAB files to be read.} } \seealso{\code{\link[ArrayExpress]{ArrayExpress}}, \code{\link[ArrayExpress]{queryAE}}, \code{\link[ArrayExpress]{getAE}}} \author{ Audrey Kauffmann Maintainer: Jose Marugan } \keyword{datasets} ArrayExpress/man/procset.Rd0000644000175200017520000000163114710217417016752 0ustar00biocbuildbiocbuild\name{procset} \alias{procset} \docType{data} \title{ Convert processed MAGE-TAB files into a Bioconductor object} \description{ \code{procset} converts local MAGE-TAB files into an \code{\link[Biobase:class.ExpressionSet]{ExpressionSet}}. } \usage{ procset(files, procol) } \arguments{ \item{files}{ is the list with the names of the processed, the sdrf, the adf and the idf files and the path of the data as given by \code{\link[ArrayExpress]{getAE}}. } \item{procol}{ the name of the column to be extracted from the file. Obtained using \code{\link[ArrayExpress]{getcolproc}}.} } \seealso{\code{\link[ArrayExpress]{queryAE}}, \code{\link[ArrayExpress]{getAE}}, \code{\link[ArrayExpress]{getcolproc}}} \author{ Ibrahim Emam, Audrey Kauffmann Maintainer: Jose Marugan } \examples{ # An example can be found in the help of the getAE function. } \keyword{datasets} ArrayExpress/man/queryAE.Rd0000644000175200017520000000244614710217417016653 0ustar00biocbuildbiocbuild\name{queryAE} \alias{queryAE} \docType{data} \title{ Query of the ArrayExpress collection in Biostudies } \description{ \code{queryAE} queries the ArrayExpress collection with keywords and give a dataframe with ArrayExpress identifiers and related information, as an output. } \usage{ queryAE(keywords = NULL, species = NULL) } \arguments{ \item{keywords}{ the keyword(s) of interest. To use several words, they must be separated by a "+" as shown in the examples. } \item{species}{ the specie(s) of interest.} } \value{ \code{ A dataframe with all the ArrayExpress dataset identifiers which correspond to the query in the first column. The following columns contain information about these datasets, such as the number of files, the release date on the database, the title, the author and content.} } \seealso{\code{\link[ArrayExpress]{ArrayExpress}}, \code{\link[ArrayExpress]{getAE}}} \author{ Ibrahim Emam, Audrey Kauffmann Maintainer: Jose Marugan } \examples{ ## To retrieve all the identifiers of pneumonia data sets pneumo = queryAE(keywords = "pneumonia") ## To retrieve all the identifiers of pneumonia data sets studied in human pneumoHS = queryAE(keywords = "pneumonia", species = "homo+sapiens") } \keyword{datasets} ArrayExpress/vignettes/0000755000175200017520000000000014710267740016244 5ustar00biocbuildbiocbuildArrayExpress/vignettes/ArrayExpress.Rnw0000644000175200017520000003355414710217417021372 0ustar00biocbuildbiocbuild%\VignetteIndexEntry{ArrayExpress: Import and convert ArrayExpress data sets into R object} %\VignetteDepends{Biobase,oligo,limma} %\VignetteKeywords{ImportData} %\VignettePackage{ArrayExpress} \documentclass[a4paper]{article} \usepackage{times} \usepackage{a4wide} \usepackage{verbatim} \newcommand{\Robject}[1]{\texttt{#1}} \newcommand{\Rpackage}[1]{\textit{#1}} \newcommand{\Rclass}[1]{\textit{#1}} \newcommand{\Rfunction}[1]{{\small\texttt{#1}}} \clearpage \SweaveOpts{keep.source=TRUE,eps=FALSE,include=FALSE,width=4,height=4.5} \begin{document} \SweaveOpts{concordance=TRUE} \title{ Building R objects from ArrayExpress datasets } \author{Audrey Kauffmann} \maketitle \section{ArrayExpress Collection in Biostudies database} ArrayExpress is a public Collection of datasets for transcriptomics and related data, which is aimed at storing MIAME-compliant data in accordance with MGED recommendations. The Gene Expression Atlas stores gene-condition summary expression profiles from a curated subset of experiments in the repository. Currently, around 76,635 studies are represented in the ArrayExpress Collection. Please visit https://www.ebi.ac.uk/biostudies/arrayexpress for more information on the collection. \section{MAGE-TAB format} In the repository, for each dataset, ArrayExpress stores a MAGE-TAB document with standardized format. A MAGE-TAB document contains five different types of files Investigation Description Format (IDF), Array Design Format (ADF), Sample and Data Relationship Format (SDRF), the raw data files and the processed data files. The tab-delimited IDF file contains top level information about the experiment including title, description, submitter contact details and protocols. The tab-delimited ADF file describes the design of an array, e.g., what sequence is located at each position on an array and what the annotation of this sequence is. The tab-delimited SDRF file contains the sample annotation and the relationship between arrays as provided by the submitter. The raw zip file contains the raw files (like the CEL files for Affymetrix chips or the GPR files from the GenePix scanner for instance), and the processed zip file contains all processed data in one generic tab delimited text format. \section{Querying ArrayExpress Collection} It is possible to query the ArrayExpress collection, using the \Rfunction{queryAE} function. Two arguments are available, 'keywords' and 'species'. You can use both of them simultaneously or each of them independently, according to your needs. If you want to use several words, they need to be separated by a '+' without any space. Here is an example where the object \Robject{sets} contains the identifiers of all the datasets for which the word 'pneumonia' was found in the description and for which the Homo sapiens is the studied species. You need to be connected to Internet to have access to the database. <>= library("ArrayExpress") sets = queryAE(keywords = "pneumonia", species = "homo+sapiens") @ % In March 2023, this query retrieved 87 identifiers. The output is a dataframe with the identifiers and 9 columns giving the information about these datasets, such as the number of files, the release date on the database, the title, the author and content. For a more extended querying mode, the Biostudies/ArrayExpress website offers an advanced query interface with detailed results. \section{Import an ArrayExpress dataset into R} \subsection{Call of the function ArrayExpress} Once you know which identifier you wish to retrieve, the function \Rfunction{ArrayExpress} can be called, using the following arguments: \begin{itemize} \item \emph{accession}: an ArrayExpress experiment identifier for which the raw data are available. \item \emph{path}: the name of the directory in which the files downloaded from the ArrayExpress repository will be extracted. The default is the current directory. \item \emph{save}: if TRUE, the files downloaded from the database will not be deleted from 'path' after executing the function. \item \emph{dataCols}: by default, the columns are automatically selected according to the scanner type. If the scanner is unknown or if the user wants to use different columns than the default, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files. \end{itemize} You still need to be connected to Internet to have access to the database. \subsection{Examples and ouput format} \paragraph{Simple example} The output object is an \Rclass{AffyBatch} if the ArrayExpress identifier corresponds to an Affymetrix experiment, it is an \Rclass{ExpressionSet} if the identifier corresponds to a one colour non Affymetrix experiment and it is a \Rclass{NChannelSet} if the identifier corresponds to a two colours experiment. <>= rawset = ArrayExpress("E-MEXP-21") @ % In this example, \emph{'E-MEXP-21'} being an Affymetrix experiment, 'rawset' is an \Rclass{AffyBatch}. The expression values of 'rawset' are the content from the CEL files. The \Rclass{phenoData} of 'rawset' contains the whole sample annotation file content from the MAGE-TAB sdrf file. The \Rclass{featureData} of 'rawset' contains the whole feature annotation file content from the MAGE-TAB adf file. The \Rclass{experimentData} of 'rawset' contains the experiment annotation file content from the MAGE-TAB idf file. \paragraph{Example when the column names are needed} In the case of non Affymetrix experiments, \Rfunction{ArrayExpress} decides automatically, based on known quantitation types, which column from the scan files are to be used to fill the \Rclass{exprs}. However, in some cases the scanner software is not recognized or unknown and this decision cannot be made automatically. The argument 'rawcol' is then needed. Here is an example. <>= eset = try(ArrayExpress("E-MEXP-1870")) @ % Here, the object cannot be built because the columns are not recognized. The error message also gives a list of possible column names. We can then call the function again, feeding the argument 'dataCols' with the appropriate column names. <>= eset = ArrayExpress("E-MEXP-1870", dataCols=list(R="ScanArray Express:F650 Mean", G="ScanArray Express:F550 Mean", Rb="ScanArray Express:B650 Mean", Gb="ScanArray Express:B550 Mean")) @ Then \Robject{eset} is created. However, there is still a warning, the \Rclass{phenoData} cannot be built. This means that the object is correctly created but the sample annotation has not been attached to it. It is still possible to manually correct the files and try to build the object. To do so, the functions \Rfunction{getAE} and \Rfunction{ae2bioc}, used by the \Rfunction{ArrayExpress} function, can be called separately. \section{Download an ArrayExpress dataset on your local machine} It is possible to only download the data, by calling the function \Rfunction{getAE}. The arguments 'input' and 'path' are the same than for the \Rfunction{ArrayExpress} function. The argument 'type' determines if you retrieve the MAGE-TAB files with the raw data only (by setting 'type' to 'raw'), the MAGE-TAB files with the processed data only (by setting 'type' to 'processed') or if you retrieve all the MAGE-TAB files, both raw and processed (by setting 'type' to 'full'). Here, you also need Internet connection to access the database. <>= mexp1422 = getAE("E-MEXP-21", type = "full") @ Here, the output is a list of all the files that have been downloaded and extracted in the directory 'path'. \section{Build an R object from local raw MAGE-TAB} If you have your own raw MAGE-TAB data or if you want to build an R object from existing MAGE-TAB data that are stored locally on your computer. The function \Rfunction{ae2bioc} can convert them into an R object. The arguments for the \Rfunction{ae2bioc} are: \begin{itemize} \item \emph{mageFiles} A list as given from \Rfunction{getAE} function. Containing the elements 'rawFiles' (the expression files to use to create the object), 'sdrf' (name of the sdrf file), 'idf' (name of the idf file), 'adf' (name of the adf file) and 'path' (the name of the directory containing these files). \item \emph{dataCols} by default, the columns are automatically selected according to the scanner type. If the scanner is unknown, the argument 'dataCols' can be set. For two colour arrays it must be a list with the fields 'R', 'G', 'Rb' and 'Gb' giving the column names to be used for red and green foreground and background. For one colour arrays, it must be a character string with the column name to be used. These column names must correspond to existing column names of the expression files. \end{itemize} As an example, we can use the files that we have downloaded in the previous example. <>= rawset= ae2bioc(mageFiles = mexp1422) @ % The object \Robject{rawset} is an \Rclass{AffyBatch}. \section{Build an R object from local processed MAGE-TAB} Processed data in the database are less uniform as processing methods vary a lot. To import a processed dataset from ArrayExpress, three steps are required: (i) download the dataset using \Rfunction{getAE}, (ii) identify which column is of interest thanks to \Rfunction{getcolproc}, (iii) create the R object with \Rfunction{procset}. \subsection{Identification of the columns to extract} Once the data are downloaded, we need to know the different column names available in the processed file to be able to choose a relevant one to extract. The function \Rfunction{getcolproc} needs, as an input, a list containing two slots: \begin{itemize} \item \emph{procfile} the name of the processed expression file. \item \emph{path} the name of the directory containing the 'procfile'. \end{itemize} This kind of list is given as an output from the function \Rfunction{getAE}. <>= cn = getcolproc(mexp1422) show(cn) @ \Robject{cn} is a character vector with the available column names in the 'procfile'. \subsection{Creation of the object} We can now create the \Rclass{ExpressionSet} using \Rfunction{procset}. This function has two arguments: \begin{itemize} \item \emph{files} a list as given by \Rfunction{getAE} containing the names of the processed, sdrf, idf, adf files and the path. \item \emph{procol} the name of the column chosen after using \Rfunction{getcolproc}. \end{itemize} <>= proset = procset(mexp1422, cn[2]) @ \Robject{proset} is an \Rclass{ExpressionSet} containing the processed log(ratio) of the dataset E-MEXP-21. %Turning off evaluation of this section for now (Oct 26, 2011) %until ArrayExpress server failure is fixed \section{Example of a standard microarray analysis using data from ArrayExpress} In this section, we are briefly describing an analysis from the data import to the identification of differentially expressed genes, of data publicly available on ArrayExpress. The first step consists of importing a dataset from ArrayExpress. We chose E-MEXP-1416. This dataset studies the transcription profiling of melanized dopamine neurons isolated from male and female patients with Parkinson disease to investigate gender differences. <>= AEset = ArrayExpress("E-MEXP-1416") @ As AEset is an Affymetrix experiment, we can use RMA normalisation to process the raw data, please read the rma function help. <>= library("affy") AEsetnorm = rma(AEset) @ To check the normalisation efficiency, we can run a quality assessment. For details on the arguments used, please read the arrayQualityMetrics vignette. Please note that, at the time of its release (Oct 2010), Bioconductor 2.7 didn't include a 64-bit Windows binary version of the \Rpackage{arrayQualityMetrics} package (but this might change in the future). <>= fac = grep("Factor.Value",colnames(pData(AEsetnorm)), value=T) @ %Turning off evaluation for now (Oct 15, 2010) until someone has the time to %troubleshoot the following error on Windows: % Error: processing vignette 'ArrayExpress.Rnw' failed with diagnostics: % chunk 11 (label=qanorm) % Error in aqm.report.qm(p, obj[[i]], i, names(obj)[i]) : % could not find function "svg" <>= if (suppressWarnings(require("arrayQualityMetrics", quietly=TRUE))) { qanorm = arrayQualityMetrics(AEsetnorm, outdir = "QAnorm", intgroup = fac) } @ Now that we have ensured that the data are well processed, we can search for differentially expressed genes using the package \Rpackage{limma}. To understand the details of each steps, please see the limma user guide. <>= library("limma") facs = pData(AEsetnorm)[,fac] facs[facs[,2]=="female",2]="F" facs[facs[,2]=="male",2]="M" facs[facs[,1]=="Parkinson disease",1]="parkinson" facs = paste(facs[,1],facs[,2], sep=".") f = factor(facs) design = model.matrix(~0+f) colnames(design) = levels(f) fit = lmFit(AEsetnorm, design) cont.matrix = makeContrasts(normal.FvsM = normal.F-normal.M, parkinson.FvsM = parkinson.F-parkinson.M, Diff=(parkinson.F-parkinson.M)-(normal.F-normal.M), levels=design) fit2 = contrasts.fit(fit, cont.matrix) fit2 = eBayes(fit2) res = topTable(fit2, coef = "parkinson.FvsM", adjust = "BH") @ Here we end up with a list of genes that are differentially expressed between the female and the male patients having Parkinson's disease, which was the topic of the paper, but one can perform other comparisons with the same data. \end{document} ArrayExpress/vignettes/QT_list.txt0000644000175200017520000042117414710217417020371 0ustar00biocbuildbiocbuild# # $Id$ # # ----------------------------------------------------------------------------------------------------- # # This first section includes a set of "custom" QTs # which are commonly used but not defined elsewhere. # # Name DataType Scale MAGE Subclass isBackground ConfidenceIndicator target QT Channel Description >>>Tab2MAGE_FGEM[ebi.ac.uk] RMA float linear_scale DerivedSignal Normalized float linear_scale DerivedSignal Ratio float linear_scale Ratio # ----------------------------------------------------------------------------------------------------- # # Below is the curated list of QTs as prepared and maintained by the ArrayExpress curators. # This will be updated periodically with new releases of this package. # # NOTE TO SELF - this part of the file will be automatically generated by Datafiles::write_QTs. # Attempt no changes here unless you are sure they won't be overwritten. # # Name DataType Scale MAGE Subclass isBackground ConfidenceIndicator target QT Channel Description >>>AIDA[Raytest] Area [pixel] float linear_scale SpecializedQuantitationType Spot area in pixels. Bkg SD Cy3 float linear_scale Error 1 Bkg [QL] Cy3 Cy3 Standard deviation of background channel Cy3. Bkg SD Cy5 float linear_scale Error 1 Bkg [QL] Cy5 Cy5 Standard deviation of background channel Cy5. Bkg [QL] Cy3 float linear_scale SpecializedQuantitationType 1 Cy3 Standard deviation of background channel Cy3. Bkg [QL] Cy5 float linear_scale SpecializedQuantitationType 1 Cy5 Standard deviation of background channel Cy5. Homogeneity [%] Cy3 float linear_scale SpecializedQuantitationType Cy3 Percentage of dot deviation from homogenous intensity distribution channel Cy3. Homogeneity [%] Cy5 float linear_scale SpecializedQuantitationType Cy5 Percentage of dot deviation from homogenous intensity distribution channel Cy5. Integral SD Cy3 float linear_scale Error Integral [QL] Cy3 Cy3 Standard deviation of integrated raw intensity channel Cy3. Integral SD Cy5 float linear_scale Error Integral [QL] Cy5 Cy5 Standard deviation of integrated raw intensity channel Cy5. Integral [QL] Cy3 float linear_scale MeasuredSignal Cy3 Integrated raw intensity of spot Channel Cy3. Integral [QL] Cy5 float linear_scale MeasuredSignal Cy5 Integrated raw intensity of spot Channel Cy5. Mean [QL] Cy3 float linear_scale MeasuredSignal Cy3 Mean (Integral/Area) Channel Cy3. Mean [QL] Cy5 float linear_scale MeasuredSignal Cy5 Mean (Integral/Area) Channel Cy5. Median [QL] Cy3 float linear_scale SpecializedQuantitationType Cy3 Median of the raw pixel intensity of spot Channel Cy3. Median [QL] Cy5 float linear_scale SpecializedQuantitationType Cy5 Median of the raw pixel intensity of spot Channel Cy5. Quality Cy3 boolean unscaled SpecializedQuantitationType Cy3 Quality flag Channel Cy3. Quality Cy5 boolean unscaled SpecializedQuantitationType Cy5 Quality flag Channel Cy5. Saturated [pixel] Cy3 float linear_scale SpecializedQuantitationType Cy3 Measure of saturation pixels channel Cy3. Saturated [pixel] Cy5 float linear_scale SpecializedQuantitationType Cy5 Measure of saturation pixels channel Cy5. >>>Affymetrix[Affymetrix] Probe Set Name string_datatype unscaled SpecializedQuantitationType The name of the probe set. Detection string_datatype unscaled PresentAbsent A measurement indicating if the transcript was detected (Present), not detected (Absent) or marginally detected (Marginal). Can be one of "Absent", "Marginal", "Present" or "No Call". Detection p-value float linear_scale PValue Detection The p-value calculated for a given detection call. Signal float linear_scale DerivedSignal A measure of the relative abundance of a transcript. Number of Pairs integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set. Number of Pairs Used integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set used in the Detection call. CELIntensity float linear_scale MeasuredSignal The intensity value of the probe. Represents the 75th percentile among the DAT file intensity values of the pixels in the feature. CELIntensityStdev float linear_scale SpecializedQuantitationType The standard deviation of the intensity of the probe. CELMask boolean linear_scale SpecializedQuantitationType A flag indicating that the probe was masked by the user. CELOutlier boolean linear_scale SpecializedQuantitationType A flag indicating that the software called this probe an outlier. CELPixels integer linear_scale SpecializedQuantitationType The number of pixels used to calculate the intensity. CELX integer linear_scale SpecializedQuantitationType The x coordinate of the probe. CELY integer linear_scale SpecializedQuantitationType The y coordinate of the probe. CHPAbsCall string_datatype unscaled PresentAbsent The call in an absolute analysis that indicates if the transcript was present (P), absent (A), or marginal (M). CHPAllele string_datatype unscaled SpecializedQuantitationType The allele call in a SNP analysis: AA, BB, AB, AB_A, AB_B, or "No call". CHPAllelePvalue float linear_scale PValue CHPAllele The p-value calculated for a given allele call. CHPAllelePvalueAA float linear_scale PValue CHPAllele The p-value calculated for a given AA allele call. CHPAllelePvalueAB float linear_scale PValue CHPAllele The p-value calculated for a given AB allele call. CHPAllelePvalueBB float linear_scale PValue CHPAllele The p-value calculated for a given BB allele call. CHPAllelePvalueNoCall float linear_scale PValue CHPAllele The p-value calculated for a given NoCall allele call. CHPAlleleRAS1 float linear_scale SpecializedQuantitationType CHPAlleleRAS2 float linear_scale SpecializedQuantitationType CHPAvgDiff float linear_scale DerivedSignal Average intensity difference CHPAvgDiffChange float linear_scale SpecializedQuantitationType The change in average difference CHPBaselineAbsent float linear_scale SpecializedQuantitationType Flag indicating if the baseline call was absent. CHPChange string_datatype unscaled PresentAbsent A call indicating an Increase (I), Marginal Increase (MI), No Change (NC), Decrease (D), or Marginal Decrease (MD) in transcript level between a baseline array and an experiment array. May also have the value "No Call". CHPChangePvalue float linear_scale PValue CHPChange Measures the probability that the expression levels of a probe set in two different arrays are the same or not. When the p-value is close to 0.5 they are likely to be the same. When the p-value is close to 0 the expression level in the experiment array is CHPCommonPairs integer linear_scale SpecializedQuantitationType The number of common probe pairs on two arrays (experiment versus baseline) after saturation across the probe set is determined. CHPDPos-DNegRatio float linear_scale Ratio The ratio of the change in positive to the change in negative pairs CHPDec integer linear_scale SpecializedQuantitationType The number of decreasing pairs CHPDecRatio float linear_scale Ratio The ratio of decreasing pairs to the total number of pairs. CHPDetection string_datatype unscaled PresentAbsent A measurement indicating if the transcript was detected (Present), not detected (Absent) or marginally detected (Marginal). Can be one of "A", "M", "P" or "No Call". CHPDetectionPvalue float linear_scale PValue CHPDetection See Detection p-value CHPDiffCall string_datatype unscaled PresentAbsent The comparison change call CHPFoldChange float linear_scale Ratio The fold change CHPInc integer linear_scale SpecializedQuantitationType The number of increasing pairs. CHPIncDecRatio float linear_scale Ratio The ratio of increase to decrease pairs. CHPIncRatio float linear_scale Ratio The ratio of increasing pairs to the total number of pairs CHPLogAvg float log_base_10 DerivedSignal Average log ratio CHPLogAvgRatioChange float log_base_10 SpecializedQuantitationType The change in log average ratio CHPNegChange integer linear_scale SpecializedQuantitationType The change in negative pairs CHPNegative integer linear_scale SpecializedQuantitationType Number of negative probe pairs CHPPairs integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set. CHPPairsInAvg integer linear_scale SpecializedQuantitationType Number of probe pairs used in computing the average intensity difference CHPPairsUsed integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set used in the Detection call. CHPPosChange float linear_scale SpecializedQuantitationType The change in positive pairs. CHPPosFraction float linear_scale Ratio The fraction of positive pairs CHPPosNegRatio float linear_scale Ratio The ratio of the positive to the negative pairs CHPPositive integer linear_scale SpecializedQuantitationType Number of positive probe pairs CHPSignal float linear_scale DerivedSignal A measure of the relative abundance of a transcript. CHPSignalLogRatio float log_base_2 Ratio The change in expression level for a transcript between a baseline and an experiment array. This change is expressed as the Log2 ratio. CHPSignalLogRatioHigh float log_base_2 Ratio The upper limit of the Signal Log Ratio within a 95% confidence interval. CHPSignalLogRatioLow float log_base_2 Ratio The lower limit of the Signal Log Ratio within a 95% confidence interval. CHPSortScore float linear_scale SpecializedQuantitationType The sort score. ProbeSetName string_datatype unscaled SpecializedQuantitationType The name of the probe set. Stat Pairs integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set. Stat Pairs Used integer linear_scale SpecializedQuantitationType The number of probe pairs in the probe set used in the Detection call. >>>AppliedBiosystems[Celera] Assay_Normalized_Signal float DerivedSignal CV float SpecializedQuantitationType Flags integer unscaled SpecializedQuantitationType SDEV float linear_scale MeasuredSignal S_N float SpecializedQuantitationType Signal float linear_scale MeasuredSignal >>>ArrayGauge[FUJIFILM] Dens.(Total PSL) float linear_scale MeasuredSignal 0 Total phospho stimulated luminescence. Norm Data float log_base_2 DerivedSignal Overshining Status boolean unscaled SpecializedQuantitationType During quantification the analysis spots that display false positive intensity due to non-specific signal from neighboring clones are excluded. Total PSL float linear_scale SpecializedQuantitationType 0 Total phospho stimulated luminescence. >>>ArrayVision[Imaging Research] % At Ceiling - Bkgd_Cy3 float linear_scale SpecializedQuantitationType Cy3 Clipped pixels - A quality control measure that reports the proportion of pixels at the uppermost limit (ceiling) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. V % At Ceiling - Bkgd_Cy5 float linear_scale SpecializedQuantitationType Cy5 Clipped pixels - A quality control measure that reports the proportion of pixels at the uppermost limit (ceiling) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. V % At Ceiling_Cy3 float linear_scale SpecializedQuantitationType Cy3 Clipped pixels - A quality control measure that reports the proportion of pixels at the uppermost limit (ceiling) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. % At Ceiling_Cy5 float linear_scale SpecializedQuantitationType Cy5 Clipped pixels - A quality control measure that reports the proportion of pixels at the uppermost limit (ceiling) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. % At Floor - Bkgd_Cy3 float linear_scale SpecializedQuantitationType Cy3 Clipped pixels - A quality control measure that reports the proportion of pixels at the lowermost limit (floor) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. Val % At Floor - Bkgd_Cy5 float linear_scale SpecializedQuantitationType Cy5 Clipped pixels - A quality control measure that reports the proportion of pixels at the lowermost limit (floor) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. Val % At Floor_Cy3 float linear_scale SpecializedQuantitationType Cy3 Clipped pixels - A quality control measure that reports the proportion of pixels at the lowermost limit (floor) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. % At Floor_Cy5 float linear_scale SpecializedQuantitationType Cy5 Clipped pixels - A quality control measure that reports the proportion of pixels at the lowermost limit (floor) of the density scale. The presence of clipped pixels suggest a problem during image formation, and can affect the validity of density data. % Replaced (AR VOL)_Cy3 float linear_scale SpecializedQuantitationType Cy3 Percentage of pixels replaced with estimated values in the calculation of AR volume. % Replaced (AR VOL)_Cy5 float linear_scale SpecializedQuantitationType Cy5 Percentage of pixels replaced with estimated values in the calculation of AR volume. AR VOL - RFU_Cy3 float linear_scale SpecializedQuantitationType Cy3 Artifact-removed density value for each spot, multiplied by its area. AR VOL - RFU_Cy5 float linear_scale SpecializedQuantitationType Cy5 Artifact-removed density value for each spot, multiplied by its area. Area - 5m2_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Area of the spot, background and/or reference region. Area - 5m2_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Area of the spot, background and/or reference region. Area - mm2_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Area of the spot, background and/or reference region. Area - mm2_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Area of the spot, background and/or reference region. Area - µm2_Cy3 linear_scale SpecializedQuantitationType Cy3 Area of the spot, background and/or reference region. Area - µm2_Cy5 linear_scale SpecializedQuantitationType Cy5 Area of the spot, background and/or reference region. Bkgd_Cy3 float linear_scale MeasuredSignal 1 Cy3 Background density or volume; background volume value is adjusted to the size of spot, where applicable. Bkgd_Cy5 float linear_scale MeasuredSignal 1 Cy5 Background density or volume; background volume value is adjusted to the size of spot, where applicable. Flag_Cy3 boolean linear_scale PresentAbsent Cy3 Select this measure to manually flag data in the data table. The value of this measure can be 0 or 1. Flag_Cy5 boolean linear_scale PresentAbsent Cy5 Select this measure to manually flag data in the data table. The value of this measure can be 0 or 1. MAD - RFU / 5m2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. MAD - RFU / 5m2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. MAD - RFU / mm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. MAD - RFU / mm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. MAD - RFU / µm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. MAD - RFU / µm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median of absolute deviation - median of the absolute values of deviations from the median density (i.e., the absolute values of pixel densities median density); it is a measure of the variation around the median density value of the spot. Median Dens - Levels_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median Density value of the spot Levels. ['Gray levels' (Levels) are the raw pixel intensity values upon which all other density/intensity scales are based.] Median Dens - Levels_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median Density value of the spot Levels. ['Gray levels' (Levels) are the raw pixel intensity values upon which all other density/intensity scales are based.] Median Dens - RFU / µm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median Dens - RFU / µm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 S/N_Cy3 float linear_scale Ratio 1 Cy3 Signal-to-noise ratio - spot density minus background density, divided by the SD of the background density. S/N_Cy5 float linear_scale Ratio 1 Cy5 Signal-to-noise ratio - spot density minus background density, divided by the SD of the background density. SD - Levels_Cy3 float linear_scale SpecializedQuantitationType Cy3 Standard deviation of the pixel Levels values. SD - Levels_Cy5 float linear_scale SpecializedQuantitationType Cy5 Standard deviation of the pixel Levels values. SD - RFU / 5m2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Standard deviation of the pixel density values. SD - RFU / 5m2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Standard deviation of the pixel density values. SD - RFU / mm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Standard deviation of the pixel density values. SD - RFU / mm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Standard deviation of the pixel density values. SD - RFU / µm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 Standard deviation of the pixel density values. SD - RFU / µm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 Standard deviation of the pixel density values. SPOTLABEL Spot labels integer linear_scale SpecializedQuantitationType VOL - Levels x mm2_Cy3 float linear_scale SpecializedQuantitationType Cy3 VOL - Levels x mm2_Cy5 float linear_scale SpecializedQuantitationType Cy5 sARMDens_Cy3 float linear_scale MeasuredSignal Cy3 Background corrected ARM Density value. ARM Density value of the spot, minus the background Density value. sARMDens_Cy5 float linear_scale MeasuredSignal Cy5 Background corrected ARM Density value. ARM Density value of the spot, minus the background Density value. sARVOL_Cy3 float linear_scale SpecializedQuantitationType Cy3 Subtracted AR volume value (AR volume value of the spot minus the background volume value); the background value is adjusted to the size of the spot when applicable. sARVOL_Cy5 float linear_scale SpecializedQuantitationType Cy5 Subtracted AR volume value (AR volume value of the spot minus the background volume value); the background value is adjusted to the size of the spot when applicable. sMedianDens_Cy3 float linear_scale SpecializedQuantitationType Cy3 Background corrected Median Density value. Median Density value of the spot, minus the background Density value. sMedianDens_Cy5 float linear_scale SpecializedQuantitationType Cy5 Background corrected Median Density value. Median Density value of the spot, minus the background Density value. sVOL_Cy3 float linear_scale SpecializedQuantitationType Cy3 Background corrected Volume value. Volume value of the spot, minus the background Volume value. The background value is adjusted to the size of the spot when applicable. sVOL = DxA_data - ((DxA_bkgd * Area_data)/Area_bkgd)). sVOL_Cy5 float linear_scale SpecializedQuantitationType Cy5 Background corrected Volume value. Volume value of the spot, minus the background Volume value. The background value is adjusted to the size of the spot when applicable. sVOL = DxA_data - ((DxA_bkgd * Area_data)/Area_bkgd)). >>>BZScan[TAGC ERM206] Diameter float linear_scale SpecializedQuantitationType Automatically computed spot diameter. Fit_correction float linear_scale SpecializedQuantitationType 1 Background level by unit surface. Overshining_correction float linear_scale SpecializedQuantitationType Correction for overshining by unit radius. Q(fit,const) float linear_scale SpecializedQuantitationType Spot intensity based on user-provided diameter and theoretical fit to the data. Q(fit,var) float linear_scale SpecializedQuantitationType Spot intensity based on computed diameter and and theoretical fit to the data. Q(image,const) float linear_scale MeasuredSignal Spot intensity based on user-provided diameter and measured data. Q(image,var) float linear_scale SpecializedQuantitationType Spot intensity based on computed diameter and measured data. QM float linear_scale PValue Q(image,const) Quality metric: distance between measured data and theoretical fit. SpotQuality boolean unscaled PresentAbsent Present/Absent (automatic guess). >>>BeadStudio[Illumina] MIN_Signal float linear_scale SpecializedQuantitationType Minimum intensity of the Bead Type/target in the group. AVG_Signal float linear_scale MeasuredSignal Average intensity of the Bead Type/target in the group. MAX_Signal float linear_scale SpecializedQuantitationType Maximum intensity of the Bead Type/target in the group. NARRAYS integer linear_scale SpecializedQuantitationType Number of samples in the group. ARRAY_STDEV SpecializedQuantitationType Standard deviation associated with sample-to-sample variability within the group (undefined when the group contains a single sample). BEAD_STDEV float linear_scale Error AVG_Signal Average standard deviation associated with bead-to-bead variability for the samples in the group. Avg_NBEADS integer linear_scale SpecializedQuantitationType Average number of beads per bead type representing probes for the gene. Detection float SpecializedQuantitationType 1-p-value computed from the background model characterizing the chance that the target sequence signal was distinguishable from the negative controls. Detection Pval float SpecializedQuantitationType DiffScore float SpecializedQuantitationType Statistical confidence that the gene's expression has changed with respect to a reference group. Concordance float SpecializedQuantitationType Number of probes showing upregulated signal compared to the number of probes showing downregulated signal. >>>BlueFuse[BlueGnome] AMPCH1 float linear_scale MeasuredSignal Cy3 Total signal in Cy3 channel. AMPCH2 float linear_scale MeasuredSignal Cy5 Total signal in Cy5 channel. AUTO EXCL string_datatype unscaled SpecializedQuantitationType Indication of whether a spot has been automatically excluded. Yes - it has been excluded, no - it has not been excluded. BLOCK integer linear_scale SpecializedQuantitationType The sequential number of the block on the array. CIRCULARITY float linear_scale SpecializedQuantitationType Estimate of the circularity of the spot, between 0 and 1. The nearer to 1, the more circular the spot. CONFIDENCE float linear_scale SpecializedQuantitationType The Confidence Estimate in the calculated ratio, between 0 and 1. FLAG string_datatype unscaled SpecializedQuantitationType The Confidence Flag calculated from the Confidence Estimate. GRID OFFSET float linear_scale SpecializedQuantitationType Distance in pixels of the spot from the ideal grid position. ID string_datatype unscaled SpecializedQuantitationType The ID of the spot, taken from ID field in GAL file. LOG10PRODUCT float log_base_10 SpecializedQuantitationType Log base 10 of the product of total signal in Cy3 channel multiplied by total signal in Cy5 channel. LOG10RATIO CH1/CH2 float log_base_10 SpecializedQuantitationType Log base 10 of the ratio of total signal in Cy3 channel divided by total signal in Cy5 channel. LOG10RATIO CH2/CH1 float log_base_10 SpecializedQuantitationType Log base 10 of the ratio of total signal in Cy5 channel divided by total signal in Cy3 channel. LOG10SUM float log_base_10 SpecializedQuantitationType Log base 10 of the sum of total signal in Cy3 channel plus total signal in Cy5 channel. LOG2PRODUCT float log_base_2 SpecializedQuantitationType Log base 2 of the product of total signal in Cy3 channel multiplied by total signal in Cy5 channel. LOG2RATIO CH1/CH2 float log_base_2 Ratio Log base 2 of the ratio of total signal in Cy3 channel divided by total signal in Cy5 channel. LOG2RATIO CH2/CH1 float log_base_2 SpecializedQuantitationType Log base 2 of the ratio of total signal in Cy5 channel divided by total signal in Cy3 channel. LOG2SUM float log_base_2 SpecializedQuantitationType Log base 2 of the sum of total signal in Cy3 channel plus total signal in Cy5 channel. MAN EXCL string_datatype unscaled SpecializedQuantitationType Indication of whether a spot has been manually excluded. Yes - it has been manually excluded, no - it has not been manually excluded. NAME string_datatype unscaled SpecializedQuantitationType The name of the spot, taken from Name field in GAL file. P ON CH1 float linear_scale SpecializedQuantitationType Cy3 Estimate of whether there is a biological signal in Cy3 channel, between 0 and 1. P ON CH2 float linear_scale SpecializedQuantitationType Cy5 Estimate of whether there is a biological signal in Cy5 channel, between 0 and 1. PELCOL integer linear_scale SpecializedQuantitationType Calculated horizontal position of the spot on image in pixels. 1 is the left column of pixels. PELROW integer linear_scale SpecializedQuantitationType Calculated vertical position of the spot on image in pixels. 1 is the top row of pixels. PRODUCT float linear_scale SpecializedQuantitationType Product of total signal in Cy3 channel multiplied by total signal in Cy5 channel. QUALITY SpecializedQuantitationType RADIUS float linear_scale SpecializedQuantitationType Estimate of the radius of the spot in pixels. RATIO CH1/CH2 float linear_scale SpecializedQuantitationType Ratio of total signal in Cy3 channel divided by total signal channel in Cy5 channel. RATIO CH2/CH1 float linear_scale SpecializedQuantitationType Ratio of total signal in Cy5 channel divided by total signal channel in Cy3 channel. SPOTNUM integer linear_scale SpecializedQuantitationType The sequential number of the spot on the array. SUM float linear_scale SpecializedQuantitationType Sum of total signal in Cy3 channel plus total signal in Cy5 channel. UNIFORMITY float linear_scale SpecializedQuantitationType Estimate of the uniformity of the spot, between 0 and 1. The nearer to 1 the more coin-shaped the spot, i.e. vertical sides and horizontal surface. >>>ChipSkipper[EMBL] Comment string_datatype unscaled SpecializedQuantitationType Additional description of spot. Comp_Channel Cy3 float linear_scale DerivedSignal Cy3 Normalised intensity of Cy3_Vol-BG. Comp_Channel Cy5 float linear_scale DerivedSignal Cy5 Normalised intensity of Cy5_Vol-BG. Comp_Directional_Ratio-Cy5/Cy3 float linear_scale SpecializedQuantitationType Compensated directional ratio: if Comp_Ratio > 1 then Directional = Ratio, if Ratio < 1 then Directional = -1/Ratio. Comp_Log2_Ratio float log_base_2 SpecializedQuantitationType Compensated Log2 ratio: log2 (Comp_Ratio-Cy5/Cy3). Comp_Ratio-Cy5/Cy3 float linear_scale Ratio Compensated ratio ( = Comp_Channel Cy5 / Comp_Channel Cy3 ). Cy3_Av-Vol/pixel float linear_scale SpecializedQuantitationType Cy3 Average intensity per pixel in color channel Cy3. Cy3_BG-Arith float linear_scale SpecializedQuantitationType 1 Cy3 Arithmetic average for local background in color channel Cy3. Cy3_BG-Geom float linear_scale SpecializedQuantitationType 1 Cy3 Geometric average for local background in color channel Cy3. Cy3_BG-Median float linear_scale SpecializedQuantitationType 1 Cy3 Median average for local background in color channel Cy3. Cy3_BG_Tot float linear_scale MeasuredSignal 1 Cy3 Total integrated background in color channel Cy3. Cy3_SNR1 float linear_scale Error Cy3_Vol-BG Cy3 Sdev of local background average in color channel Cy3. Cy3_SNR1_Score float linear_scale Error Cy3_Vol-BG Cy3 Quality value based on intensity and background for color channel Cy3 (range: 0 = bad....1 = good). Cy3_Sat-pixel float linear_scale SpecializedQuantitationType Cy3 Number of saturated pixel in color channel Cy3. Cy3_Spot-area float linear_scale SpecializedQuantitationType Cy3 Area of spot in colour channel Cy3 in pixels. Cy3_Vol-BG float linear_scale SpecializedQuantitationType 1 Cy3 Background reduced intensity of colour channel Cy3. Cy3_Volume integer linear_scale MeasuredSignal Cy3 Total integrated signal intensity in color channel Cy3. Cy5_Av-Vol/pixel float linear_scale SpecializedQuantitationType Cy5 Average intensity per pixel in color channel Cy5. Cy5_BG-Arith float linear_scale SpecializedQuantitationType 1 Cy5 Arithmetic average for local background in color channel Cy5. Cy5_BG-Geom float linear_scale SpecializedQuantitationType 1 Cy5 Geometric average for local background in color channel Cy5. Cy5_BG-Median float linear_scale SpecializedQuantitationType 1 Cy5 Median average for local background in color channel Cy5. Cy5_BG_Tot float linear_scale MeasuredSignal 1 Cy5 Total integrated background in color channel Cy5. Cy5_SNR1 float linear_scale Error Cy5_Vol-BG Cy5 Sdev of local background average in color channel Cy5. Cy5_SNR1_Score float linear_scale Error Cy5_Vol-BG Cy5 Quality value based on intensity and background for color channel Cy5 (range: 0 = bad....1 = good). Cy5_Sat-pixel float linear_scale SpecializedQuantitationType Cy5 Number of saturated pixel in color channel Cy5. Cy5_Spot-area float linear_scale SpecializedQuantitationType Cy5 Area of spot in colour channel Cy5 in pixels. Cy5_Vol-BG float linear_scale SpecializedQuantitationType 1 Cy5 Background reduced intensity of colour channel Cy5. Cy5_Volume integer linear_scale MeasuredSignal Cy5 Total integrated signal intensity in color channel Cy5. Directional_Ratio-Cy5/Cy3 float linear_scale SpecializedQuantitationType Directional ratio: if Ratio > 1 then Directional = Ratio, if Ratio < 1 then Directional = -1/Ratio. Flags string_datatype unscaled SpecializedQuantitationType Quality Flags: SNR1,SNR2 = low signal quality in color channel Cy5, Cy3; GS = low geometric score; MB = manually flagged bad. GS_Flags string_datatype linear_scale SpecializedQuantitationType P = pass or M = marginal flag. Group name string_datatype unscaled SpecializedQuantitationType Group name for this spot. Image-x-Pos integer linear_scale SpecializedQuantitationType Image coordinate of spot. Image-y-Pos integer linear_scale SpecializedQuantitationType Image coordinate of spot. Line_Counter integer unscaled SpecializedQuantitationType Line counter Log2_Ratio-Cy5/Cy3 float log_base_2 Ratio Log2 ratio: log2 (Ratio-Cy5/Cy3) Median of ratios float linear_scale SpecializedQuantitationType Median of ratios (Cy5/Cy3) from all pixel in this spot. Median of ratios % SDev float linear_scale SpecializedQuantitationType Standard deviation of Median of ratios in percent. Ratio of medians float linear_scale SpecializedQuantitationType Ratio of Medians (Cy5/Cy3) from all pixel in this spot. Ratio of medians % SDev float linear_scale SpecializedQuantitationType Standard deviation of Ratio of medians in percent. Ratio-Cy5/Cy3 float linear_scale SpecializedQuantitationType Direct ratio ( = Cy5_Vol-BG / Cy3_Vol-BG ) Regulation string_datatype unscaled SpecializedQuantitationType If Flag = SNR1 then Regulation=>Down; if Flag = SNR2 then Regulation=>up; if Flag = SNR1 AND SNR2 then Regulation=>weak; else Regulation = Ratio-Cy5/Cy3. Rep_vol_BG2 float linear_scale SpecializedQuantitationType Average of background reduced volume for onchip replicas (when calculated). Replicas float linear_scale SpecializedQuantitationType SNR*GS float linear_scale SpecializedQuantitationType Number of saturated pixel in both colors (logical or). SNR-tot float linear_scale SpecializedQuantitationType Squared average of Cy5_SNR and Cy3_SNR. SNR-tot_Score float linear_scale SpecializedQuantitationType Squared average of Cy5_%SNR and Cy3_%SNR. Tot_Sat-pixel float linear_scale SpecializedQuantitationType Number of saturated pixel in color channel Cy5 OR color channel Cy3. >>>CodeLink[Motorola Life Sciences] Cy3 BG Mean float linear_scale MeasuredSignal 1 Cy3 Background mean in Cy3 channel. Cy3 BG Median integer linear_scale SpecializedQuantitationType 1 Cy3 Background median in Cy3 channel. Cy3 Mean float linear_scale SpecializedQuantitationType Cy3 Statistical mean (average) of the raw intensity signal (i.e. mean of all the pixels belonging to the feature region) in Cy3 channel. Cy3 Raw Intensity float linear_scale MeasuredSignal Cy3 The signal from the spot minus the median background in Cy3 channel. Cy5 BG Mean float linear_scale MeasuredSignal 1 Cy5 Background mean in Cy5 channel. Cy5 BG Median integer linear_scale SpecializedQuantitationType 1 Cy5 Background median in Cy5 channel. Cy5 Mean float linear_scale SpecializedQuantitationType Cy5 Statistical mean (average) of the raw intensity signal (i.e. mean of all the pixels belonging to the feature region) in Cy5 channel. Cy5 Raw Intensity float linear_scale MeasuredSignal Cy5 The signal from the spot minus the median background in Cy5 channel. Flag boolean unscaled SpecializedQuantitationType Flag indicates if the spot matched with quality measures (i.e shape, low signal, saturated). TRUE corresponds to features that have to be discarded according to the quality measures, while FALSE is the opposite. >>>Spot[CSIRO] # These first are just feature coordinate/index columns, and should be discarded. #indexs The index of the spot. #grid_r The row index of the grid. #grid_c The column index of the grid. #spot_r The row index of the spot within the its grid. #spot_c The column index of the spot within the its grid. area integer linear_scale SpecializedQuantitationType The number of pixels in the segmented spot. Gmean float linear_scale SpecializedQuantitationType 0 Cy3 The average pixel value within the spot: green band. Gmedian float linear_scale MeasuredSignal 0 Cy3 The median pixel value within the spot: green band. GIQR float 0 Cy3 The interquartile range of the logged pixel values within the spot: green band. Rmean float linear_scale SpecializedQuantitationType 0 Cy5 The average pixel value within the spot: red band. Rmedian float linear_scale MeasuredSignal 0 Cy5 The median pixel value within the spot: red band. RIQR float 0 Cy5 The interquartile range of the logged pixel values within the spot: red band. bg.Gmean float linear_scale SpecializedQuantitationType 1 Cy3 The average pixel value in the background region: green band. bg.Gmedian float linear_scale MeasuredSignal 1 Cy3 The median pixel value in the background region: green band. bg.Gsd float 1 Cy3 bg.GIQR float 1 Cy3 The interquartile range of the logged pixel values in the background region: green band. bg.Rmean float linear_scale SpecializedQuantitationType 1 Cy5 The average pixel value in the background region: red band. bg.Rmedian float linear_scale MeasuredSignal 1 Cy5 The median pixel value in the background region: red band. bg.Rsd float 1 Cy5 bg.RIQR float 1 Cy5 The interquartile range of the logged pixel values in the background region: red band. valleyG SpecializedQuantitationType Cy3 Median of median image values in four neighbouring "valley" regions: green band. "Valley" regions are square regions between spots. valleyR SpecializedQuantitationType Cy5 Median of median image values in four neighbouring "valley" regions: red band. morphG integer linear_scale SpecializedQuantitationType Cy3 Value of a morphological opening of the green band image at the nominal spot centre. Openings and erosions (see below) use a rectangular structuring element with side lengths equal to twice the average horizontal and vertical distances between spots. morphG.erode SpecializedQuantitationType Cy3 Value of a morphological erosion of the green band image at the nominal spot centre. morphG.close.open integer linear_scale SpecializedQuantitationType Cy3 Value of a morphological closing followed by a morphological opening of the green band image at the nominal spot centre. morphR integer linear_scale SpecializedQuantitationType Cy5 Value of a morphological opening of the red band image at the nominal spot centre. morphR.erode SpecializedQuantitationType Cy5 Value of a morphological erosion of the red band image at the nominal spot centre. morphR.close.open integer linear_scale SpecializedQuantitationType Cy5 Value of a morphological closing followed by a morphological opening of the red band image at the nominal spot centre. logratios float log_base_2 Ratio 0 The base-2 log of the background-adjusted ratio, R/G, using R/Gmedian for spot value and morphR/G for background. perimeter integer linear_scale SpecializedQuantitationType The perimeter of the spot as measured by the number of pixels in the spot which have a neighbouring pixel outside the spot. Each pixel is considered to have 8 neighbours in this process. circularity SpecializedQuantitationType A measure of circularity of the spot equal to area times four pi divided by perimeter squared. This is ideally one for circles and more than one for other shapes. badspot SpecializedQuantitationType A flag which is one if the spot area is greater than the product of the horizontal and vertical average spot separations, and zero otherwise. >>>CodeLink Expression Analysis[GE Healthcare] Raw_intensity float linear_scale SpecializedQuantitationType 0 Spot density, which is the difference between the spot mean and the local background median. Normalized_intensity float linear_scale DerivedSignal 0 Normalized intensity value (the raw intensity divided by the normalization factor). Quality_flag string_datatype unscaled SpecializedQuantitationType 0 Metrics the software uses to indicate the quality of a spot. Signal_strength float linear_scale Ratio 0 Estimated signal above its local background noise level. The ratio is expressed as the spot mean divided by the local background standard deviation. Spot_mean float linear_scale MeasuredSignal 0 Sum of all pixel values in the spot area divided by the number of pixels. Spot_median integer linear_scale SpecializedQuantitationType 0 Median pixel intensity computed over the spot area. Spot_stdev float linear_scale Error 0 Spot_mean Standard deviation of the pixel intensity in the spot. Spot_area integer linear_scale SpecializedQuantitationType 0 Number of pixels in the spot. Spot_diameter float linear_scale SpecializedQuantitationType 0 Spot diameter (in pixels) that the software calculates during data extraction. Spot_noise_level float linear_scale SpecializedQuantitationType 1 Local background noise level, given by the median signal of the pixels within the baackground ring. Bkgd_mean float linear_scale MeasuredSignal 1 Estimate of the background mean that the software computes, using the pixel intensities in the background area surrounding the spot. Bkgd_median integer linear_scale SpecializedQuantitationType 1 Estimate of the background median the software computes, using the pixel intensities inside the background area surrounding the spot. Bkgd_stdev float linear_scale Error 1 Bkgd_mean Estimate of the background standard deviation that the software computes, using the pixel intensities inside the background area surrounding the spot. Bkgd_area float linear_scale SpecializedQuantitationType 1 Number of pixels that the software includes to compute the estimated local background mean, median, and standard deviation. >>>Feature Extraction Software[Agilent Technologies] BGPixCorrelation float linear_scale SpecializedQuantitationType Ratio of estimated feature covariance in RedGreen space to product of feature Standard Deviation in Red Green space. The covariance of two features measures their tendency to vary together, i.e. to co-vary. In this case, it is a cumulative quantitation of BGSubSigCorrelation float linear_scale SpecializedQuantitationType Ratio of estimated background subtracted feature signal covariance in RG space to product of background subtracted feature Standard Deviation in RG space. DyeNormCorrelation float linear_scale SpecializedQuantitationType Dye normalized red and green pixel correlation. ErrorModel integer linear_scale SpecializedQuantitationType ErrorModel Indicates the error model that the user chose for feature extraction. A 0 indicates use of the Propogated Error Model. A 1 indicates use of the Universal Error Model. Failed boolean linear_scale Failed Set to one if the quantitation values of a feature are considered bad enough to thrown out in the higher level analysis. Features are thrown out if both channels are saturated or if either channel is a non-uniform outlier. A feature can be failed from out Green.BGPixSDev float linear_scale Error Green.Background Cy3 Green.Background float linear_scale MeasuredSignal 1 Cy3 Green.DerivedSignal float linear_scale DerivedSignal Cy3 Green.DyeNormSignal float linear_scale SpecializedQuantitationType Cy3 Green.MeasuredSignal float linear_scale MeasuredSignal Cy3 Green.PixSDev float linear_scale Error Green.MeasuredSignal Cy3 Green.ProcessedSigError float linear_scale Error Green.DerivedSignal Cy3 HighEndCorrDNCorrelation float linear_scale SpecializedQuantitationType HighEndDyeNormApplied boolean linear_scale SpecializedQuantitationType Has a value of 0 or 1. IsManualFlag boolean linear_scale SpecializedQuantitationType If a feature has been moved manually this flag will be set to 1. IsNormalization boolean linear_scale SpecializedQuantitationType A boolean flag which indicates if a feature is used to measure dye bias. A 1 incidates the value was used. IsUsedBGAdjust float linear_scale SpecializedQuantitationType A boolean used to flag features used for computation of global BG offset. A 1 indicates the feature was used. LogRatio float log_base_10 Ratio log(REDsignal/GREENsignal) per feature. Signals in both channels are post dye normalization If SURROGATES are disabled, then this value will be set to: -2 if DyeNormRedSig <= 0.0 &DyeNormGreenSig > 0.0; 2 if DyeNormRedSig > 0.0 & DyeNormGreenSi LogRatioError float log_base_10 Error LogRatio LogRatioError = error of the log ratio calculated according to the error model chosen. If SURROGATES are disabled, then this value will be set to if DyeNormRedSig <= 0.0 OR DyeNormGreenSig <= 0.0 PValueLogRatio float percent PValue LogRatio Significance level of the Log Ratio computed for a feature PixCorrelation float linear_scale SpecializedQuantitationType Ratio of estimated feature covariance in RedGreen space to product of feature Standard Deviation in Red Green space. The covariance of two features measures their tendency to vary together, i.e. to co-vary. In this case, it is a cumulative quantitation of PositionX float linear_scale SpecializedQuantitationType Found X coordinate of the feature centroid currently reported in pixels. PositionY float linear_scale SpecializedQuantitationType Found Y coordinate of the feature centroid currently reported in pixels. Red.BGPixSDev float linear_scale Error Red.Background Cy5 Red.Background float linear_scale MeasuredSignal 1 Cy5 Red.DerivedSignal float linear_scale DerivedSignal Cy5 Red.DyeNormSignal float linear_scale SpecializedQuantitationType Cy5 Red.MeasuredSignal float linear_scale MeasuredSignal Cy5 Red.PixSDev float linear_scale Error Red.MeasuredSignal Cy5 Red.ProcessedSigError float linear_scale Error Red.DerivedSignal Cy5 SpotExtentX float linear_scale SpecializedQuantitationType The size of a spot in X in microns. SpotExtentY float linear_scale SpecializedQuantitationType The size of a spot in Y in microns. gBGMeanSignal float linear_scale MeasuredSignal 1 Cy3 Mean local background signal (local to corresponding feature) computed per channel. gBGMedianSignal float linear_scale SpecializedQuantitationType 1 Cy3 Median local background signal (local to corresponding feature) computed per channel. gBGNumPix integer linear_scale SpecializedQuantitationType 1 Cy3 Total number of pixels used to compute Local BG statistics per spot; ie. Total number of BG inlier pixels. This number is computed independently in each channel. gBGPixSDev float linear_scale Error 1 gBGMeanSignal Cy3 Standard deviation of all inlier pixels per Local BG of each feature, computed independently in each channel. gBGSDUsed float linear_scale Error 1 gBGUsed Cy3 Standard deviation of background used in green channel. gBGSubSigError float linear_scale Error gBGSubSignal Cy3 Propagated standard error as computed on net green background subtracted signal. gBGSubSignal float linear_scale SpecializedQuantitationType Cy3 The net green signal following the subtraction of the background from the raw mean green signal. gBGUsed float linear_scale SpecializedQuantitationType 1 Cy3 Background value subtracted from the raw mean signal to generate the BG subtracted signal; this value is computed per channel. If global BG subtraction is used the column is identical for every feature in a given channel. gBackground float linear_scale MeasuredSignal 1 Cy3 Mean local background signal (local to corresponding feature) computed per channel. gDerivedSignal float linear_scale DerivedSignal Cy3 The propagated feature signal, per channel, used for computation of log ratio. gDyeNormError float linear_scale Error gDyeNormSignal Cy3 The standard error associated with the dye normalized signal. gDyeNormSignal float linear_scale SpecializedQuantitationType Cy3 The dye normalized signal in the indicated channel. gHighEndCorrDNError float linear_scale Error gHighEndCorrDNSig Cy3 gHighEndCorrDNSig float linear_scale SpecializedQuantitationType Cy3 gIsBGNonUnifOL boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a background is a NonUniformity Outlier or not. A feature is non-uniform if the pixel noise of feature exceeds a threshold established for a "uniform" feature. A 1 indicates Feature is a non-uniformity outlier. gIsBGPopnOL boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a background is a Population Outlier or not. Probes with replicate features on a microarray are examined using population statistics. A feature is a population outlier if its signal is less than a lower threshold or exceeds an u gIsFeatNonUnifOL boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a feature is a NonUniformity Outlier or not. A feature is non-uniform if the pixel noise of feature exceeds a threshold established for a "uniform" feature. A 1 indicates Feature is a non-uniformity outlier. gIsFeatPopnOL boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a feature is a Population Outlier or not. Probes with replicate features on a microarray are examined using population statistics. A feature is a population outlier if its signal is less than a lower threshold or exceeds an uppe gIsFound boolean linear_scale SpecializedQuantitationType Cy3 A boolean used to flag found (strong) features. The flag is applied independently in each channel. A feature is considered found if the found spot centroid is within the bounds of the spot deviation limit with respect to corresponding nominal centroid. NO gIsInNegCtrlRange boolean linear_scale SpecializedQuantitationType Cy3 Boolean that identifies this spot as being in the range of background. gIsPosAndSignif boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if the mean signal of a feature is greater than the corresponding background and if this difference is significant. Significance is established via a 2-sided t-test against the user-settable maximum p-value. A 1 indicates Feature i gIsSaturated boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a feature is saturated or not. A feature is saturated if 50% of the pixels in a feature are above the saturation threshold. A value of 1 means saturated. gIsWellAboveBG boolean linear_scale SpecializedQuantitationType Cy3 Boolean flag indicating if a feature is well above background or not. A feature must be gIsPosAndSignif and additionally the gBGSubSignal must be greater than 2.6*g(r)BG_SD. A 1 indicates a feature IsWellAboveBG. gMeanSignal float linear_scale MeasuredSignal Cy3 Raw mean signal of feature in green channel. gMeasuredSignal float linear_scale MeasuredSignal Cy3 Raw mean signal of feature in green channel. gMedianSignal float linear_scale SpecializedQuantitationType Cy3 Raw median signal of feature in green channel. gNetSignal float linear_scale SpecializedQuantitationType Cy3 The meanSignal - the scanner offset. gNumBGUsed integer linear_scale SpecializedQuantitationType 1 Cy3 A count of the number of background pixels used in the green channel. gNumPix integer linear_scale SpecializedQuantitationType Cy3 Total number of pixels used to compute feature statistics; ie. total number of inlier pixels/per spot, computed independently in each channel. The number of inlier pixels are the same in both channels. gNumPixOLHi integer linear_scale SpecializedQuantitationType Cy3 Number of outlier pixels per feature with intensity > upper threshold set via the pixel outlier rejection method. The number is computed independently in each channel. These pixels are omitted from all subsequent calculations. gNumPixOLLo integer linear_scale SpecializedQuantitationType Cy3 Number of outlier pixels per feature with intensity < lower threshold set via the pixel outlier rejection method. The number is computed independently in each channel. NOTE: The pixel outlier method is the ONLY step that removes data in Feature Extract gNumSatPix integer linear_scale SpecializedQuantitationType Cy3 Total number of saturated pixels per feature, computed per channel. gPValFeatEqBG float linear_scale SpecializedQuantitationType Cy3 P-value from t-test of significance between green Mean signal and green background. gPixSDev float linear_scale Error gMeanSignal Cy3 Standard deviation of all inlier pixels per feature; this is computed independently in each channel. gProcessedSigError float linear_scale Error gProcessedSignal Cy3 Standard error of propagated feature signal, per channel. gProcessedSignal float linear_scale DerivedSignal Cy3 The propagated feature signal, per channel, used for computation of log ratio. gSpatialDetrendIsInFilteredSet boolean linear_scale SpecializedQuantitationType Cy3 Set to true for a given feature if it is part of the filtered set used to fit the surface measuring the spatial trend across the microarray. This feature is considered part of the locally weighted x% of the features. gSpatialDetrendSurfaceValue float linear_scale SpecializedQuantitationType Cy3 Value of the smoothed surface derived from the set of features that are part of SpatialDetrendIsInFilteredSet. gSurrogateUsed float linear_scale SpecializedQuantitationType Cy3 The green surrogate value used. rBGMeanSignal float linear_scale MeasuredSignal 1 Cy5 Mean local background signal (local to corresponding feature) computed per channel. rBGMedianSignal float linear_scale SpecializedQuantitationType 1 Cy5 Median local background signal (local to corresponding feature) computed per channel. rBGNumPix integer linear_scale SpecializedQuantitationType 1 Cy5 Total number of pixels used to compute Local BG statistics per spot; ie. Total number of BG inlier pixels. This number is computed independently in each channel. rBGPixSDev float linear_scale Error 1 rBGMeanSignal Cy5 Standard deviation of all inlier pixels per Local BG of each feature, computed independently in each channel. rBGSDUsed float linear_scale Error 1 rBGUsed Cy5 Standard deviation of background used in red channel. rBGSubSigError float linear_scale Error rBGSubSignal Cy5 Propagated standard error as computed on net red background subtracted signal. rBGSubSignal float linear_scale SpecializedQuantitationType Cy5 The net red signal following the subtraction of the background from the raw mean red signal. rBGUsed float linear_scale SpecializedQuantitationType 1 Cy5 Background value subtracted from the raw mean signal to generate the BG subtracted signal; this value is computed per channel. If global BG subtraction is used the column is identical for every feature in a given channel. rBackground float linear_scale MeasuredSignal 1 Cy5 Mean local background signal (local to corresponding feature) computed per channel. rDerivedSignal float linear_scale DerivedSignal Cy5 The propagated feature signal, per channel, used for computation of log ratio. rDyeNormError float linear_scale Error rDyeNormSignal Cy5 The standard error associated with the dye normalized signal. rDyeNormSignal float linear_scale SpecializedQuantitationType Cy5 The dye normalized signal in the indicated channel. rHighEndCorrDNError float linear_scale Error rHighEndCorrDNSig Cy5 rHighEndCorrDNSig float linear_scale SpecializedQuantitationType Cy5 rIsBGNonUnifOL boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a background is a NonUniformity Outlier or not. A feature is non-uniform if the pixel noise of feature exceeds a threshold established for a "uniform" feature. A 1 indicates Feature is a non-uniformity outlier. rIsBGPopnOL boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a background is a Population Outlier or not. Probes with replicate features on a microarray are examined using population statistics. A feature is a population outlier if its signal is less than a lower threshold or exceeds an u rIsFeatNonUnifOL boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a feature is a NonUniformity Outlier or not. A feature is non-uniform if the pixel noise of feature exceeds a threshold established for a "uniform" feature. A 1 indicates Feature is a non-uniformity outlier. rIsFeatPopnOL boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a feature is a Population Outlier or not. Probes with replicate features on a microarray are examined using population statistics. A feature is a population outlier if its signal is less than a lower threshold or exceeds an uppe rIsFound boolean linear_scale SpecializedQuantitationType Cy5 A boolean used to flag found (strong) features. The flag is applied independently in each channel. A feature is considered found if the found spot centroid is within the bounds of the spot deviation limit with respect to corresponding nominal centroid. NO rIsInNegCtrlRange boolean linear_scale SpecializedQuantitationType Cy5 Boolean that identifies this spot as being in the range of background. rIsPosAndSignif boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if the mean signal of a feature is greater than the corresponding background and if this difference is significant. Significance is established via a 2-sided t-test against the user-settable maximum p-value. A 1 indicates Feature i rIsSaturated boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a feature is saturated or not. A feature is saturated if 50% of the pixels in a feature are above the saturation threshold. A value of 1 means saturated. rIsWellAboveBG boolean linear_scale SpecializedQuantitationType Cy5 Boolean flag indicating if a feature is well above background or not. A feature must be gIsPosAndSignif and additionally the gBGSubSignal must be greater than 2.6*g(r)BG_SD. A 1 indicates a feature IsWellAboveBG. rMeanSignal float linear_scale MeasuredSignal Cy5 Raw mean signal of feature in red channel. rMeasuredSignal float linear_scale MeasuredSignal Cy5 Raw mean signal of feature in red channel. rMedianSignal float linear_scale SpecializedQuantitationType Cy5 Raw median signal of feature in red channel. rNetSignal float linear_scale SpecializedQuantitationType Cy5 The meanSignal - the scanner offset. rNumBGUsed integer linear_scale SpecializedQuantitationType 1 Cy5 A count of the number of background pixels used in the red channel. rNumPix integer linear_scale SpecializedQuantitationType Cy5 Total number of pixels used to compute feature statistics; ie. total number of inlier pixels/per spot, computed independently in each channel. The number of inlier pixels are the same in both channels. rNumPixOLHi integer linear_scale SpecializedQuantitationType Cy5 Number of outlier pixels per feature with intensity > upper threshold set via the pixel outlier rejection method. The number is computed independently in each channel. These pixels are omitted from all subsequent calculations. rNumPixOLLo integer linear_scale SpecializedQuantitationType Cy5 Number of outlier pixels per feature with intensity < lower threshold set via the pixel outlier rejection method. The number is computed independently in each channel. NOTE: The pixel outlier method is the ONLY step that removes data in Feature Extract rNumSatPix integer linear_scale SpecializedQuantitationType Cy5 Total number of saturated pixels per feature, computed per channel. rPValFeatEqBG float linear_scale SpecializedQuantitationType Cy5 P-value from t-test of significance between red Mean signal and red background. rPixSDev float linear_scale Error rMeanSignal Cy5 Standard deviation of all inlier pixels per feature; this is computed independently in each channel. rProcessedSigError float linear_scale Error rProcessedSignal Cy5 Standard error of propagated feature signal, per channel. rProcessedSignal float linear_scale DerivedSignal Cy5 The propagated feature signal, per channel, used for computation of log ratio. rSpatialDetrendIsInFilteredSet boolean linear_scale SpecializedQuantitationType Cy5 Set to true for a given feature if it is part of the filtered set used to fit the surface measuring the spatial trend across the microarray. This feature is considered part of the locally weighted x% of the features. rSpatialDetrendSurfaceValue float linear_scale SpecializedQuantitationType Cy5 Value of the smoothed surface derived from the set of features that are part of SpatialDetrendIsInFilteredSet. rSurrogateUsed float linear_scale SpecializedQuantitationType Cy5 The red surrogate value used. xDev float log_base_10 SpecializedQuantitationType Used to compute the Log Ratio PValue. >>>GEMTools[Incyte Genomics] BalancedDiffExpr float linear_scale SpecializedQuantitationType Balanced fold change. CloneID string_datatype unscaled SpecializedQuantitationType Incyte identifier for individual clone spotted on the array. CloneSource string_datatype unscaled SpecializedQuantitationType All arrayed elements were either clones derived from Incyte cDNA libraries, or sequences generated specifically to be used as hybridization and/or signal balancing controls. DiffExpr float linear_scale SpecializedQuantitationType Unbalanced fold change. GEMID string_datatype unscaled SpecializedQuantitationType Unique identifier. GeneID string_datatype unscaled SpecializedQuantitationType Incyte unique identifier for a sequence contig. GeneName string_datatype unscaled SpecializedQuantitationType Genbank annotation of Incyte sequence contig. IncyteCloneID string_datatype unscaled SpecializedQuantitationType Incyte identifier for individual clone spotted on the array. Location integer linear_scale SpecializedQuantitationType An Incyte code that can be used to determine the location of the spot on the array. P1Area% integer linear_scale SpecializedQuantitationType Cy5 Area of spot coverage. P1Description string_datatype unscaled SpecializedQuantitationType Cy5 Identifier or code name for Cy5 labeled probe. P1S/B float linear_scale SpecializedQuantitationType 1 Cy5 Element signal to background in the Cy5 channel. P1Signal integer linear_scale MeasuredSignal Cy5 Signal intensity in the Cy5 channel. P2Area% integer linear_scale SpecializedQuantitationType Cy3 Area of spot coverage. P2BalancedSignal integer linear_scale SpecializedQuantitationType Balanced Cy3 signal (balanced by total average signal intensity in both channels). P2Description string_datatype unscaled SpecializedQuantitationType Cy3 Identifier or code name for Cy3 labeled probe. P2S/B float linear_scale SpecializedQuantitationType 1 Cy3 Element signal to background in the Cy3 channel. P2Signal integer linear_scale MeasuredSignal Cy3 Signal intensity in the Cy3 channel. PCRStatus string_datatype unscaled SpecializedQuantitationType An indicator of the quality of the spotted cDNA. Probe1 string_datatype unscaled SpecializedQuantitationType Cy5 Unique identifier for Cy5 labeled probe. Probe2 string_datatype unscaled SpecializedQuantitationType Cy3 Unique identifier for Cy3 labeled probe. >>>GLEAMS[NuTec Sciences] BG.Cy3 float linear_scale MeasuredSignal 1 Cy3 Median pixel intensity computed over the local background region for Cy3. BG.Cy5 float linear_scale MeasuredSignal 1 Cy5 Median pixel intensity computed over the local background region for Cy5. Mean.Sig.Cy3 float linear_scale SpecializedQuantitationType Cy3 Pixel intensity averaged over the local signal region for Cy3. Mean.Sig.Cy5 float linear_scale SpecializedQuantitationType Cy5 Pixel intensity averaged over the local signal region for Cy5. Med.Sig.Cy3 integer linear_scale MeasuredSignal Cy3 Median pixel intensity computed over the local signal region for Cy3. Med.Sig.Cy5 integer linear_scale MeasuredSignal Cy5 Median pixel intensity computed over the local signal region for Cy5. SD.Cy3 float linear_scale Error Mean.Sig.Cy3 Cy3 Standard deviation of pixel intensities over the local signal region for Cy3. SD.Cy5 float linear_scale Error Mean.Sig.Cy5 Cy5 Standard deviation of pixel intensities over the local signal region for Cy5. Sig.Area integer linear_scale SpecializedQuantitationType Number of pixels in the local signal region. X integer linear_scale SpecializedQuantitationType Location of the center of the spot on the array on the X-axis. Y integer linear_scale SpecializedQuantitationType Location of the center of the spot on the array on the Y-axis. >>>GenePix[Axon Instruments] % > B595+1SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 595 nm. % > B595+2SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 595 nm. % > B685+1SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 685 nm. % > B685+2SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 685 nm. B595 integer linear_scale SpecializedQuantitationType 1 Cy3 The actual background value used for the feature in GenePix Pro calculations (as opposed to B595 Median, for example, which is the local median background.) This column is required because GenePix Pro 5.0 has global and negative control background subtrac B595 CV integer linear_scale SpecializedQuantitationType 1 Cy3 The coefficient of variation of local background pixel intensity. B595 Mean integer linear_scale MeasuredSignal 1 Cy3 The mean feature background intensity at wavelength 595 nm. B595 Median integer linear_scale SpecializedQuantitationType 1 Cy3 The median feature background intensity at wavelength 595 nm. B595 SD integer linear_scale Error 1 B595 Median Cy3 The standard deviation of the feature background intensity at wavelength 595 nm. B685 integer linear_scale SpecializedQuantitationType 1 Cy5 The actual background value used for the feature in GenePix Pro calculations (as opposed to B685 Median, for example, which is the local median background.) This column is required because GenePix Pro 5.0 has global and negative control background subtrac B685 CV integer linear_scale SpecializedQuantitationType 1 Cy5 The coefficient of variation of local background pixel intensity. B685 Mean integer linear_scale MeasuredSignal 1 Cy5 The mean feature background intensity at wavelength 685 nm. B685 Median integer linear_scale SpecializedQuantitationType 1 Cy5 The median feature background intensity at wavelength 685 nm. B685 SD integer linear_scale Error 1 B685 Median Cy5 The standard deviation of the feature background intensity at wavelength 685 nm. F595 % Sat. integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels at wavelength 595 nm that are saturated. F595 CV integer linear_scale SpecializedQuantitationType Cy3 The coefficient of variation of feature pixel intensity. F595 Mean integer linear_scale MeasuredSignal Cy3 Mean feature pixel intensity at wavelength 595 nm. F595 Mean - B595 integer linear_scale SpecializedQuantitationType Cy3 The mean feature pixel intensity at wavelength 595 nm with the median background subtracted. F595 Median integer linear_scale SpecializedQuantitationType Cy3 Median feature pixel intensity at wavelength 595 nm. F595 Median - B595 integer linear_scale SpecializedQuantitationType Cy3 The median feature pixel intensity at wavelength 595 nm with the median background subtracted. F595 SD integer linear_scale Error F595 Median Cy3 The standard deviation of the feature intensity at wavelength 595 nm. F595 Total Intensity integer linear_scale SpecializedQuantitationType Cy3 The sum of feature pixel intensities at 595 nm. F685 % Sat. integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels at wavelength 685 nm that are saturated. F685 CV integer linear_scale SpecializedQuantitationType Cy5 The coefficient of variation of feature pixel intensity. F685 Mean integer linear_scale MeasuredSignal Cy5 Mean feature pixel intensity at wavelength 685 nm. F685 Mean - B685 integer linear_scale SpecializedQuantitationType Cy5 The mean feature pixel intensity at wavelength 685 nm with the median background subtracted. F685 Median integer linear_scale SpecializedQuantitationType Cy5 Median feature pixel intensity at wavelength 685 nm. F685 Median - B685 integer linear_scale SpecializedQuantitationType Cy5 The median feature pixel intensity at wavelength 685 nm with the median background subtracted. F685 SD integer linear_scale Error F685 Median Cy5 The standard deviation of the feature intensity at wavelength 685 nm. F685 Total Intensity integer linear_scale SpecializedQuantitationType Cy5 The sum of feature pixel intensities at 685 nm. Log Ratio (685/595) float log_base_2 Ratio Log (base 2) transform of the ratio of the medians. Mean of Ratios (685/595) float linear_scale SpecializedQuantitationType The geometric mean of the pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Median of Ratios (685/595) float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Ratio of Means (685/595) float linear_scale SpecializedQuantitationType The ratio of the arithmetic mean intensities of each feature for each wavelength, with the median background subtracted. Ratio of Medians (685/595) float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength, with the median background subtracted. Ratios SD (685/595) float linear_scale Error Median of Ratios (685/595) The geometric standard deviation of the pixel intensity ratios. Rgn R2 (685/595) float linear_scale SpecializedQuantitationType The coefficient of determination for the current regression value. Rgn Ratio (685/595) float linear_scale SpecializedQuantitationType The regression ratio of every pixel in a 2-feature-diameter circle around the center of the feature. SNR 595 float linear_scale SpecializedQuantitationType 1 Cy5 The signal-to-noise ratio at 595 nm, defined by (F595 Mean - B595 Mean) / (B595 SD) SNR 685 float linear_scale SpecializedQuantitationType 1 Cy5 The signal-to-noise ratio at 685 nm, defined by (F685 Mean - B685 Mean) / (B685 SD) Sum of Means (685/595) integer linear_scale SpecializedQuantitationType The sum of the arithmetic mean intensities for each wavelength, with the median background subtracted. Sum of Medians (685/595) integer linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength, with the median background subtracted. % > B633+1SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 633 nm. % > B633+2SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 633 nm. B633 integer linear_scale SpecializedQuantitationType 1 Cy5 The actual background value used for the feature in GenePix Pro calculations (as opposed to B633 Median, for example, which is the local median background.) This column is required because GenePix Pro 5.0 has global and negative control background subtrac B633 CV integer linear_scale SpecializedQuantitationType 1 Cy5 The coefficient of variation of local background pixel intensity. B633 Mean integer linear_scale MeasuredSignal 1 Cy5 The mean feature background intensity at wavelength 633 nm. B633 Median integer linear_scale SpecializedQuantitationType 1 Cy5 The median feature background intensity at wavelength 633 nm. B633 SD integer linear_scale Error 1 B633 Median Cy5 The standard deviation of the feature background intensity at wavelength 633 nm. F633 % Sat. integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels at wavelength 633 nm that are saturated. F633 CV integer linear_scale SpecializedQuantitationType Cy5 The coefficient of variation of feature pixel intensity. F633 Mean integer linear_scale MeasuredSignal Cy5 Mean feature pixel intensity at wavelength 633 nm. F633 Mean - B633 integer linear_scale SpecializedQuantitationType Cy5 The mean feature pixel intensity at wavelength 633 nm with the median background subtracted. F633 Median integer linear_scale SpecializedQuantitationType Cy5 Median feature pixel intensity at wavelength 633 nm. F633 Median - B633 integer linear_scale SpecializedQuantitationType Cy5 The median feature pixel intensity at wavelength 633 nm with the median background subtracted. F633 SD integer linear_scale Error F633 Median Cy5 The standard deviation of the feature intensity at wavelength 633 nm. F633 Total Intensity integer linear_scale SpecializedQuantitationType Cy5 The sum of feature pixel intensities at 633 nm. Log Ratio (633/532) float log_base_2 Ratio Log (base 2) transform of the ratio of the medians. Mean of Ratios (633/532) float linear_scale SpecializedQuantitationType The geometric mean of the pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Median of Ratios (633/532) float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Ratio of Means (633/532) float linear_scale SpecializedQuantitationType The ratio of the arithmetic mean intensities of each feature for each wavelength, with the median background subtracted. Ratio of Medians (633/532) float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength, with the median background subtracted. Ratios SD (633/532) float linear_scale Error Median of Ratios (633/532) The geometric standard deviation of the pixel intensity ratios. Rgn R2 (633/532) float linear_scale SpecializedQuantitationType The coefficient of determination for the current regression value. Rgn Ratio (633/532) float linear_scale SpecializedQuantitationType The regression ratio of every pixel in a 2-feature-diameter circle around the center of the feature. SNR 633 float linear_scale SpecializedQuantitationType 1 Cy5 The signal-to-noise ratio at 633 nm, defined by (F633 Mean - B633 Mean) / (B633 SD) Sum of Means (633/532) integer linear_scale SpecializedQuantitationType The sum of the arithmetic mean intensities for each wavelength, with the median background subtracted. Sum of Medians (633/532) integer linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength, with the median background subtracted. % > B532+1SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 532 nm. % > B532+1SD2 integer linear_scale SpecializedQuantitationType Cy3 % > B532+2SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 532 nm. % > B532+2SD2 integer linear_scale SpecializedQuantitationType Cy3 % > B563+1SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 563 nm. % > B563+2SD integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 563 nm. % > B635+1SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, at wavelength 635 nm. % > B635+1SD2 integer linear_scale SpecializedQuantitationType Cy5 % > B635+2SD integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, at wavelength 635 nm. % > B635+2SD2 integer linear_scale SpecializedQuantitationType Cy5 Autoflag boolean linear_scale SpecializedQuantitationType Reports whether or not a feature has been flagged from the Flag Features dialog box. It applies to good and bad flags only. B Pixels integer linear_scale SpecializedQuantitationType The total number of background pixels. B532 integer linear_scale SpecializedQuantitationType 1 Cy3 The actual background value used for the feature in GenePix Pro calculations (as opposed to B532 Median, for example, which is the local median background.) This column is required because GenePix Pro 5.0 has global and negative control background subtrac B532 CV integer linear_scale SpecializedQuantitationType 1 Cy3 The coefficient of variation of local background pixel intensity. B532 Mean integer linear_scale MeasuredSignal 1 Cy3 The mean feature background intensity at wavelength 532 nm. B532 Median integer linear_scale SpecializedQuantitationType 1 Cy3 The median feature background intensity at wavelength 532 nm. B532 SD integer linear_scale Error 1 B532 Median Cy3 The standard deviation of the feature background intensity at wavelength 532 nm. B532 SD2 float linear_scale Error 1 B532 Median Cy3 B563 Mean integer linear_scale MeasuredSignal 1 Cy3 The mean feature background intensity at wavelength 563 nm. B563 Median integer linear_scale SpecializedQuantitationType 1 Cy3 The median feature background intensity at wavelength 563 nm. B563 SD integer linear_scale Error 1 B563 Median Cy3 The standard deviation of the feature background intensity at wavelength 563 nm. B635 integer linear_scale SpecializedQuantitationType 1 Cy5 The actual background value used for the feature in GenePix Pro calculations (as opposed to B635 Median, for example, which is the local median background.) This column is required because GenePix Pro 5.0 has global and negative control background subtrac B635 CV integer linear_scale SpecializedQuantitationType 1 Cy5 The coefficient of variation of local background pixel intensity. B635 Mean integer linear_scale MeasuredSignal 1 Cy5 The mean feature background intensity at wavelength 635 nm. B635 Median integer linear_scale SpecializedQuantitationType 1 Cy5 The median feature background intensity at wavelength 635 nm. B635 SD integer linear_scale Error 1 B635 Median Cy5 The standard deviation of the feature background intensity at wavelength 635 nm. B635 SD2 float linear_scale Error 1 B635 Median Cy5 Circularity integer linear_scale SpecializedQuantitationType A measure of circularity from 0 to 100, using a metric based on the variance of the distance of each boundary pixel to the centroid of the feature: 100 is most circular, 0 is most non-circular. Circular features always have a circularity of 100, square fe Dia. integer linear_scale SpecializedQuantitationType The diameter in um of the feature-indicator. F Pixels integer linear_scale SpecializedQuantitationType The total number of feature pixels. F532 % Sat. integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels at wavelength 532 nm that are saturated. F532 CV integer linear_scale SpecializedQuantitationType Cy3 The coefficient of variation of feature pixel intensity. F532 Mean integer linear_scale MeasuredSignal Cy3 Mean feature pixel intensity at wavelength 532 nm. F532 Mean - B532 integer linear_scale SpecializedQuantitationType Cy3 The mean feature pixel intensity at wavelength 532 nm with the median background subtracted. F532 Median integer linear_scale SpecializedQuantitationType Cy3 Median feature pixel intensity at wavelength 532 nm. F532 Median - B532 integer linear_scale SpecializedQuantitationType Cy3 The median feature pixel intensity at wavelength 532 nm with the median background subtracted. F532 SD integer linear_scale Error F532 Median Cy3 The standard deviation of the feature intensity at wavelength 532 nm. F532 Total Intensity integer linear_scale SpecializedQuantitationType Cy3 The sum of feature pixel intensities at 532 nm. F563 % Sat. integer linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels at wavelength 563 nm that are saturated. F563 Mean integer linear_scale MeasuredSignal Cy3 Mean feature pixel intensity at wavelength 563 nm. F563 Mean - B563 integer linear_scale SpecializedQuantitationType Cy3 The mean feature pixel intensity at wavelength 563 nm with the median background subtracted. F563 Median integer linear_scale SpecializedQuantitationType Cy3 Median feature pixel intensity at wavelength 563 nm. F563 Median - B563 integer linear_scale SpecializedQuantitationType Cy3 The median feature pixel intensity at wavelength 563 nm with the median background subtracted. F563 SD integer linear_scale Error F563 Median Cy3 The standard deviation of the feature intensity at wavelength 563 nm. F635 % Sat. integer linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels at wavelength 635 nm that are saturated. F635 CV integer linear_scale SpecializedQuantitationType Cy5 The coefficient of variation of feature pixel intensity. F635 Mean integer linear_scale MeasuredSignal Cy5 Mean feature pixel intensity at wavelength 635 nm. F635 Mean - B635 integer linear_scale SpecializedQuantitationType Cy5 The mean feature pixel intensity at wavelength 635 nm with the median background subtracted. F635 Median integer linear_scale SpecializedQuantitationType Cy5 Median feature pixel intensity at wavelength 635 nm. F635 Median - B635 integer linear_scale SpecializedQuantitationType Cy5 The median feature pixel intensity at wavelength 635 nm with the median background subtracted. F635 SD integer linear_scale Error F635 Median Cy5 The standard deviation of the feature intensity at wavelength 635 nm. F635 Total Intensity integer linear_scale SpecializedQuantitationType Cy5 The sum of feature pixel intensities at 635 nm. Flags integer linear_scale SpecializedQuantitationType The type of flag associated with a feature: -100 = user-flagged null spot; -50 = software-flagged null spot; 0 = spot valid. Log Ratio float log_base_2 Ratio Log (base 2) transform of the ratio of the medians. Log Ratio (532/635) float log_base_2 Ratio log (base 2) transform of the ratio of the medians. Log Ratio (635/532) float log_base_2 Ratio Log (base 2) transform of the ratio of the medians. Mean of Ratios float linear_scale SpecializedQuantitationType The geometric mean of the pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Mean of Ratios (532/635) float linear_scale SpecializedQuantitationType The geometric mean of the pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Mean of Ratios (635/532) float linear_scale SpecializedQuantitationType The geometric mean of the pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Median of Ratios float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Median of Ratios (532/635) float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Median of Ratios (635/532) float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities, with the median background subtracted. Normalize integer unscaled PresentAbsent The normalization status of the feature (included/not included). Ratio of Means float linear_scale SpecializedQuantitationType The ratio of the arithmetic mean intensities of each feature for each wavelength, with the median background subtracted. Ratio of Means (532/635) float linear_scale SpecializedQuantitationType The ratio of the arithmetic mean intensities of each feature for each wavelength, with the median background subtracted. Ratio of Means (635/532) float linear_scale SpecializedQuantitationType The ratio of the arithmetic mean intensities of each feature for each wavelength, with the median background subtracted. Ratio of Medians float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength, with the median background subtracted. Ratio of Medians (532/635) float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength, with the median background subtracted. Ratio of Medians (635/532) float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength, with the median background subtracted. Ratios SD float linear_scale Error Median of Ratios The geometric standard deviation of the pixel intensity ratios. Ratios SD (532/635) float linear_scale Error Median of Ratios (532/635) The geometric standard deviation of the pixel intensity ratios. Ratios SD (635/532) float linear_scale Error Median of Ratios (635/532) The geometric standard deviation of the pixel intensity ratios. Rgn R (532/635) float linear_scale SpecializedQuantitationType Rgn R2 float linear_scale SpecializedQuantitationType The coefficient of determination for the current regression value. Rgn R2 (532/635) float linear_scale SpecializedQuantitationType The coefficient of determination for the current regression value. Rgn R2 (635/532) float linear_scale SpecializedQuantitationType The coefficient of determination for the current regression value. Rgn Ratio float linear_scale SpecializedQuantitationType The regression ratio of every pixel in a 2-feature-diameter circle around the center of the feature. Rgn Ratio (532/635) float linear_scale SpecializedQuantitationType The regression ratio of every pixel in a 2-feature-diameter circle around the center of the feature. Rgn Ratio (635/532) float linear_scale SpecializedQuantitationType The regression ratio of every pixel in a 2-feature-diameter circle around the center of the feature. Rgn R² float linear_scale SpecializedQuantitationType Rgn R² (635/532) float linear_scale SpecializedQuantitationType Rgn R² (532/635) float linear_scale SpecializedQuantitationType SNR 532 float linear_scale SpecializedQuantitationType 1 Cy3 The signal-to-noise ratio at 532 nm, defined by (F532 Mean - B532 Mean) / (B532 SD) SNR 635 float linear_scale SpecializedQuantitationType 1 Cy5 The signal-to-noise ratio at 635 nm, defined by (F635 Mean - B635 Mean) / (B635 SD) Sum of Means integer linear_scale SpecializedQuantitationType The sum of the arithmetic mean intensities for each wavelength, with the median background subtracted. Sum of Means (532/635) integer linear_scale SpecializedQuantitationType The sum of the arithmetic mean intensities for each wavelength, with the median background subtracted. Sum of Means (635/532) integer linear_scale SpecializedQuantitationType The sum of the arithmetic mean intensities for each wavelength, with the median background subtracted. Sum of Medians integer linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength, with the median background subtracted. Sum of Medians (532/635) integer linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength, with the median background subtracted. Sum of Medians (635/532) integer linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength, with the median background subtracted. X integer linear_scale SpecializedQuantitationType The X-coordinate in um of the center of the feature-indicator associated with the feature, where (0,0) is the top left of the image. Y integer linear_scale SpecializedQuantitationType The Y-coordinate in um of the center of the feature-indicator associated with the feature, where (0,0) is the top left of the image. >>>GeneTAC Background med Cy3 float linear_scale MeasuredSignal 1 Cy3 Background med Cy5 float linear_scale MeasuredSignal 1 Cy5 Background med ratio float linear_scale Ratio 1 Background st dev Cy3 float linear_scale Error 1 Background med Cy3 Cy3 Background st dev Cy5 float linear_scale Error 1 Background med Cy5 Cy5 Signal med Cy3 float linear_scale MeasuredSignal Cy3 Signal med Cy5 float linear_scale MeasuredSignal Cy5 Signal med ratio float linear_scale Ratio Signal st dev Cy3 float linear_scale Error Signal med Cy3 Cy3 Signal st dev Cy5 float linear_scale Error Signal med Cy5 Cy5 >>>ImaGene[BioDiscovery] Area To Perimeter_Cy3 float linear_scale SpecializedQuantitationType Cy3 This quality measure defines the spot's circularity. Area of a spot is divided by a square of spot perimeter and multiplied by 4π. As a result, this measure ranges from 0 (highly non-circular shape) to 1 (a perfect circle). Area To Perimeter_Cy5 float linear_scale SpecializedQuantitationType Cy5 This quality measure defines the spot's circularity. Area of a spot is divided by a square of spot perimeter and multiplied by 4π. As a result, this measure ranges from 0 (highly non-circular shape) to 1 (a perfect circle). Background Area_Cy3 integer linear_scale SpecializedQuantitationType 1 Cy3 Number of pixels in the local background region. Background Area_Cy5 integer linear_scale SpecializedQuantitationType 1 Cy5 Number of pixels in the local background region. Background Contamination Present_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 Background Contamination Present_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 Background Mean float linear_scale MeasuredSignal 1 Background Mean_Cy3 float linear_scale MeasuredSignal 1 Cy3 Pixel intensity averaged over the local background region. Background Mean_Cy5 float linear_scale MeasuredSignal 1 Cy5 Pixel intensity averaged over the local background region. Background Median_Cy3 float linear_scale SpecializedQuantitationType 1 Cy3 Median pixel intensity computed over the local background region. Background Median_Cy5 float linear_scale SpecializedQuantitationType 1 Cy5 Median pixel intensity computed over the local background region. Background Mode_Cy3 float linear_scale SpecializedQuantitationType 1 Cy3 Mode pixel intensity computed over the local background region. Background Mode_Cy5 float linear_scale SpecializedQuantitationType 1 Cy5 Mode pixel intensity computed over the local background region. Background Stdev float linear_scale Error 1 Background Mean Background Stdev_Cy3 float linear_scale Error 1 Background Mean_Cy3 Cy3 Standard deviation of pixel intensities over the local background region. Background Stdev_Cy5 float linear_scale Error 1 Background Mean_Cy5 Cy5 Standard deviation of pixel intensities over the local background region. Background Total_Cy3 integer linear_scale SpecializedQuantitationType 1 Cy3 Total pixel intensity summed over the local background region. Background Total_Cy5 integer linear_scale SpecializedQuantitationType 1 Cy5 Total pixel intensity summed over the local background region. Background contamination present_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed background contamination test, 1 if it did not. Background contamination present_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed background contamination test, 1 if it did not. CM Offset-X_Cy3 float linear_scale SpecializedQuantitationType Cy3 X offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM Offset-X_Cy5 float linear_scale SpecializedQuantitationType Cy5 X offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM Offset-Y_Cy3 float linear_scale SpecializedQuantitationType Cy3 Y offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM Offset-Y_Cy5 float linear_scale SpecializedQuantitationType Cy5 Y offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM Offset_Cy3 float linear_scale SpecializedQuantitationType Cy3 Offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM Offset_Cy5 float linear_scale SpecializedQuantitationType Cy5 Offset (in pixels) of the spot's center of the mass from the expected position in the grid. CM-X_Cy3 float linear_scale SpecializedQuantitationType Cy3 X coordinate of the center of the mass of spot's signal region. CM-X_Cy5 float linear_scale SpecializedQuantitationType Cy5 X coordinate of the center of the mass of spot's signal region. CM-Y_Cy3 float linear_scale SpecializedQuantitationType Cy3 Y coordinate of the center of the mass of spot's signal region. CM-Y_Cy5 float linear_scale SpecializedQuantitationType Cy5 Y coordinate of the center of the mass of spot's signal region. Control_Cy3 string_datatype unscaled SpecializedQuantitationType Cy3 Name of a control type for current spot (no name means the spot is not a control spot). Control_Cy5 string_datatype unscaled SpecializedQuantitationType Cy5 Name of a control type for current spot (no name means the spot is not a control spot). Diameter integer linear_scale SpecializedQuantitationType Diameter_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Diameter (in pixels) of grid circle corresponding to the spot. Diameter_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Diameter (in pixels) of grid circle corresponding to the spot. Empty spot_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed offset test, 1 if it did not. Empty spot_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed offset test, 1 if it did not. Expected X_Cy3 float linear_scale SpecializedQuantitationType Cy3 X coordinate of expected position of the circle in the grid. Expected position in the grid is computed fitting least square lines to circle centers in every row and column. Expected X_Cy5 float linear_scale SpecializedQuantitationType Cy5 X coordinate of expected position of the circle in the grid. Expected position in the grid is computed fitting least square lines to circle centers in every row and column. Expected Y_Cy3 float linear_scale SpecializedQuantitationType Cy3 Y coordinate of expected position of the circle in the grid. Expected position in the grid is computed fitting least square lines to circle centers in every row and column. Expected Y_Cy5 float linear_scale SpecializedQuantitationType Cy5 Y coordinate of expected position of the circle in the grid. Expected position in the grid is computed fitting least square lines to circle centers in every row and column. Failed Control_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the control passed all tests, 1 if at least one of the tests failed. Failed Control_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the control passed all tests, 1 if at least one of the tests failed. Field string_datatype unscaled SpecializedQuantitationType Name of a field where the spot is located. Flag boolean unscaled PresentAbsent Flag_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Numeric code for the spot (0 - no flag, flag codes 1,...,7). Flag_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Numeric code for the spot (0 - no flag, flag codes 1,...,7). Gene ID string_datatype unscaled SpecializedQuantitationType Gene ID information for the spot. Ignored % failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed ignored percentage test, 1 if it did not. Ignored % failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed ignored percentage test, 1 if it did not. Ignored Area_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Area of ignored regions directly neighboring ("touching") the signal area is computed. Ignored Area_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Area of ignored regions directly neighboring ("touching") the signal area is computed. Ignored Median_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median pixel intensity computed over the local ignored region. Ignored Median_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median pixel intensity computed over the local ignored region. Max Diam_Cy3 float linear_scale SpecializedQuantitationType Cy3 Diameter of the circle, the spot's signal region can be inscribed in. Max Diam_Cy5 float linear_scale SpecializedQuantitationType Cy5 Diameter of the circle, the spot's signal region can be inscribed in. Min Diam_Cy3 float linear_scale SpecializedQuantitationType Cy3 Diameter of the circle inscribed into the spot's signal region. Min Diam_Cy5 float linear_scale SpecializedQuantitationType Cy5 Diameter of the circle inscribed into the spot's signal region. Negative spot_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 1 if the spot was qualified as negative, 0 if it was not. Negative spot_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 1 if the spot was qualified as negative, 0 if it was not. Offset X_Cy3 float linear_scale SpecializedQuantitationType Cy3 X Offset (in pixels) of the center of the grid circle from the expected position in the grid. Offset X_Cy5 float linear_scale SpecializedQuantitationType Cy5 X Offset (in pixels) of the center of the grid circle from the expected position in the grid. Offset Y_Cy3 float linear_scale SpecializedQuantitationType Cy3 Y Offset (in pixels) of the center of the grid circle from the expected position in the grid. Offset Y_Cy5 float linear_scale SpecializedQuantitationType Cy5 Y Offset (in pixels) of the center of the grid circle from the expected position in the grid. Offset failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed offset test, 1 if it did not. Offset failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed offset test, 1 if it did not. Open Perimeter Failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 Open Perimeter Failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 Open Perimeter_Cy3 float linear_scale SpecializedQuantitationType Cy3 Computes the proportion of signal perimeter that touches the border of rectangular snip around the spot. Open Perimeter_Cy5 float linear_scale SpecializedQuantitationType Cy5 Computes the proportion of signal perimeter that touches the border of rectangular snip around the spot. Open perimeter failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot open perimeter test, 1 if it did not. Open perimeter failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot open perimeter test, 1 if it did not. Perim-To-Area_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 Perim-To-Area_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 Perim-to-area failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed perimeter-to-area test, 1 if it did not. Perim-to-area failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed perimeter-to-area test, 1 if it did not. Position Offset_Cy3 float linear_scale SpecializedQuantitationType Cy3 Position Offset_Cy5 float linear_scale SpecializedQuantitationType Cy5 Position offset_Cy3 float linear_scale SpecializedQuantitationType Cy3 Offset (in pixels) of the center of the grid circle from the expected position in the grid. Position offset_Cy5 float linear_scale SpecializedQuantitationType Cy5 Offset (in pixels) of the center of the grid circle from the expected position in the grid. Saturated spot_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 1 if the spot was qualified as saturated, 0 if it was not. Saturated spot_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 1 if the spot was qualified as saturated, 0 if it was not. Selected spot_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 1 if the spot was selected in the software view at time of save, 0 if not. Selected spot_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 1 if the spot was selected in the software view at time of save, 0 if not. Shape Regularity float linear_scale SpecializedQuantitationType Shape Regularity Failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 Shape Regularity Failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 Shape Regularity_Cy3 float linear_scale SpecializedQuantitationType Cy3 The signal area of a spot is inscribed into a circle, then the number of non-signal pixels that fall within this circle is computed and divided by area of circle. This ratio is subtracted from 1 to give the Shape Regularity. Shape Regularity_Cy5 float linear_scale SpecializedQuantitationType Cy5 The signal area of a spot is inscribed into a circle, then the number of non-signal pixels that fall within this circle is computed and divided by area of circle. This ratio is subtracted from 1 to give the Shape Regularity. Shape regularity failed_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed shape regularity test, 1 if it did not. Shape regularity failed_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed shape regularity test, 1 if it did not. Signal Area_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Number of pixels in the local signal region. Signal Area_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Number of pixels in the local signal region. Signal Contamination Present_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 Signal Contamination Present_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 Signal Mean float linear_scale MeasuredSignal Signal Mean_Cy3 float linear_scale MeasuredSignal Cy3 Pixel intensity averaged over the local signal region. Signal Mean_Cy5 float linear_scale MeasuredSignal Cy5 Pixel intensity averaged over the local signal region. Signal Median_Cy3 float linear_scale SpecializedQuantitationType Cy3 Median pixel intensity computed over the local signal region. Signal Median_Cy5 float linear_scale SpecializedQuantitationType Cy5 Median pixel intensity computed over the local signal region. Signal Mode_Cy3 float linear_scale SpecializedQuantitationType Cy3 Mode pixel intensity computed over the local signal region (mode corresponds to the pick location in intensity distribution). Signal Mode_Cy5 float linear_scale SpecializedQuantitationType Cy5 Mode pixel intensity computed over the local signal region (mode corresponds to the pick location in intensity distribution). Signal Stdev float linear_scale Error Signal Mean Signal Stdev_Cy3 float linear_scale Error Signal Mean_Cy3 Cy3 Standard deviation of pixel intensities over the local signal region. Signal Stdev_Cy5 float linear_scale Error Signal Mean_Cy5 Cy5 Standard deviation of pixel intensities over the local signal region. Signal Total_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Total pixel intensity summed over the local signal region. Signal Total_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Total pixel intensity summed over the local signal region. Signal contamination present_Cy3 boolean linear_scale SpecializedQuantitationType Cy3 0 if the spot passed signal contamination test, 1 if it did not. Signal contamination present_Cy5 boolean linear_scale SpecializedQuantitationType Cy5 0 if the spot passed signal contamination test, 1 if it did not. Spot Area_Cy3 integer linear_scale SpecializedQuantitationType Cy3 Signal Area plus Ignored Area. Spot Area_Cy5 integer linear_scale SpecializedQuantitationType Cy5 Signal Area plus Ignored Area. XCoord float linear_scale SpecializedQuantitationType XCoord_Cy3 float linear_scale SpecializedQuantitationType Cy3 X coordinate (in pixels) of grid circle corresponding to the spot. XCoord_Cy5 float linear_scale SpecializedQuantitationType Cy5 X coordinate (in pixels) of grid circle corresponding to the spot. YCoord float linear_scale SpecializedQuantitationType YCoord_Cy3 float linear_scale SpecializedQuantitationType Cy3 Y coordinate (in pixels) of grid circle corresponding to the spot. YCoord_Cy5 float linear_scale SpecializedQuantitationType Cy5 Y coordinate (in pixels) of grid circle corresponding to the spot. >>>NimbleScan[NimbleGen Systems] GENE_EXPR_OPTION string_datatype unscaled SpecializedQuantitationType The CONTAINER name from the design file, if analysis was done by container or WHOLE_ARRAY if all replicate probe sets were combined into a single set. The default analysis is normally by container. CONTAINER names are generally named FORWARD/REVERSE/BLOCK IMAGE_ID_CY3 string_datatype unscaled SpecializedQuantitationType Cy3 The name of the image the data was extracted from, minus the .tif extension. For NimbleGen data sets, this will be the array identifier plus any additional information, like wavelength used to scan the array, or photomultiplier tube setting. The array ID IMAGE_ID_CY5 string_datatype unscaled SpecializedQuantitationType Cy5 The name of the image the data was extracted from, minus the .tif extension. For NimbleGen data sets, this will be the array identifier plus any additional information, like wavelength used to scan the array, or photomultiplier tube setting. The array ID IMAGE_ID string_datatype unscaled SpecializedQuantitationType The name of the image the data was extracted from, minus the .tif extension. For NimbleGen data sets, this will be the array identifier plus any additional information, like wavelength used to scan the array, or photomultiplier tube setting. The array ID MATCH_INDEX integer linear_scale SpecializedQuantitationType Integer number that ties probe pairs together. Using the combination of MATCH_INDEX and MISMATCH you can retrieve and distinguish the members of the probe pair. Required for expression arrays with mismatches. Must be unique for each probe pair of a given MM_CY3 float linear_scale SpecializedQuantitationType Cy3 The mismatch signal intensity for the probe pair. Will range from 0 to 65536. Will be zero for perfect match only designs. MM_CY5 float linear_scale SpecializedQuantitationType Cy5 The mismatch signal intensity for the probe pair. Will range from 0 to 65536. Will be zero for perfect match only designs. PM_CY3 float linear_scale MeasuredSignal Cy3 The perfect match signal intensity for the probe pair. Will range from 0 to 65536. PM_CY5 float linear_scale MeasuredSignal Cy5 The perfect match signal intensity for the probe pair. Will range from 0 to 65536. MM float linear_scale SpecializedQuantitationType The mismatch signal intensity for the probe pair. Will range from 0 to 65536. Will be zero for perfect match only designs. PM float linear_scale MeasuredSignal The perfect match signal intensity for the probe pair. Will range from 0 to 65536. POSITION integer linear_scale SpecializedQuantitationType Position of the PROBE_SEQUENCE in the sequence/region of interest, starting from the left/5-prime end. PROBE_ID string_datatype unscaled SpecializedQuantitationType The NimbleGen probe identifier. Used to identify a probe sequence within a design. Limited to 50 characters. For expression designs, a PROBE_ID is a 17 character string that looks like HSAP00P0001724033. The first four letters (HSAP) are the species code. SEQ_ID string_datatype unscaled SpecializedQuantitationType The NimbleGen sequence identifier. Used to group the probe pairs together for determining gene expression summary values. Required - must be unique for each sequence/region of interest. Limited to 50 characters. SEQ_URL string_datatype unscaled SpecializedQuantitationType When populated, URL to sequence information for the SEQ_ID. >>>QuantArray[PerkinElmer] Cy3 Area integer linear_scale SpecializedQuantitationType Cy3 The area of the spot given as the number of pixels (in sq. microns). Used to determine whether the spot is close to the expected size or is an artifact on the slide. Cy3 Area Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Background float linear_scale MeasuredSignal 1 Cy3 Mean pixel Cy3 background intensity in Channel Cy3. Cy3 Background Std Dev float linear_scale Error 1 Cy3 Background Cy3 Standard deviation of the raw Cy3 background pixel intensity. Cy3 Background Subtr 1 Cy3 Cy3 Bkg. Uniformity float linear_scale SpecializedQuantitationType 1 Cy3 The uniformity of the pixels used in the background intensity calculation. Cy3 Bkg. Uniformity Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Circularity float linear_scale SpecializedQuantitationType Cy3 Reports the degree to which a spot is close to a perfect circle. This measurement is used to determine the print quality of the microarray. Cy3 Circularity Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Confidence integer linear_scale SpecializedQuantitationType Cy3 Unused QuantArray feature, will always = 1. Cy3 Diameter float linear_scale SpecializedQuantitationType Cy3 Average diameter of the spot (in microns). Used to determine whether the spot is close to the expected size or is perhaps an artifact on the slide. Cy3 Diameter Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Footprint float linear_scale SpecializedQuantitationType Cy3 The distance between the expected position of a spot and its actual measured position (in microns). Cy3 Footprint Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Intensity float linear_scale MeasuredSignal Cy3 Mean pixel Cy3 foreground intensity in Channel Cy3. Cy3 Intensity Std Dev float linear_scale Error Cy3 Intensity Cy3 Standard deviation of the raw Cy3 foreground pixel intensity. Cy3 Normalized & BackSubtr 1 Cy3 Cy3 Normalized & BackSubtr Ratio 1 Cy3 Cy3 Percent float linear_scale SpecializedQuantitationType Cy3 The portion of the overall spot fluorescence contributed by channel Cy3 (in percent). Cy3 Ratio float linear_scale SpecializedQuantitationType Cy3 The portion of the overall spot fluorescence contributed by channel Cy3 (normalized so that channel Cy3 contribution equals 1). Cy3 Replicate Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy3 Signal Noise Ratio float linear_scale Ratio 1 Cy3 The ratio of spot intensity to the standard deviation of the local background of all spots in the microarray. Spots with a low Signal/Noise Ratio can be quickly identified for later reviews. Cy3 Signal Noise Ratio Filter float linear_scale SpecializedQuantitationType Cy3 Cy3 Spot Uniformity float linear_scale SpecializedQuantitationType Cy3 The uniformity of the pixels used in the spot foreground intensity calculation.This helps in determining the quality of the spot and aids in selecting the correct quantification output method. Cy3 Spot Uniformity Filter boolean linear_scale SpecializedQuantitationType Cy3 Cy5 Area integer linear_scale SpecializedQuantitationType Cy5 The area of the spot given as the number of pixels (in sq. microns). Used to determine whether the spot is close to the expected size or is an artifact on the slide. Cy5 Area Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Background float linear_scale MeasuredSignal 1 Cy5 Mean pixel Cy5 background intensity in Channel Cy5. Cy5 Background Std Dev float linear_scale Error 1 Cy5 Background Cy5 Standard deviation of the raw Cy5 background pixel intensity. Cy5 Background Subtr 1 Cy5 Cy5 Bkg. Uniformity float linear_scale SpecializedQuantitationType 1 Cy5 The uniformity of the pixels used in the background intensity calculation. Cy5 Bkg. Uniformity Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Circularity float linear_scale SpecializedQuantitationType Cy5 Reports the degree to which a spot is close to a perfect circle. This measurement is used to determine the print quality of the microarray. Cy5 Circularity Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Confidence integer linear_scale SpecializedQuantitationType Cy5 Unused QuantArray feature, will always = 1. Cy5 Diameter float linear_scale SpecializedQuantitationType Cy5 Average diameter of the spot (in microns). Used to determine whether the spot is close to the expected size or is perhaps an artifact on the slide. Cy5 Diameter Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Footprint float linear_scale SpecializedQuantitationType Cy5 The distance between the expected position of a spot and its actual measured position (in microns). Cy5 Footprint Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Intensity float linear_scale MeasuredSignal Cy5 Mean pixel Cy5 foreground intensity in Channel Cy5. Cy5 Intensity Std Dev float linear_scale Error Cy5 Intensity Cy5 Standard deviation of the raw Cy5 foreground pixel intensity. Cy5 Normalized & BackSubtr 1 Cy5 Cy5 Normalized & BackSubtr Ratio 1 Cy5 Cy5 Percent float linear_scale SpecializedQuantitationType Cy5 The portion of the overall spot fluorescence contributed by channel Cy5 (in percent). Cy5 Ratio float linear_scale SpecializedQuantitationType Cy5 The portion of the overall spot fluorescence contributed by channel Cy5 (normalized so that channel Cy5 contribution equals 1). Cy5 Replicate Filter boolean linear_scale SpecializedQuantitationType Cy5 Cy5 Signal Noise Ratio float linear_scale Ratio 1 Cy5 The ratio of spot intensity to the standard deviation of the local background of all spots in the microarray. Spots with a low Signal/Noise Ratio can be quickly identified for later reviews. Cy5 Signal Noise Ratio Filter float linear_scale SpecializedQuantitationType Cy5 Cy5 Spot Uniformity float linear_scale SpecializedQuantitationType Cy5 The uniformity of the pixels used in the spot foreground intensity calculation.This helps in determining the quality of the spot and aids in selecting the correct quantification output method. Cy5 Spot Uniformity Filter boolean linear_scale SpecializedQuantitationType Cy5 Ignore Filter integer linear_scale SpecializedQuantitationType Whether the feature quantitation is used in down-stream analysis (flagging feature as valid): 0 = feature invalid (null data); 1 = feature valid. Number integer linear_scale SpecializedQuantitationType Unique integer for each spot. X Location integer linear_scale SpecializedQuantitationType X pixel coordinate of spot center. Y Location integer linear_scale SpecializedQuantitationType Y pixel coordinate of spot center. log_normalised float log_base_2 Ratio Ratio = log2 Cy5 - log2 Cy3, for dyeswap ratio *-1 normalised log(cy3/cy5) ratio float log Ratio 0 normalised log(cy5/cy3) ratio float log Ratio 0 Cy3 Background Mean float linear_scale MeasuredSignal 1 Cy3 Mean pixel Cy3 background intensity in Channel Cy3. Cy3 Background Median integer linear_scale SpecializedQuantitationType 1 Cy3 Median pixel Cy3 background intensity in Channel Cy3. Cy3 Background Mode float linear_scale SpecializedQuantitationType 1 Cy3 Mode of pixel Cy3 background intensity in Channel Cy3. Cy3 Background Total integer linear_scale SpecializedQuantitationType 1 Cy3 Total pixel Cy3 background intensity in Channel Cy3. Cy3 Flag integer unscaled SpecializedQuantitationType Cy3 Cy3 Signal Mean float linear_scale MeasuredSignal Cy3 Mean pixel Cy3 foreground intensity in Channel Cy3. Cy3 Signal Median integer linear_scale SpecializedQuantitationType Cy3 Median pixel Cy3 foreground intensity in Channel Cy3. Cy3 Signal Mode float linear_scale SpecializedQuantitationType Cy3 Mode of pixel Cy3 foreground intensity in Channel Cy3. Cy3 Signal Total integer linear_scale SpecializedQuantitationType Cy3 Total pixel Cy3 foreground intensity in Channel Cy3. Cy5 Background Mean float linear_scale MeasuredSignal 1 Cy5 Mean pixel Cy5 background intensity in Channel Cy5. Cy5 Background Median integer linear_scale SpecializedQuantitationType 1 Cy5 Median pixel Cy5 background intensity in Channel Cy5. Cy5 Background Mode float linear_scale SpecializedQuantitationType 1 Cy5 Mode of pixel Cy5 background intensity in Channel Cy5. Cy5 Background Total integer linear_scale SpecializedQuantitationType 1 Cy5 Total pixel Cy5 background intensity in Channel Cy5. Cy5 Flag integer unscaled SpecializedQuantitationType Cy5 Cy5 Signal Mean float linear_scale MeasuredSignal Cy5 Mean pixel Cy5 foreground intensity in Channel Cy5. Cy5 Signal Median integer linear_scale SpecializedQuantitationType Cy5 Median pixel Cy5 foreground intensity in Channel Cy5. Cy5 Signal Mode float linear_scale SpecializedQuantitationType Cy5 Mode of pixel Cy5 foreground intensity in Channel Cy5. Cy5 Signal Total integer linear_scale SpecializedQuantitationType Cy5 Total pixel Cy5 foreground intensity in Channel Cy5. >>>ScanAlyze[Stanford University] BGPIX integer linear_scale SpecializedQuantitationType 1 Number of background pixels. BOT integer linear_scale SpecializedQuantitationType Box bottom: int(((centerX + radius) - Xoffset) / pixelSize). CH1AB float linear_scale SpecializedQuantitationType 1 Cy3 Mean intensities of background pixels of Cy3. CH1B float linear_scale MeasuredSignal 1 Cy3 Median intensities of background pixels of Cy3. CH1EDGEA float linear_scale SpecializedQuantitationType Cy3 Mean magnitude of the horizontal & vertical Sobel edge vectors contained within each spot, for Cy3. CH1GTB1 float linear_scale SpecializedQuantitationType Cy3 Fraction of pixels in the spot greater than background (CH1B) of Cy3. CH1GTB2 float linear_scale SpecializedQuantitationType Cy3 Fraction of pixels in the spot greater than 1.5x the background (CH1B) for Cy3. CH1I float linear_scale MeasuredSignal Cy3 Uncorrected Cy3 mean pixel intensity. CH1KSD float linear_scale SpecializedQuantitationType Cy3 Value of Komogorov-Smirnov statistic that assesses the likelihood that the spot pixel intensity is drawn from the background distribution, for Cy3. CH1KSP float linear_scale SpecializedQuantitationType Cy3 Probability value of Komogorov-Smirnov statistic that assesses the likelihood that the spot pixel intensity is drawn from the background distribution, for Cy3. CH2AB float linear_scale SpecializedQuantitationType 1 Cy5 Mean intensities of background pixels of Cy5. CH2B float linear_scale MeasuredSignal 1 Cy5 Median intensities of background pixels of Cy5. CH2EDGEA float linear_scale SpecializedQuantitationType Cy5 Mean magnitude of the horizontal & vertical Sobel edge vectors contained within each spot, for Cy5. CH2GTB1 float linear_scale SpecializedQuantitationType Cy5 Fraction of pixels in the spot greater than background (CH2B) of Cy5. CH2GTB2 float linear_scale SpecializedQuantitationType Cy5 Fraction of pixels in the spot greater than 1.5x the background (CH2B) for Cy5. CH2I float linear_scale MeasuredSignal Cy5 Uncorrected Cy5 mean pixel intensity. CH2KSD float linear_scale SpecializedQuantitationType Cy5 Value of Komogorov-Smirnov statistic that assesses the likelihood that the spot pixel intensity is drawn from the background distribution, for Cy5. CH2KSP float linear_scale SpecializedQuantitationType Cy5 Probability value of Komogorov-Smirnov statistic that assesses the likelihood that the spot pixel intensity is drawn from the background distribution, for Cy5. COL integer linear_scale SpecializedQuantitationType The column within the grid that the spot is contained. CORR float linear_scale SpecializedQuantitationType The correlation between channel1 (Cy3) & Channel 2 (Cy5) pixels within the spot, and is a useful quality control parameter. Generally, high values imply better fit & good spot quality. EDGE integer unscaled SpecializedQuantitationType FLAG integer unscaled Failed User defined spot flag (default 0). GRID integer linear_scale SpecializedQuantitationType The grid in which the spot is contained. LEFT integer linear_scale SpecializedQuantitationType Box left: int(((centerY - radius) - yoffset) / pixelSize). LFRAT float linear_scale SpecializedQuantitationType When single pixel intensities on channel 1 (Cy3) are plotted against those in channel 2 (Cy5) they fall on a straight line with a slope equal to the ratio. The least-squares fit of a line to the points, minimizing the sum of the squares shortest distance MRAT float linear_scale SpecializedQuantitationType Contains median of Ch2PI-CH2B/Ch1PI-CH1B where Ch1PI & Ch2PI represent single pixel intensities. RAT2 float linear_scale Ratio Ratio of the arithmetic mean intensities of each spot for each wavelength, with the median background subtracted. Channel 2/Channel 1 ratio, (CH2I - CH2B)/(CH1 - CH1B) or Red/Green ratio. REGR float linear_scale SpecializedQuantitationType When single pixel intensities on channel 1 (Cy3) are plotted against those in channel 2 (Cy5) they fall on a straight line with a slope equal to the ratio. This represents the linear regression of Cy5 on Cy3. RIGHT integer linear_scale SpecializedQuantitationType Box right: int(((centerY + radius) - yoffset) / pixelSize). SPIX integer linear_scale SpecializedQuantitationType Count of the number of pixels in the spot. SPOT integer linear_scale SpecializedQuantitationType Unique index of spot in file - counting starts with grid1, moves along row1 from column1 until the last column, then advances to the next row; after all rows in grid1 are assigned an index, counting proceeds to grid2, etc... TOP integer linear_scale SpecializedQuantitationType Box top: int(((centerX - radius) - Xoffset) / pixelSize). >>>ScanArray Express[PerkinElmer] % > B543+1SD float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, in the 543nm channel. % > B543+2SD float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, in the 543nm channel. % > B633+1SD float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, in the 633nm channel. % > B633+2SD float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, in the 633nm channel. B Pixels integer linear_scale SpecializedQuantitationType The total number of background pixels. B543 Mean float linear_scale MeasuredSignal 1 Cy3 Mean pixel background intensity in 543nm channel. B543 Median float linear_scale SpecializedQuantitationType 1 Cy3 Median pixel background intensity in 543nm channel. B543 SD float linear_scale Error 1 B543 Median Cy3 Standard deviation of the raw 543nm background pixel intensity. B633 Mean float linear_scale MeasuredSignal 1 Cy5 Mean pixel background intensity in 633nm channel. B633 Median float linear_scale SpecializedQuantitationType 1 Cy5 Median pixel background intensity in 633nm channel. B633 SD float linear_scale Error 1 B633 Median Cy5 Standard deviation of the raw 633nm background pixel intensity. Cy3 % > B + 1 SD float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, in the Cy3 channel. Cy3 % > B + 2 SD float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, in the Cy3 channel. Cy3 B Mean float linear_scale MeasuredSignal 1 Cy3 Mean pixel Cy3 background intensity in Channel Cy3. Cy3 B Median float linear_scale SpecializedQuantitationType 1 Cy3 Median pixel Cy3 background intensity in Channel Cy3. Cy3 B SD float linear_scale Error 1 Cy3 B Median Cy3 Standard deviation of the raw Cy3 background pixel intensity. Cy3 F % Sat. float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels in the Cy3 channel that are saturated. Cy3 Log Ratio Cy3 Mean float linear_scale MeasuredSignal Cy3 Mean pixel Cy3 foreground intensity in Channel Cy3. Cy3 Mean - B float linear_scale SpecializedQuantitationType Cy3 The mean feature pixel intensity in the Cy3 channel with the mean background subtracted. Cy3 Mean of Ratios Cy3 Median float linear_scale SpecializedQuantitationType Cy3 Median pixel Cy3 foreground intensity in Channel Cy3. Cy3 Median - B float linear_scale SpecializedQuantitationType Cy3 The median feature pixel intensity in the Cy3 channel with the median background subtracted. Cy3 Median of Ratios Cy3 N (Mean-B) float linear_scale DerivedSignal Cy3 Mean pixel Cy3 foreground intensity in Channel Cy3 with the mean background subtracted, globally normalized. Cy3 N (Median-B) float linear_scale SpecializedQuantitationType Cy3 Median pixel Cy3 foreground intensity in Channel Cy3 with the median background subtracted, globally normalized. Cy3 N Log Ratio Cy3 N Mean float linear_scale DerivedSignal Cy3 Globally normalized mean pixel Cy3 foreground intensity in Channel Cy3. Cy3 N Mean of Ratios Cy3 N Median float linear_scale SpecializedQuantitationType Cy3 Globally normalized median pixel Cy3 foreground intensity in Channel Cy3. Cy3 N Median of Ratios Cy3 N Ratio of Means Cy3 N Ratio of Medians Cy3 N Rgn Ratio Cy3 Ratio of Means Cy3 Ratio of Medians Cy3 Ratios SD Cy3 Rgn Ratio Cy3 Rgn R² Cy3 SD float linear_scale Error Cy3 Median Cy3 Standard deviation of the raw Cy3 foreground pixel intensity. Cy3 SignalNoiseRatio float linear_scale Ratio Cy3 The ratio of spot Cy3 intensity to the standard deviation of the local Cy3 background of all spots in the microarray. Spots with a low Signal/Noise Ratio can be quickly identified for later reviews. Cy5 % > B + 1 SD float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than one standard deviation above the background pixel intensity, in the Cy5 channel. Cy5 % > B + 2 SD float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels with intensities more than two standard deviations above the background pixel intensity, in the Cy5 channel. Cy5 B Mean float linear_scale MeasuredSignal 1 Cy5 Mean pixel Cy5 background intensity in Channel Cy5. Cy5 B Median float linear_scale SpecializedQuantitationType 1 Cy5 Median pixel Cy5 background intensity in Channel Cy5. Cy5 B SD float linear_scale Error 1 Cy5 B Median Cy5 Standard deviation of the raw Cy5 background pixel intensity. Cy5 F % Sat. float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels in the Cy5 channel that are saturated. Cy5 Log Ratio Cy5 Mean float linear_scale MeasuredSignal Cy5 Mean pixel Cy5 foreground intensity in Channel Cy5. Cy5 Mean - B float linear_scale SpecializedQuantitationType Cy5 The mean feature pixel intensity in the Cy5 channel with the mean background subtracted. Cy5 Mean of Ratios Cy5 Median float linear_scale SpecializedQuantitationType Cy5 Median pixel Cy5 foreground intensity in Channel Cy5. Cy5 Median - B float linear_scale SpecializedQuantitationType Cy5 The median feature pixel intensity in the Cy5 channel with the median background subtracted. Cy5 Median of Ratios Cy5 N (Mean-B) float linear_scale DerivedSignal Cy5 Mean pixel Cy5 foreground intensity in Channel Cy5 with the mean background subtracted, globally normalized. Cy5 N (Median-B) float linear_scale SpecializedQuantitationType Cy5 Median pixel Cy5 foreground intensity in Channel Cy5 with the median background subtracted, globally normalized. Cy5 N Log Ratio Cy5 N Mean float linear_scale DerivedSignal Cy5 Globally normalized mean pixel Cy5 foreground intensity in Channel Cy5. Cy5 N Mean of Ratios Cy5 N Median float linear_scale SpecializedQuantitationType Cy5 Globally normalized median pixel Cy5 foreground intensity in Channel Cy5. Cy5 N Median of Ratios Cy5 N Ratio of Means Cy5 N Ratio of Medians Cy5 N Rgn Ratio Cy5 Ratio of Means Cy5 Ratio of Medians Cy5 Ratios SD Cy5 Rgn Ratio Cy5 Rgn R² Cy5 SD float linear_scale Error Cy5 Median Cy5 Standard deviation of the raw Cy5 foreground pixel intensity. Cy5 SignalNoiseRatio float linear_scale Ratio Cy5 The ratio of spot Cy5 intensity to the standard deviation of the local Cy5 background of all spots in the microarray. Spots with a low Signal/Noise Ratio can be quickly identified for later reviews. Dia. integer linear_scale SpecializedQuantitationType The diameter in um of the feature-indicator. Diameter integer linear_scale SpecializedQuantitationType The diameter in um of the feature-indicator. F Pixels integer linear_scale SpecializedQuantitationType The total number of feature pixels. F543 % Sat. float linear_scale SpecializedQuantitationType Cy3 The percentage of feature pixels in the 543nm channel that are saturated. F543 Mean float linear_scale MeasuredSignal Cy3 Mean pixel foreground intensity in 543nm channel. F543 Mean - B543 float linear_scale SpecializedQuantitationType Cy3 The mean feature pixel intensity in the 543nm channel with the mean background subtracted. F543 Median float linear_scale SpecializedQuantitationType Cy3 Median pixel foreground intensity in 543nm channel. F543 Median - B543 float linear_scale SpecializedQuantitationType Cy3 The median feature pixel intensity in the 543nm channel with the median background subtracted. F543 SD float linear_scale Error F543 Median Cy3 Standard deviation of the raw 543nm foreground pixel intensity. F633 % Sat. float linear_scale SpecializedQuantitationType Cy5 The percentage of feature pixels in the 633nm channel that are saturated. F633 Mean float linear_scale MeasuredSignal Cy5 Mean pixel foreground intensity in 633nm channel. F633 Mean - B633 float linear_scale SpecializedQuantitationType Cy5 The mean feature pixel intensity in the 633nm channel with the mean background subtracted. F633 Median float linear_scale SpecializedQuantitationType Cy5 Median pixel foreground intensity in 633nm channel. F633 Median - B633 float linear_scale SpecializedQuantitationType Cy5 The median feature pixel intensity in the 633nm channel with the median background subtracted. F633 SD float linear_scale Error F633 Median Cy5 Standard deviation of the raw 633nm foreground pixel intensity. Flags integer unscaled SpecializedQuantitationType Footprint integer linear_scale SpecializedQuantitationType ID string_datatype unscaled SpecializedQuantitationType Index integer linear_scale SpecializedQuantitationType Log Ratio float log_base_2 Ratio Log Ratio (633/543) float log_base_2 Ratio Mean of Ratios float linear_scale SpecializedQuantitationType The mean of pixel-by-pixel ratios of pixel intensities. Mean of Ratios (633/543) float linear_scale SpecializedQuantitationType The mean of pixel-by-pixel ratios of pixel intensities. Median of Ratios float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities. Median of Ratios (633/543) float linear_scale SpecializedQuantitationType The median of pixel-by-pixel ratios of pixel intensities. N Log Ratio float linear_scale SpecializedQuantitationType N Mean of Ratios float linear_scale SpecializedQuantitationType N Median of Ratios float linear_scale SpecializedQuantitationType N Ratio of Means float linear_scale SpecializedQuantitationType N Ratio of Medians float linear_scale SpecializedQuantitationType N Rgn Ratio float linear_scale SpecializedQuantitationType Name string_datatype unscaled SpecializedQuantitationType Normalize integer unscaled PresentAbsent The normalization status of the feature (included/not included). Ratio of Means float linear_scale SpecializedQuantitationType The ratio of the mean intensities of each feature for each wavelength. Ratio of Means (633/543) float linear_scale SpecializedQuantitationType The ratio of the mean intensities of each feature for each wavelength. Ratio of Medians float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength. Ratio of Medians (633/543) float linear_scale SpecializedQuantitationType The ratio of the median intensities of each feature for each wavelength. Ratios SD float linear_scale SpecializedQuantitationType Median of Ratios Ratios SD (633/543) float linear_scale SpecializedQuantitationType Median of Ratios (633/543) Rgn R2 float linear_scale SpecializedQuantitationType Rgn R2 (633/543) float linear_scale SpecializedQuantitationType Rgn Ratio float linear_scale SpecializedQuantitationType Rgn Ratio (633/543) float linear_scale SpecializedQuantitationType Rgn R² (633/543) float linear_scale SpecializedQuantitationType Sum of Means float linear_scale SpecializedQuantitationType The sum of the mean intensities for each wavelength. Sum of Medians float linear_scale SpecializedQuantitationType The sum of the median intensities for each wavelength. X integer linear_scale SpecializedQuantitationType X coordinate of spot center. Y integer linear_scale SpecializedQuantitationType Y coordinate of spot center. >>>SpotFinder[TIGR] BGA integer linear_scale MeasuredSignal 1 Cy3 Spot background in Cy3 channel. BGB integer linear_scale MeasuredSignal 1 Cy5 Spot background in Cy5 channel. BkgA integer linear_scale MeasuredSignal 1 Cy3 Spot background in Cy3 channel. BkgB integer linear_scale MeasuredSignal 1 Cy5 Spot background in Cy5 channel. Flag string_datatype unscaled SpecializedQuantitationType Flag values are generated based on next conditions: A - the number of non-saturated pixels in spot is 0; B- number of non-saturated pixels in spot is between 30 and 50; C- number of non saturated pixels in spot is more then 50; S- fully or partially satur Flag A string_datatype unscaled SpecializedQuantitationType Cy3 Spot flag in channel A. This flag is set by QC filter. Flag B string_datatype unscaled SpecializedQuantitationType Cy5 Spot flag in channel B. This flag is set by QC filter. FlagA string_datatype unscaled SpecializedQuantitationType Cy3 Spot flag in channel A. This flag is set by QC filter. FlagB string_datatype unscaled SpecializedQuantitationType Cy5 Spot flag in channel B. This flag is set by QC filter. IA integer linear_scale MeasuredSignal Cy3 Spot intensity in Cy3 channel corrected for background. IB integer linear_scale MeasuredSignal Cy5 Spot intensity in Cy5 channel corrected for background. MNA integer linear_scale SpecializedQuantitationType Cy3 Mean intensity value in Cy3 channel. MNB integer linear_scale SpecializedQuantitationType Cy5 Mean intensity value in Cy5 channel. MeanR float linear_scale Ratio Spot mean ratio MedA integer linear_scale SpecializedQuantitationType Cy3 Median intensity in Cy3 channel. MedB integer linear_scale SpecializedQuantitationType Cy5 Median intensity in Cy5 channel. MedBkgA integer linear_scale SpecializedQuantitationType Cy3 Median background intensity in Cy3 channel. MedBkgB integer linear_scale SpecializedQuantitationType Cy5 Median background intensity in Cy5 channel. MedianR float linear_scale Ratio Spot median ratio. ModeR float linear_scale Ratio Spot mode ratio. PValueA float linear_scale SpecializedQuantitationType Cy3 P-value in Cy3 channel. PValueB float linear_scale SpecializedQuantitationType Cy5 P-value in Cy5 channel. QC float linear_scale SpecializedQuantitationType Spot total QC score. This is a mean of QC scores in Cy3 and Cy5 channels. QCA float linear_scale SpecializedQuantitationType Cy3 Spot QC score in channel A. This is a geometric mean of shape and S/N QC scores in channel A. S/N QC score is calculated as percentage of pixels in a spot with values higher than 2*median(local BKG). Spot shape QC score is defined as ratio of spot area to QCB float linear_scale SpecializedQuantitationType Cy5 Spot QC score in channel B. This is a geometric mean of shape and S/N QC scores in channel B. S/N QC score is calculated as percentage of pixels in a spot with values higher than 2*median(local BKG). Spot shape QC score is defined as ratio of spot area to QCscore float linear_scale SpecializedQuantitationType SA integer linear_scale SpecializedQuantitationType Spot total area in pixels. SC integer unscaled SpecializedQuantitationType SDA float linear_scale Error IA Cy3 Standard deviation for spot pixels in Cy3 channel. SDB float linear_scale Error IB Cy5 Standard deviation for spot pixels in Cy5 channel. SDBkgA float linear_scale Error 1 BkgA Cy3 Standard deviation of the background value in Cy3 channel. SDBkgB float linear_scale Error 1 BkgB Cy5 Standard deviation of the background value in Cy5 channel. SF float linear_scale SpecializedQuantitationType SR integer unscaled SpecializedQuantitationType Sat float linear_scale SpecializedQuantitationType Spot saturation factor. This measure shows the percentage of non-saturated pixels in the spot used for integration. UID integer linear_scale SpecializedQuantitationType Unique identifier for this spot. >>>UCSF Spot Dapi float linear_scale MeasuredSignal DAPI DapiBack float linear_scale MeasuredSignal 1 DAPI DapiFore float linear_scale SpecializedQuantitationType DAPI Flag integer linear_scale Failed Log2MedRat float log_base_2 Ratio Log2Rat float log_base_2 Ratio Log2Slope float log_base_2 SpecializedQuantitationType MeanLog2Rat float log_base_2 SpecializedQuantitationType MeanRat float linear_scale SpecializedQuantitationType MedianRatio float Ratio MinF-B float SpecializedQuantitationType OriginDist float SpecializedQuantitationType RawRat float linear_scale Ratio Ref float linear_scale MeasuredSignal RefBack float linear_scale MeasuredSignal 1 RefBackSD linear_scale Error 1 RefBack RefFore float linear_scale SpecializedQuantitationType RefForeSD linear_scale Error RefFore RefIntercept float SpecializedQuantitationType RefZstat PValue Slope float linear_scale SpecializedQuantitationType SpotCorr float DerivedSignal Test float linear_scale MeasuredSignal 1 TestBack float linear_scale MeasuredSignal 1 TestBackSD linear_scale Error 1 TestBack TestFore float linear_scale SpecializedQuantitationType TestForeSD linear_scale Error TestFore TestIntercept float SpecializedQuantitationType TestZstat PValue nback integer linear_scale SpecializedQuantitationType 1 nfore integer linear_scale SpecializedQuantitationType >>>Uni of Toronto in-house analysis software B532 Location float linear_scale MeasuredSignal 1 Cy3 B635 Location float linear_scale MeasuredSignal 1 Cy5 F532 Location float linear_scale MeasuredSignal Cy3 F635 Location float linear_scale MeasuredSignal Cy5 Intensity float log_base_10 SpecializedQuantitationType Raw Log Ratio float log_base_10 Ratio 1