Annotation problems regarding quality information for Illumina HumanHT-12 v4-illuminaHumanv4.db
1
0
Entering edit mode
svlachavas ▴ 830
@svlachavas-7225
Last seen 6 months ago
Germany/Heidelberg/German Cancer Resear…

Dear Bioconductor community,

based on the tutorial (http://www.bioconductor.org/packages/release/data/experiment/html/BeadArrayUseCases.html) regarding the analysis of BeadArray expression data, i tried to retrieve quality information about the Human v4 annotation package for Illumina [illuminaHumanv4.db], in order to perform one further filtering step based on probe annotation, in my illumina data which i have preprocessed, normalized with limma and performed some initial intensity filtering

class(filtered)
[1] "EList"
attr(,"package")
[1] "limma"

head(rownames(filtered))
[1] "ILMN_3241953" "ILMN_1755321" "ILMN_1698554" "ILMN_2061446" "ILMN_1676336"
[6] "ILMN_3237396"

My code is adapted from the vignette in the specific package (page 27):

library(illuminaHumanv4.db)
illuminaHumanv4()
ls("package:illuminaHumanv4.db")

ids <- rownames(filtered)
ids2 <- unlist(mget(ids,revmap(illuminaHumanv4ARRAYADDRESS), ifnotfound = NA))  
qual <- unlist(mget(ids2,illuminaHumanv4PROBEQUALITY, ifnotfound = NA)) 

 

The main problem is that the following function:

ids2 <- unlist(mget(ids,revmap(illuminaHumanv4ARRAYADDRESS),ifnotfound = NA)) 

returns NAs for all my probes and thus i could not proceed to get the quality information i need. Any ideas or suggestions ??

illumina human ht-12 v4 illuminahumanv4.db filtering on probe annotation illumina • 1.6k views
ADD COMMENT
2
Entering edit mode
Mike Smith ★ 6.5k
@mike-smith
Last seen 5 hours ago
EMBL Heidelberg

The issue here is that Illumina probes typically have two IDs - the 'Array Address ID' and the 'Illumina ID'.  Array Address IDs are typically large integer values (e.g 60689 or 7650020), while the Illumina IDs are a combination of characters and numbers with the prefix "ILMN_" (e.g. ILMN_1755321 or ILMN_1676336).

In the example from BeadArrayUseCases, the row names of the maqc.norm object you're working with are Array Address IDs.  The ids2 <- ... section of code in your example is mapping from these to the Illumina ID form.  However, your filtered object already has row names in the form we're looking for, so you don't need to perform that step.  You should be able to use the row names directly, like this:

ids <- rownames(filtered)
qual <- unlist(mget(ids,illuminaHumanv4PROBEQUALITY, ifnotfound = NA))

I then get the probe qualities like so: ​

> qual
ILMN_3241953 ILMN_1755321 ILMN_1698554 ILMN_2061446 ILMN_1676336
   "Perfect"    "Perfect"    "Perfect"    "Perfect"    "Perfect" 

 

ADD COMMENT
0
Entering edit mode

Dear Mike,

i used your modification and everything worked !! I was a bit confused with the tutorial and i wrongly used the former unecessary function. Furthermore, i would like to mention one other think i saw in the output of "qual":

some probes have a mark like this:   ILMN_1708510  ILMN_1784478 
                                                       "Perfect****"            "Good**** 

This has some specific meaning or value regarding the probe quality info ?

Also 

table(qual)

        Bad        Good     Good***    Good****    No match     Perfect  Perfect*** 
       2343         435           4         169          15       11568         349 
Perfect**** 
        833

ADD REPLY

Login before adding your answer.

Traffic: 729 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6