Solution 1

You have identified the pairs by giving them the same sample name (Pair_N).

For each pair, the first injection is always the unspiked sample and the second injection is the spiked one.

You always have a spike added concentration of 10.

Custom Calculation

  • Scope: Peak or Group

  • Type: Double

  • Formula:

    IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName(Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName(Sample_Name)).First().Compound_Amount)/10*100, "")

Explanation of the formula:

Part of equation (highlighted)

Description

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

No value is returned if Sample_Name does not start with "Pair".

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

Returns a list of "matching" peaks in a given list

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

MatchOption.Compound means that matching peaks or groups are selected by their compound names. So, it returns the list of peaks or groups with the same compound name as the current one

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

The MatchingPeaks are searched in the list of injections that have the same name as the current one. Here we identify the "pairs" of injections.

Here we have a list of 2 peaks or groups corresponding to the 2 ones present in the “pairs” of injections.

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

The last item of the list is selected. Here it is the peak or group in Spiked Injection

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

Returns the Compound_Amount in the spiked injection

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

Returns the Compound_Amount in the unspiked injection

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

10 is the spike added concentration

IF(Sample_Name like "Pair*", (AllMatchingPeaksAndGroups( MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).Last().Compound_Amount - AllMatchingPeaksAndGroups(MatchOption.Compound, CurrentSequence.AllInjectionsBySampleName( Sample_Name)).First().Compound_Amount)/10*100, "")

*100 to have a result in percentage