Question: Access list of rtime/intensity values from chromatograms object from MSnbase
1
3 months ago by
djshipman201110 wrote:

Hello All,

I am working with the chromatograms object from MSnbase. I used the chromatogram method with a set run time range and mz range in turn creating a large chromatograms object. I see that there is an S4 method for accessing data inside of the object but can not quite get it to work to pull the list of intensity values from the object. When I write the chromatograms object to a txt file, I can see that the data is there and can access it that way, with a lot a data cleaning along the way. Is there a way to access this intensity and rtime data directly from the large chromatograms object itself in R?

Thank you

modified 3 months ago by Laurent Gatto1.2k • written 3 months ago by djshipman201110
Answer: Access list of rtime/intensity values from chromatograms object from MSnbase
2
3 months ago by
Laurent Gatto1.2k
Belgium
Laurent Gatto1.2k wrote:

Below, I have the chrs object as created in ?Chromatograms. It is possible to extract the retention time and intensities from individual chromatogram composing the Chromatograms with rtime and intensity:

> chrs
Chromatograms with 2 rows and 2 columns
1              2
<Chromatogram> <Chromatogram>
[1,]     length: 25     length: 32
[2,]     length: 19     length: 21
phenoData with 0 variables
featureData with 0 variables
> chrs[1, 1]
Object of class: Chromatogram
length of object: 25
from file:
mz range: [NA, NA]
rt range: [1, 25]
MS level: 1
> rtime(chrs[1, 1])
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
> intensity(chrs[1, 1])
[1]  19.557055 245.006734 129.752097  83.322814  74.496695  42.930450
[7] 150.737775  13.503153  50.654998 153.979835  30.482448 143.358903
[13] 217.916567 251.069691 117.040263 328.638097 269.552266   1.415845
[19] 566.549108 181.653059  36.156939 415.043559 198.929917 387.871998
[25]  70.145956


To extract all of these at once, you can convert the Chromatograms to a list and iterate over the elements:

> str(lapply(as(chrs, "list"), intensity))
List of 4
$: num [1:25] 19.6 245 129.8 83.3 74.5 ...$ : num [1:19] 169.8 206.3 60.4 76.8 153.7 ...
$: num [1:32] 96.4 45.5 162.9 65.2 161.9 ...$ : num [1:21] 102.7 36.7 19.2 22.3 33.4 ...
> str(lapply(as(chrs, "list"), rtime))
List of 4
$: int [1:25] 1 2 3 4 5 6 7 8 9 10 ...$ : int [1:19] 1 2 3 4 5 6 7 8 9 10 ...
$: int [1:32] 1 2 3 4 5 6 7 8 9 10 ...$ : int [1:21] 1 2 3 4 5 6 7 8 9 10 ...


Thank you so much! I was using the wrong syntax to access the data. Can the list of intensities and rtimes be added to a data frame without the additional information being included (x1, x2,...)?

Edit: Ignore me, I figured it out. Thank you so much for all the help!!!! :D