How are raw p-values calculated in MetaboAnalyst and why are they different to Excel?

Hi, We have noticed that raw p-values calculated in MetaboAnalyst are different than those calculated in excel (T-test) for the same data, using the same parameters (un-equal variance etc). The differences are more pronounced in cases when one group has a constant value (for example zero). We have checked using data with no missing values to remove potential differences in missing value imputation as well as checking different data normalisation options (including none). We know from a previous thread that the R command history shows the steps taken to calculate the p-values, however it does not give details. Please can you comment on the calculation of p-values in MetaboAnalyst and if some additional adjustment of the raw p-value is made that is not considered by excel.

Please refer to our post guideline for such question. Here are some general comments:

For t-tests, make sure the input is the identical. MetaboAnalyst contains multiple steps for data processing & normalization steps - you can see the R command history below. You can get source code underlying these R functions from our MetaboAnalystR.

1.	mSet<-InitDataObjects("conc", "stat", FALSE, 150)
2.	mSet<-Read.TextData(mSet, "Replacing_with_your_file_path", "rowu", "disc");
3.	mSet<-SanityCheckData(mSet)
4.	mSet<-PerformSanityClosure (mSet);
5.	mSet<-CheckContainsBlank(mSet)
6.	mSet<-PreparePrenormData(mSet)
7.	mSet<-Normalization(mSet, "NULL", "LogNorm", "AutoNorm", ratio=FALSE, ratioNum=20)
8.	mSet<-PlotNormSummary(mSet, "norm_0_", "png", 150, width=NA)
9.	mSet<-PlotSampleNormSummary(mSet, "snorm_0_", "png", 150, width=NA)
10.	mSet<-Ttests.Anal(mSet, F, 0.05, FALSE, TRUE, "fdr", FALSE)