comparison quality_report.xml @ 1:ae9ffc7ba261 draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/cardinal commit d2f311f7fff24e54c565127c40414de708e31b3c
author galaxyp
date Thu, 25 Oct 2018 07:28:42 -0400
parents 5f18275c250a
children d4803c1e5e19
comparison
equal deleted inserted replaced
0:5f18275c250a 1:ae9ffc7ba261
1 <tool id="cardinal_quality_report" name="MSI Qualitycontrol" version="@VERSION@.0"> 1 <tool id="cardinal_quality_report" name="MSI Qualitycontrol" version="@VERSION@.1">
2 <description> 2 <description>
3 mass spectrometry imaging QC 3 mass spectrometry imaging QC
4 </description> 4 </description>
5 <macros> 5 <macros>
6 <import>macros.xml</import> 6 <import>macros.xml</import>
7 </macros> 7 </macros>
8 <expand macro="requirements"> 8 <expand macro="requirements">
9 <requirement type="package" version="2.2.1">r-ggplot2</requirement>
10 <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement> 9 <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement>
11 <requirement type="package" version="2.2.1">r-gridextra</requirement> 10 <requirement type="package" version="2.3">r-gridextra</requirement>
11 <requirement type="package" version="3.0">r-ggplot2</requirement>
12 <requirement type="package" version="2.23_15">r-kernsmooth</requirement> 12 <requirement type="package" version="2.23_15">r-kernsmooth</requirement>
13 <requirement type="package" version="0.5.0">r-scales</requirement> 13 <requirement type="package" version="1.0.0">r-scales</requirement>
14 <requirement type="package" version="1.0.8"> r-pheatmap</requirement> 14 <requirement type="package" version="1.0.10"> r-pheatmap</requirement>
15 </expand> 15 </expand>
16 <command detect_errors="exit_code"> 16 <command detect_errors="exit_code">
17 <![CDATA[ 17 <![CDATA[
18 @INPUT_LINKING@ 18 @INPUT_LINKING@
19 cat '${cardinal_qualitycontrol_script}' && 19 cat '${cardinal_qualitycontrol_script}' &&
30 library(RColorBrewer) 30 library(RColorBrewer)
31 library(gridExtra) 31 library(gridExtra)
32 library(KernSmooth) 32 library(KernSmooth)
33 library(scales) 33 library(scales)
34 library(pheatmap) 34 library(pheatmap)
35
35 36
36 @READING_MSIDATA@ 37 @READING_MSIDATA@
37 38
38 ## remove duplicated coordinates 39 ## remove duplicated coordinates
39 print(paste0(sum(duplicated(coord(msidata))), " duplicated coordinates were removed")) 40 print(paste0(sum(duplicated(coord(msidata))), " duplicated coordinates were removed"))
360 361
361 ## here every intensity value > 0 counts as peak 362 ## here every intensity value > 0 counts as peak
362 peaksperpixel = colSums(spectra(msidata)[]> 0, na.rm=TRUE) 363 peaksperpixel = colSums(spectra(msidata)[]> 0, na.rm=TRUE)
363 peakscoordarray=cbind(coord(msidata)[,1:2], peaksperpixel) 364 peakscoordarray=cbind(coord(msidata)[,1:2], peaksperpixel)
364 365
365 print(ggplot(peakscoordarray, aes(x=x, y=y, fill=peaksperpixel), colour=colo)+ 366 print(ggplot(peakscoordarray, aes(x=x, y=y, fill=peaksperpixel))+
366 geom_tile() + coord_fixed() + 367 geom_tile() + coord_fixed() +
367 ggtitle("Number of peaks per spectrum")+ 368 ggtitle("Number of peaks per spectrum")+
368 theme_bw() + 369 theme_bw() +
369 theme(plot.title = element_text(hjust = 0.5))+ 370 theme(plot.title = element_text(hjust = 0.5))+
370 theme(text=element_text(family="ArialMT", face="bold", size=12))+ 371 theme(text=element_text(family="ArialMT", face="bold", size=12))+
373 374
374 375
375 ############################### 6) TIC image ############################### 376 ############################### 6) TIC image ###############################
376 377
377 TICcoordarray=cbind(coord(msidata)[,1:2], TICs) 378 TICcoordarray=cbind(coord(msidata)[,1:2], TICs)
378 colo = colorRampPalette( 379
379 c("blue", "cyan", "green", "yellow","red")) 380 print(ggplot(TICcoordarray, aes(x=x, y=y, fill=TICs))+
380 print(ggplot(TICcoordarray, aes(x=x, y=y, fill=TICs), colour=colo)+
381 geom_tile() + coord_fixed() + 381 geom_tile() + coord_fixed() +
382 ggtitle("Total Ion Chromatogram")+ 382 ggtitle("Total Ion Chromatogram")+
383 theme_bw() + 383 theme_bw() +
384 theme(plot.title = element_text(hjust = 0.5))+ 384 theme(plot.title = element_text(hjust = 0.5))+
385 theme(text=element_text(family="ArialMT", face="bold", size=12))+ 385 theme(text=element_text(family="ArialMT", face="bold", size=12))+
386 scale_fill_gradientn(colours = c("blue", "purple" , "red","orange") 386 scale_fill_gradientn(colours = c("blue", "purple" , "red","orange")
387 ,space = "Lab", na.value = "black", name = "TIC")) 387 ,space = "Lab", na.value = "black", name = "TIC"))
388
389 ############################### 6b) median int image ###############################
390
391 median_int = apply(spectra(msidata)[],2,median)
392 median_coordarray=cbind(coord(msidata)[,1:2], median_int)
393 print(ggplot(median_coordarray, aes(x=x, y=y, fill=median_int))+
394 geom_tile() + coord_fixed() +
395 ggtitle("Median intensity per pixel")+
396 theme_bw() +
397 theme(plot.title = element_text(hjust = 0.5))+
398 theme(text=element_text(family="ArialMT", face="bold", size=12))+
399 scale_fill_gradientn(colours = c("blue", "purple" , "red","orange")
400 ,space = "Lab", na.value = "black", name = "median\nintensity"))
401
388 402
389 403
390 ############################### 7) Most abundant m/z image ################# 404 ############################### 7) Most abundant m/z image #################
391 405
392 highestmz = apply(spectra(msidata)[],2,which.max) 406 highestmz = apply(spectra(msidata)[],2,which.max)
405 419
406 ########################## 8) optional pca image for two components ################# 420 ########################## 8) optional pca image for two components #################
407 421
408 #if $do_pca: 422 #if $do_pca:
409 423
424 set.seed(1)
410 pca = PCA(msidata, ncomp=2) 425 pca = PCA(msidata, ncomp=2)
411 par(mfrow = c(2,1)) 426 par(mfrow = c(2,1))
412 plot(pca, col=c("black", "darkgrey"), main="PCA for two components") 427 plot(pca, col=c("black", "darkgrey"), main="PCA for two components")
413 image(pca, col=c("black", "white"), strip=FALSE, ylim= c(maximumy+0.2*maximumy,minimumy-0.2*minimumy)) 428 image(pca, col=c("black", "white"), strip=FALSE, ylim= c(maximumy+0.2*maximumy,minimumy-0.2*minimumy))
414 429
497 hist(mz(msidata), xlab = "m/z", main="Histogram of m/z values") 512 hist(mz(msidata), xlab = "m/z", main="Histogram of m/z values")
498 513
499 ########################## 12) Number of peaks per m/z ##################### 514 ########################## 12) Number of peaks per m/z #####################
500 515
501 peakspermz = rowSums(spectra(msidata)[] > 0, na.rm=TRUE) 516 peakspermz = rowSums(spectra(msidata)[] > 0, na.rm=TRUE)
502 print(median(peakspermz/pixelcount*100))
503 517
504 par(mfrow = c(2,1), mar=c(5,6,4,4.5)) 518 par(mfrow = c(2,1), mar=c(5,6,4,4.5))
505 ## 12a) scatterplot 519 ## 12a) scatterplot
506 plot_colorByDensity(mz(msidata),peakspermz, main= "Number of peaks per m/z", ylab ="") 520 plot_colorByDensity(mz(msidata),peakspermz, main= "Number of peaks per m/z", ylab ="")
507 title(xlab="m/z", line=2.5) 521 title(xlab="m/z", line=2.5)
598 colnames(corr_matrix) = levels(msidata\$annotation) 612 colnames(corr_matrix) = levels(msidata\$annotation)
599 corr_matrix = cor(log2(corr_matrix), method= "pearson",use="complete.obs") 613 corr_matrix = cor(log2(corr_matrix), method= "pearson",use="complete.obs")
600 614
601 heatmap.parameters <- list(corr_matrix, 615 heatmap.parameters <- list(corr_matrix,
602 show_rownames = T, show_colnames = T, 616 show_rownames = T, show_colnames = T,
603 main = "Pearson correlation on mean intensities for each annotation group") 617 main = "Pearson correlation on mean intensities")
604 do.call("pheatmap", heatmap.parameters) 618 do.call("pheatmap", heatmap.parameters)
605 } 619 }
606 620
607 ################################## VI) Mass spectra and m/z accuracy ######################## 621 ################################## VI) Mass spectra and m/z accuracy ########################
608 ############################################################################ 622 ############################################################################
637 plusminusvalues = rep($plusminus_ppm/1000000, length(inputcalibrantmasses)) * inputcalibrantmasses 651 plusminusvalues = rep($plusminus_ppm/1000000, length(inputcalibrantmasses)) * inputcalibrantmasses
638 652
639 for (mass in 1:length(inputcalibrantmasses)){ 653 for (mass in 1:length(inputcalibrantmasses)){
640 654
641 ### define the plot window with xmin und xmax 655 ### define the plot window with xmin und xmax
642 minmasspixel = features(msidata_no_NA, mz=inputcalibrantmasses[mass]-1) 656 minmasspixel = features(msidata_no_NA, mz=inputcalibrantmasses[mass]-0.5)
643 maxmasspixel = features(msidata_no_NA, mz=inputcalibrantmasses[mass]+3) 657 maxmasspixel = features(msidata_no_NA, mz=inputcalibrantmasses[mass]+1.5)
644 658
645 ### find m/z with the highest mean intensity in m/z range (red line in plot 16) and calculate ppm difference for plot 17 659 ### find m/z with the highest mean intensity in m/z range (red line in plot 16) and calculate ppm difference for plot 17
646 filtered_data = msidata_no_NA[mz(msidata_no_NA) >= inputcalibrantmasses[mass]-plusminusvalues[mass] & mz(msidata_no_NA) <= inputcalibrantmasses[mass]+plusminusvalues[mass],] 660 filtered_data = msidata_no_NA[mz(msidata_no_NA) >= inputcalibrantmasses[mass]-plusminusvalues[mass] & mz(msidata_no_NA) <= inputcalibrantmasses[mass]+plusminusvalues[mass],]
647 661
648 if (nrow(filtered_data) > 0 & sum(spectra(filtered_data)) > 0){ 662 if (nrow(filtered_data) > 0 & sum(spectra(filtered_data)) > 0){
660 mzvalue = mz(msidata_no_NA)[mznumber] ### gives closest m/z 674 mzvalue = mz(msidata_no_NA)[mznumber] ### gives closest m/z
661 mzdifference2 = mzvalue - inputcalibrantmasses[mass] 675 mzdifference2 = mzvalue - inputcalibrantmasses[mass]
662 ppmdifference2 = mzdifference2/inputcalibrantmasses[mass]*1000000 676 ppmdifference2 = mzdifference2/inputcalibrantmasses[mass]*1000000
663 differencevector2[mass] = round(ppmdifference2, digits=2) 677 differencevector2[mass] = round(ppmdifference2, digits=2)
664 678
679 ## plotting of 4 spectra in one page
665 par(mfrow = c(2, 2), oma=c(0,0,2,0)) 680 par(mfrow = c(2, 2), oma=c(0,0,2,0))
681 ## average plot
666 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = 1:length(pixelnumber), main= "Average spectrum") 682 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = 1:length(pixelnumber), main= "Average spectrum")
667 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3)) 683 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3))
668 abline(v=c(maxvalue), col="red", lty=2) 684 abline(v=c(maxvalue), col="red", lty=2)
669 abline(v=c(mzvalue), col="green2", lty=4) 685 abline(v=c(mzvalue), col="green2", lty=4)
670 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = pixel1, main=paste0("Spectrum at ", rownames(coord(msidata_no_NA)[pixel1,1:2]))) 686 ## average plot including points per data point
671 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3)) 687 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = 1:length(pixelnumber), main="Average spectrum with data points")
672 abline(v=c(maxvalue), col="red", lty=2) 688 points(mz(msidata_no_NA[minmasspixel:maxmasspixel,]), rowMeans(spectra(msidata_no_NA)[minmasspixel:maxmasspixel,]), col="blue", pch=20)
673 abline(v=c(mzvalue), col="green2", lty=4) 689 ## plot of a random pixel (1)
674 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = pixel2, main= paste0("Spectrum at ", rownames(coord(msidata_no_NA)[pixel2,1:2]))) 690 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = pixel2, main= paste0("Spectrum at ", rownames(coord(msidata_no_NA)[pixel2,1:2])))
675 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3)) 691 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3))
676 abline(v=c(maxvalue), col="red", lty=2) 692 abline(v=c(maxvalue), col="red", lty=2)
677 abline(v=c(mzvalue), col="green2", lty=4) 693 abline(v=c(mzvalue), col="green2", lty=4)
694 ## plot of a random pixel (2)
678 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = pixel3, main= paste0("Spectrum at ", rownames(coord(msidata_no_NA)[pixel3,1:2]))) 695 plot(msidata_no_NA[minmasspixel:maxmasspixel,], pixel = pixel3, main= paste0("Spectrum at ", rownames(coord(msidata_no_NA)[pixel3,1:2])))
679 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3)) 696 abline(v=c(inputcalibrantmasses[mass] -plusminusvalues[count], inputcalibrantmasses[mass] ,inputcalibrantmasses[mass] +plusminusvalues[count]), col="blue", lty=c(3,5,3))
680 abline(v=c(maxvalue), col="red", lty=2) 697 abline(v=c(maxvalue), col="red", lty=2)
681 abline(v=c(mzvalue), col="green2", lty=4) 698 abline(v=c(mzvalue), col="green2", lty=4)
682 title(paste0("theor. m/z: ", round(inputcalibrants[count,1], digits=4)), col.main="blue", outer=TRUE, line=0, adj=0.074) 699 title(paste0("theor. m/z: ", round(inputcalibrants[count,1], digits=4)), col.main="blue", outer=TRUE, line=0, adj=0.074)
771 plot(0,type='n',axes=FALSE,ann=FALSE) 788 plot(0,type='n',axes=FALSE,ann=FALSE)
772 title(main=paste("plot 19: no peaks in the chosen region, repeat with higher ppm range")) 789 title(main=paste("plot 19: no peaks in the chosen region, repeat with higher ppm range"))
773 }else{ 790 }else{
774 791
775 ### plot ppm differences over pixels (spectra index) 792 ### plot ppm differences over pixels (spectra index)
776 par(mar=c(4.1, 4.1, 4.1, 7.5)) 793 par(mar=c(4.1, 4.1, 4.1, 8.5))
777 794
778 plot(0,0,type="n", ylim=c(min(ppm_df, na.rm=TRUE),max(ppm_df, na.rm=TRUE)), xlim = c(1,ncol(filtered_data)),xlab = "Spectra index", ylab = "m/z difference in ppm", main="Difference m/z with max. average intensity vs. theor. m/z\n(per spectrum)") 795 plot(0,0,type="n", ylim=c(min(ppm_df, na.rm=TRUE),max(ppm_df, na.rm=TRUE)), xlim = c(1,ncol(filtered_data)),xlab = "Spectra index", ylab = "m/z difference in ppm", main="Difference m/z with max. average intensity vs. theor. m/z\n(per spectrum)")
779 for (each_cal in 1:ncol(ppm_df)){ 796 for (each_cal in 1:ncol(ppm_df)){
780 lines(ppm_df[,each_cal], col=mycolours[each_cal], type="p")} 797 lines(ppm_df[,each_cal], col=mycolours[each_cal], type="p")}
781 legend("topright", inset=c(-0.25,0), xpd = TRUE, bty="n", legend=inputcalibrantmasses, col=mycolours[1:ncol(ppm_df)],lty=1) 798 legend("topright", inset=c(-0.2,0), xpd = TRUE, bty="n", cex=0.8,legend=inputcalibrantmasses, col=mycolours[1:ncol(ppm_df)],lty=1)
782 if (!is.null(levels(msidata\$annotation))){ 799 if (!is.null(levels(msidata\$annotation))){
783 abline(v=abline_vector, lty = 3)}} 800 abline(v=abline_vector, lty = 3)}}
784 801
785 }else{print("plot 16+17+18+19) The inputcalibrant m/z were not provided or outside the m/z range")} 802 }else{print("plot 16+17+18+19) The inputcalibrant m/z were not provided or outside the m/z range")}
786 }else{ 803 }else{
802 <expand macro="reading_pixel_annotations"/> 819 <expand macro="reading_pixel_annotations"/>
803 </when> 820 </when>
804 <when value="no_annotation"/> 821 <when value="no_annotation"/>
805 </conditional> 822 </conditional>
806 <expand macro="pdf_filename"/> 823 <expand macro="pdf_filename"/>
807 <expand macro="reading_2_column_mz_tabular"/> 824 <expand macro="reading_2_column_mz_tabular" optional="true"/>
808 <param name="plusminus_ppm" value="200" type="float" label="ppm range" help="Will be added in both directions to input calibrant m/z"/> 825 <param name="plusminus_ppm" value="200" type="float" label="ppm range" help="Will be added in both directions to input calibrant m/z"/>
809 <param name="do_pca" type="boolean" label="PCA with 2 components"/> 826 <param name="do_pca" type="boolean" label="PCA with 2 components"/>
810 <repeat name="calibrantratio" title="Plot fold change of two m/z" min="0" max="10"> 827 <repeat name="calibrantratio" title="Plot fold change of two m/z" min="0" max="10">
811 <param name="mass1" value="1111" type="float" label="M/z 1" help="First m/z"/> 828 <param name="mass1" value="1111" type="float" label="M/z 1" help="First m/z"/>
812 <param name="mass2" value="2222" type="float" label="M/z 2" help="Second m/z"/> 829 <param name="mass2" value="2222" type="float" label="M/z 2" help="Second m/z"/>
853 <test> 870 <test>
854 <expand macro="infile_analyze75"/> 871 <expand macro="infile_analyze75"/>
855 <conditional name="tabular_annotation"> 872 <conditional name="tabular_annotation">
856 <param name="load_annotation" value="no_annotation"/> 873 <param name="load_annotation" value="no_annotation"/>
857 </conditional> 874 </conditional>
858 <param name="calibrant_file" value="inputcalibrantfile2.txt"/>
859 <param name="mz_column" value="1"/>
860 <param name="name_column" value="2"/>
861 <param name="filename" value="Testfile_analyze75"/> 875 <param name="filename" value="Testfile_analyze75"/>
862 <param name="do_pca" value="True"/> 876 <param name="do_pca" value="True"/>
863 <output name="QC_report" file="QC_analyze75.pdf" compare="sim_size"/> 877 <output name="QC_report" file="QC_analyze75.pdf" compare="sim_size"/>
864 </test> 878 </test>
865 879
944 - (FC) Control of fold change plot: For both input m/z a zoomed in average spectrum is drawn with the input m/z as blue dashed line, the m/z range as blue dotted lines and the maximum intensity in the m/z window with a red line. 958 - (FC) Control of fold change plot: For both input m/z a zoomed in average spectrum is drawn with the input m/z as blue dashed line, the m/z range as blue dotted lines and the maximum intensity in the m/z window with a red line.
945 - (FC) Fold change image: For each spectrum the intensities of the two optimal m/z features (red lines in control plots) are divided and log2 transformed to obtain the fold change, which is then plotted as a heatmap. 959 - (FC) Fold change image: For each spectrum the intensities of the two optimal m/z features (red lines in control plots) are divided and log2 transformed to obtain the fold change, which is then plotted as a heatmap.
946 - (cal) Intensity heatmaps for the m/z value that is closest to the calibrant m/z. The intensities are averaged within the calibrant m/z window (ppm range). 960 - (cal) Intensity heatmaps for the m/z value that is closest to the calibrant m/z. The intensities are averaged within the calibrant m/z window (ppm range).
947 - Number of peaks per spectrum: For each spectrum the number of m/z values with intensity > 0 is calculated and plotted as heatmap. 961 - Number of peaks per spectrum: For each spectrum the number of m/z values with intensity > 0 is calculated and plotted as heatmap.
948 - Total ion chromatogram: For each spectrum all intensities are summed up to obtain the TIC which is plotted as heatmap. 962 - Total ion chromatogram: For each spectrum all intensities are summed up to obtain the TIC which is plotted as heatmap.
963 - Median intensity: For each spectrum the median intensity is plotted as heatmap.
949 - Most abundant m/z in each spectrum: For each spectrum the m/z value with the highest intensity is plotted. 964 - Most abundant m/z in each spectrum: For each spectrum the m/z value with the highest intensity is plotted.
950 - PCA for two components: Result of a principal component analysis (PCA) for two components is given. The loading plot depicts the contribution of each m/z value and the x-y image represents the differences between the pixels. 965 - PCA for two components: Result of a principal component analysis (PCA) for two components is given. The loading plot depicts the contribution of each m/z value and the x-y image represents the differences between the pixels.
951 966
952 **Properties over spectra/pixels** 967 **Properties over spectra/pixels**
953 968
971 - (annot) Pearson correlation between annotation groups based on mean intensities and shown as heatmap. 986 - (annot) Pearson correlation between annotation groups based on mean intensities and shown as heatmap.
972 987
973 **Mass spectra and m/z accuracy** 988 **Mass spectra and m/z accuracy**
974 989
975 - Mass spectra over the full m/z range: First plot shows the average intensities over all spectra. The other three mass spectra are from random individual pixels (spectra). 990 - Mass spectra over the full m/z range: First plot shows the average intensities over all spectra. The other three mass spectra are from random individual pixels (spectra).
976 - (cal) For each calibrant four zoomed in mass spectrum are drawn: The first shows the average intensities over all spectra and the other three are single mass spectra. The theoretical calibrant m/z (taken from the input file) is represented by the dashed blue line. The dotted blue lines show the given ppm range. The green line is the m/z value that is closest to the theoretical calibrant and the red line is the m/z with the highest average intensity in the m/z window. 991 - (cal) For each calibrant four zoomed in mass spectrum are drawn: The first two mass spectra show the average intensities over all spectra and the other two specra are from random individual pixels. The theoretical calibrant m/z (taken from the input file) is represented by the dashed blue line. The dotted blue lines show the given ppm range. The green line is the m/z value that is closest to the theoretical calibrant and the red line is the m/z with the highest average intensity in the m/z window. In the second average spectra plot each blue plot indicates one data point.
977 - (annot) Average spectrum per annotation group: For each calibrant a zoomed in mass spectrum is plotted this time with the average intensities for each annotation group separately. 992 - (annot) Average spectrum per annotation group: For each calibrant a zoomed in mass spectrum is plotted this time with the average intensities for each annotation group separately.
978 - (cal) Difference m/z with max. average intensity vs. theor. calibrant m/z: The difference in ppm between the m/z with the highest average intensity and the theoretical m/z are plotted for each calibrant. This corresponds to the difference between the dashed blue line and the red line in the zoomed in mass spectra. 993 - (cal) Difference m/z with max. average intensity vs. theor. calibrant m/z: The difference in ppm between the m/z with the highest average intensity and the theoretical m/z are plotted for each calibrant. This corresponds to the difference between the dashed blue line and the red line in the zoomed in mass spectra.
979 - (cal) Difference closest measured m/z vs. theor. calibrant m/z: The difference in ppm between the closest m/z value and the theoretical m/z values are plotted for each calibrant. This corresponds to the difference between the dashed blue line and the green line in the zoomed in mass spectra. 994 - (cal) Difference closest measured m/z vs. theor. calibrant m/z: The difference in ppm between the closest m/z value and the theoretical m/z values are plotted for each calibrant. This corresponds to the difference between the dashed blue line and the green line in the zoomed in mass spectra.
980 - (cal) Difference m/z with max. average intensity vs. theor. m/z (per spectrum): For each spectrum the ppm difference between the m/z with the highest average intensity and the theoretical m/z are plotted. The calibrants have different plotting colours. Dashed lines separate spectra of different annotation groups. 995 - (cal) Difference m/z with max. average intensity vs. theor. m/z (per spectrum): For each spectrum the ppm difference between the m/z with the highest average intensity and the theoretical m/z are plotted. The calibrants have different plotting colours. Dashed lines separate spectra of different annotation groups.
981 996