Open timosachsenberg opened 1 year ago
I dug a bit deeper into it and this is vendor dependent. Vor Bruker we can use these calculations/constants: https://github.com/MannLabs/alphabase/blob/main/alphabase/constants/const_files/common_constants.yaml#L4-L9 https://github.com/MannLabs/alphabase/blob/81db1ba243694f5de40d40073d095211a309f73f/alphabase/peptide/mobility.py#L10-L25
If I apply this to 1/k0 (VSSC) values I get CCS values in the range 200-800.
void convertVSSCToCCS(MSExperiment& spectra)
{
OPENMS_LOG_INFO << "Converting 1/k0 to CCS values." << std::endl;
const double bruker_CCS_coef = 1059.62245; // constant coefficient for Bruker in the Mason-Schamp equation
const double IM_N2_gas_mass = 28;
for (auto& s : spectra)
{
double IM = s.getDriftTime();
double mz = s.getPrecursors()[0].getMZ();
double charge = s.getPrecursors()[0].getCharge();
double mass = mz * charge;
double reduced_mass = mass * IM_N2_gas_mass / (mass + IM_N2_gas_mass);
double CCS = IM * charge * bruker_CCS_coef / std::sqrt(reduced_mass); // Mason-Schamp equation
s.setDriftTime(CCS);
}
}
k I was able to confirm this with alpha and MaxQuant output. I think this could be added specifically for bruker data
@cbielow
Hello @timosachsenberg,
From this PR https://github.com/OpenMS/OpenMS/pull/6941 does that mean we got the drift time Ion Mobility from get_ion_df
and would need to compute the formula above to get the CCS ?
If yes I can do another PR to add a column to get the IM and the CCS (as the later is more comparable across machines and experiments).
Yes this is correct. I think this is a sensible addition but I don’t know how non-bruker IM data would need to be converted. @jcharkow can you comment here?
I think this sounds reasonable. I am not too familiar with getting CCS for other instruments. I think that sometimes CCS is computed with internal calibrants with known CCS values? However usually I just work with the 1/k0 values.
Currently, we only have a DriftTimeType VCCS (==1/k0). It seems to be common to convert 1/k0 to CCS using the formula:
CCS=((2*pi/(((mz*charge)*28.0134/(mz*charge+28.0134)*1.66053904*(10^(-27)))*1.38064852*(10^(-23))*(305)))^0.5)*(IM*1.6021766208*(10^(-19))/(2.6867811*(10^25)))*3/16*10000*(10^20)*charge)
Can/how should we store this?