Skip to content

Commit 5ce923d

Browse files
committed
linker parameter added (CXL)
1 parent ab55ba5 commit 5ce923d

11 files changed

+79
-42
lines changed

CrossLinker/nbproject/private/private.xml

+12-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,17 @@
3838
<file>file:/C:/Umich/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/PeakPairFinder.java</file>
3939
<file>file:/C:/Umich/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/PrecursorCrossPepFinder.java</file>
4040
</group>
41-
<group name="DIA-Umpire_Release"/>
41+
<group name="DIA-Umpire_Release">
42+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/crosslinker/Linker.java</file>
43+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/Exec/CrossLinkerDetection.java</file>
44+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/crosslinker/FragmentPair.java</file>
45+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/PrecursorCrossPepFinder.java</file>
46+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/MS2PeakPairFinder.java</file>
47+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/PeakPairFinder.java</file>
48+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/crosslinker/CrossLinkerHandler.java</file>
49+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/CrosslinkerPepFinder.java</file>
50+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/CXL_PeakPairFinder/CXL_MALDI.java</file>
51+
<file>file:/C:/Users/Cct/Documents/GitHub/DIA-Umpire/CrossLinker/src/crosslinker/CrossLinkerScanResult.java</file>
52+
</group>
4253
</open-files>
4354
</project-private>

CrossLinker/src/CXL_PeakPairFinder/CXL_MALDI.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import MSUmpire.PeptidePeakClusterDetection.PDHandlerMS1;
1313
import MSUmpire.SpectrumParser.MALDIDataParser;
1414
import MSUmpire.Utility.ConsoleLogger;
15+
import crosslinker.Linker;
1516
import java.io.FileWriter;
1617
import java.io.IOException;;
1718
import java.util.ArrayList;
@@ -37,6 +38,7 @@ public static void main(String[] args) throws IOException, InterruptedException,
3738
int NoCPUs=10;
3839
InstrumentParameter parameter=null;
3940
LCMSPeakBase lCMSPeakBase = null;
41+
Linker linker=new Linker();
4042
parameter = new InstrumentParameter(InstrumentParameter.InstrumentType.MALDI);
4143
MALDIDataParser parser = new MALDIDataParser(FilePath);
4244
parser.cycletime = 120f / 576f;
@@ -67,7 +69,7 @@ public static void main(String[] args) throws IOException, InterruptedException,
6769
//detection.DetectSingleMZTraces(scans);
6870
//lCMSPeakBase.ExportPeakCurveResult();
6971

70-
CrosslinkerPepFinder finder = new CrosslinkerPepFinder(lCMSPeakBase,0f);
72+
CrosslinkerPepFinder finder = new CrosslinkerPepFinder(lCMSPeakBase,0f,linker);
7173
lCMSPeakBase.parameter.MS1PPM=200;
7274
lCMSPeakBase.parameter.RTtol=1f;
7375
finder.FindAllPairPeaks(NoCPUs);

CrossLinker/src/CXL_PeakPairFinder/CrosslinkerPepFinder.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
*/
55
package CXL_PeakPairFinder;
66

7-
import MSUmpire.BaseDataStructure.InstrumentParameter;
87
import MSUmpire.BaseDataStructure.XYData;
98
import MSUmpire.LCMSPeakStructure.LCMSPeakBase;
109
import MSUmpire.PeakDataStructure.PeakCluster;
1110
import MSUmpire.SpectralProcessingModule.ScanPeakGroup;
11+
import crosslinker.Linker;
1212
import java.util.ArrayList;
1313
import java.util.concurrent.ExecutorService;
1414
import java.util.concurrent.Executors;
@@ -27,9 +27,11 @@ public class CrosslinkerPepFinder {
2727
public ArrayList<PrecursorCrossPepFinder> IntactPepList;
2828
public ArrayList<MS2PeakPairFinder> IntactPepListMS2;
2929
public float medianIntensity=-1f;
30-
public CrosslinkerPepFinder(LCMSPeakBase LCMSPeakBase,float medianIntensity) {
30+
Linker linker;
31+
public CrosslinkerPepFinder(LCMSPeakBase LCMSPeakBase,float medianIntensity, Linker linker) {
3132
this.LCMSPeakBase = LCMSPeakBase;
3233
this.medianIntensity=medianIntensity;
34+
this.linker=linker;
3335
}
3436

3537
public void FindPairPeakMS2(ArrayList<ScanPeakGroup> MS2PeakGroups, int NoCPUs) {
@@ -41,7 +43,7 @@ public void FindPairPeakMS2(ArrayList<ScanPeakGroup> MS2PeakGroups, int NoCPUs)
4143
IntactPepListMS2 = new ArrayList<>();
4244
//For each scan
4345
for (ScanPeakGroup scan : MS2PeakGroups) {
44-
MS2PeakPairFinder finder = new MS2PeakPairFinder(scan, LCMSPeakBase.parameter);
46+
MS2PeakPairFinder finder = new MS2PeakPairFinder(scan, LCMSPeakBase.parameter, linker);
4547
executorPool.execute(finder);
4648
//finder.run();
4749
IntactPepListMS2.add(finder);
@@ -71,7 +73,7 @@ public void FindAllPairPeaks(int NoCPUs) {
7173
for (int i = 0; i < LCMSPeakBase.PeakClusters.size(); i++) {
7274
PeakCluster peakCluster = LCMSPeakBase.PeakClusters.get(i);
7375
if (peakCluster.NeutralMass() >= mzRange.getX() && peakCluster.NeutralMass() <= mzRange.getY()) {
74-
PeakPairFinder unit = new PeakPairFinder(peakCluster, LCMSPeakBase.GetPeakClusterMassSearchTree(), LCMSPeakBase.parameter);
76+
PeakPairFinder unit = new PeakPairFinder(peakCluster, LCMSPeakBase.GetPeakClusterMassSearchTree(), LCMSPeakBase.parameter, linker);
7577
templist.add(unit);
7678
executorPool.execute(unit);
7779
}
@@ -102,7 +104,7 @@ public void FindAllPairPeaks(int NoCPUs) {
102104
//For any two peak pairs, check if they co-elute together (RT diff < RTtol)
103105
if (lowmass.lowMassPeak.NeutralMass()<=highmass.lowMassPeak.NeutralMass()
104106
&& Math.abs(lowmass.lowMassPeak.PeakHeightRT[0] - highmass.lowMassPeak.PeakHeightRT[0]) < LCMSPeakBase.parameter.RTtol) {
105-
PrecursorCrossPepFinder intactLinkedPep = new PrecursorCrossPepFinder(lowmass, highmass, LCMSPeakBase.GetPeakClusterMassSearchTree(), LCMSPeakBase.parameter);
107+
PrecursorCrossPepFinder intactLinkedPep = new PrecursorCrossPepFinder(lowmass, highmass, LCMSPeakBase.GetPeakClusterMassSearchTree(), LCMSPeakBase.parameter, linker);
106108
IntactPepList.add(intactLinkedPep);
107109
executorPool.execute(intactLinkedPep);
108110
}

CrossLinker/src/CXL_PeakPairFinder/MS2PeakPairFinder.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import MSUmpire.BaseDataStructure.InstrumentParameter;
2323
import MSUmpire.SpectralProcessingModule.IsotopePeakGroup;
2424
import MSUmpire.SpectralProcessingModule.ScanPeakGroup;
25-
import crosslinker.DC4;
25+
import crosslinker.Linker;
2626
import java.util.ArrayList;
2727
import net.sf.javaml.core.kdtree.KDTree;
2828
import net.sf.javaml.core.kdtree.KeyDuplicateException;
@@ -37,6 +37,7 @@ public class MS2PeakPairFinder implements Runnable {
3737

3838
public ScanPeakGroup ScanPeak;
3939
InstrumentParameter parameter;
40+
Linker linker;
4041
private KDTree PeakClusterKDTree;
4142
public ArrayList<PairGroupMS2> PeakPairGroupList;
4243
public ArrayList<PeakPair> peakPairs = new ArrayList<>();
@@ -77,9 +78,10 @@ private IsotopePeakGroup FindTargetMWPeak(IsotopePeakGroup peakCluster, float ta
7778
return BestPeak;
7879
}
7980

80-
public MS2PeakPairFinder(ScanPeakGroup ScanPeak, InstrumentParameter parameter) {
81+
public MS2PeakPairFinder(ScanPeakGroup ScanPeak, InstrumentParameter parameter, Linker linker) {
8182
this.ScanPeak = ScanPeak;
8283
this.parameter = parameter;
84+
this.linker=linker;
8385
}
8486

8587

@@ -106,9 +108,9 @@ public void run() {
106108
IsotopePeakGroup PeakCluster = ScanPeak.peakGroupList.get(i);
107109
PairGroupMS2 Pairgroup = new PairGroupMS2(PeakCluster);
108110
//Calculate MW of peak pair
109-
float pairmw = PeakCluster.NeutralMass() + DC4.DABCO;
111+
float pairmw = PeakCluster.NeutralMass() + linker.Core;
110112
Pairgroup.HighMassPeak = FindTargetMWPeak(PeakCluster,pairmw);
111-
float DeadEndpairMW = PeakCluster.NeutralMass() + DC4.DABCO + DC4.H2O + DC4.Arm;
113+
float DeadEndpairMW = PeakCluster.NeutralMass() + linker.Core + linker.H2O + linker.Arm;
112114
Pairgroup.DeadEndpairs = FindTargetMWPeak(PeakCluster,DeadEndpairMW);
113115
PeakPairGroupList.add(Pairgroup);
114116
}
@@ -121,7 +123,7 @@ public void run() {
121123
PairGroupMS2 highmass = PeakPairGroupList.get(j);
122124
if (lowmass.LowMassPeak.NeutralMass() <= highmass.LowMassPeak.NeutralMass()) {
123125

124-
float IntactMW = lowmass.LowMassPeak.NeutralMass() + highmass.LowMassPeak.NeutralMass() + DC4.DABCO;
126+
float IntactMW = lowmass.LowMassPeak.NeutralMass() + highmass.LowMassPeak.NeutralMass() + linker.Core;
125127

126128
//Check if the precursor mass value of the MS2 spectrum is the summation of MW values of low and high peak pairs
127129
//If yes, then the two peak pairs are potentially crosslinking peptides

CrossLinker/src/CXL_PeakPairFinder/PeakPairFinder.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import MSUmpire.BaseDataStructure.InstrumentParameter;
2323
import MSUmpire.PeakDataStructure.PeakCluster;
2424
import MSUmpire.PeptidePeakClusterDetection.PeakCurveCorrCalc;
25-
import crosslinker.DC4;
25+
import crosslinker.Linker;
2626
import java.io.IOException;
2727
import java.util.HashMap;
2828
import net.sf.javaml.core.kdtree.KDTree;
@@ -37,15 +37,17 @@ public class PeakPairFinder implements Runnable {
3737

3838
private PeakCluster TargetPeak;
3939
InstrumentParameter parameter;
40+
Linker linker;
4041
private final KDTree PeakClusterKDTree;
4142
float lowrt = 0f;
4243
float highrt = 0f;
4344
public PairGroup pairgroup;
4445

45-
public PeakPairFinder(PeakCluster peakClusterA, KDTree PeakClusterKDTree, InstrumentParameter parameter) {
46+
public PeakPairFinder(PeakCluster peakClusterA, KDTree PeakClusterKDTree, InstrumentParameter parameter, Linker linker) {
4647
this.TargetPeak = peakClusterA;
4748
this.PeakClusterKDTree = PeakClusterKDTree;
4849
this.parameter = parameter;
50+
this.linker=linker;
4951
lowrt = peakClusterA.PeakHeightRT[0] - parameter.RTtol;
5052
if (lowrt < 0) {
5153
lowrt = 0f;
@@ -55,13 +57,13 @@ public PeakPairFinder(PeakCluster peakClusterA, KDTree PeakClusterKDTree, Instru
5557

5658
@Override
5759
public void run() {
58-
//linked pair : x + DC4.DABCO
60+
//linked pair : x + Linker.Core
5961
pairgroup=new PairGroup(TargetPeak);
6062

6163
//calculate MW of peak pair
62-
float pairmw= TargetPeak.NeutralMass()+DC4.DABCO;
64+
float pairmw= TargetPeak.NeutralMass()+linker.Core;
6365
pairgroup.highMassPeak=FindTargetMWPeak(pairmw);
64-
float DeadEndpairMW = TargetPeak.NeutralMass()+ DC4.DABCO + DC4.H2O + DC4.Arm;
66+
float DeadEndpairMW = TargetPeak.NeutralMass()+ linker.Core + linker.H2O + linker.Arm;
6567
pairgroup.DeadEndpairs=FindTargetMWPeak(DeadEndpairMW);
6668
}
6769

CrossLinker/src/CXL_PeakPairFinder/PrecursorCrossPepFinder.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import MSUmpire.BaseDataStructure.InstrumentParameter;
1010
import MSUmpire.PeakDataStructure.PeakCluster;
1111
import MSUmpire.PeptidePeakClusterDetection.PeakCurveCorrCalc;
12-
import crosslinker.DC4;
12+
import crosslinker.Linker;
1313
import java.io.IOException;
1414
import java.util.HashMap;
1515
import net.sf.javaml.core.kdtree.KDTree;
@@ -29,17 +29,19 @@ public class PrecursorCrossPepFinder implements Runnable{
2929
public float MaxHighMassPeakCorr=0f;
3030
public float LowHighPeakCorr=0f;
3131
private float PrecCorssPeakPPM=1000f;
32+
Linker linker;
3233
private InstrumentParameter parameter;
3334
float lowrt = 0f;
3435
float highrt = 0f;
3536
private final KDTree PeakClusterSearchTree;
3637
private CoElutePeak BestPrecursorPeak=null;
3738

38-
public PrecursorCrossPepFinder(PairGroup LowMassPeak, PairGroup HighMassPeak, KDTree PeakClusterSearchTree, InstrumentParameter parameter){
39+
public PrecursorCrossPepFinder(PairGroup LowMassPeak, PairGroup HighMassPeak, KDTree PeakClusterSearchTree, InstrumentParameter parameter, Linker linker){
3940
this.LowMassPeakGroup=LowMassPeak;
4041
this.HighMassPeakGroup=HighMassPeak;
4142
this.PeakClusterSearchTree=PeakClusterSearchTree;
4243
this.parameter=parameter;
44+
this.linker=linker;
4345
try {
4446
LowHighPeakCorr = PeakCurveCorrCalc.CalPeakCorr(LowMassPeak.lowMassPeak.MonoIsotopePeak, HighMassPeak.lowMassPeak.MonoIsotopePeak, parameter.NoPeakPerMin);
4547
if (Float.isNaN(LowHighPeakCorr)) {
@@ -53,7 +55,7 @@ public PrecursorCrossPepFinder(PairGroup LowMassPeak, PairGroup HighMassPeak, KD
5355
highrt = Math.min(LowMassPeak.lowMassPeak.PeakHeightRT[0],HighMassPeak.lowMassPeak.PeakHeightRT[0]) + parameter.RTtol;
5456
}
5557
public void FindPrecursorCrossPeak(){
56-
float IntactMW = LowMassPeakGroup.lowMassPeak.NeutralMass()+HighMassPeakGroup.lowMassPeak.NeutralMass()+DC4.DABCO;
58+
float IntactMW = LowMassPeakGroup.lowMassPeak.NeutralMass()+HighMassPeakGroup.lowMassPeak.NeutralMass()+linker.Core;
5759

5860
float lowMW = InstrumentParameter.GetMzByPPM(IntactMW, 1, parameter.MS1PPM);
5961
float highMW = InstrumentParameter.GetMzByPPM(IntactMW, 1, -parameter.MS1PPM);

CrossLinker/src/Exec/CrossLinkerDetection.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import MSUmpire.SpectralProcessingModule.ScanIsotopePeakDetectionThread;
1818
import MSUmpire.SpectralProcessingModule.ScanPeakGroup;
1919
import MSUmpire.Utility.ConsoleLogger;
20+
import crosslinker.Linker;
2021
import java.io.BufferedReader;
2122
import java.io.FileNotFoundException;
2223
import java.io.FileReader;
@@ -63,6 +64,7 @@ public static void main(String[] args) throws IOException, InterruptedException,
6364
Logger logger = Logger.getRootLogger();
6465

6566
InstrumentParameter parameter = null;
67+
Linker linker=new Linker();
6668
parameter = new InstrumentParameter(InstrumentParameter.InstrumentType.Orbitrap);
6769
parameter.MS1PPM = 20;
6870
parameter.MS2PPM = 600f;
@@ -256,6 +258,14 @@ public static void main(String[] args) throws IOException, InterruptedException,
256258
parameter.MS2Pairing = Boolean.parseBoolean(value);
257259
break;
258260
}
261+
case "CXL.CoreMass":{
262+
linker.Core=Float.parseFloat(value);
263+
break;
264+
}
265+
case "CXL.ArmMass":{
266+
linker.Arm=Float.parseFloat(value);
267+
break;
268+
}
259269

260270
//</editor-fold>//</editor-fold>
261271
}
@@ -329,7 +339,7 @@ public static void main(String[] args) throws IOException, InterruptedException,
329339
}
330340

331341
//Initialize crosslinker peak pair finder
332-
CrosslinkerPepFinder finder = new CrosslinkerPepFinder(lCMSPeakBase, medianIntensity);
342+
CrosslinkerPepFinder finder = new CrosslinkerPepFinder(lCMSPeakBase, medianIntensity, linker);
333343

334344
//Find all peak pairs
335345
finder.FindAllPairPeaks(NoCPUs);

CrossLinker/src/Exec/cxl.params

+4
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ SE.MassDefectFilter=true
1919
SE.DetectSameChargePairOnly=true
2020
SE.MS2Pairing=true
2121
SE.MS2PairTopN=5
22+
23+
#CXL linker
24+
CXL.CoreMass = 112.0995
25+
CXL.ArmMass = 68

CrossLinker/src/crosslinker/CrossLinkerHandler.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class CrossLinkerHandler {
2323

2424
public HashMap<String, MALDI_Spot> ResultMap = new HashMap<>();
2525
public ArrayList<CrossLinkerPep> CrossLinkingPeps = new ArrayList<>();
26+
public Linker linker;
2627

2728
private void ReadFile(File folder) throws IOException {
2829
File[] listOfFiles = folder.listFiles();
@@ -40,15 +41,15 @@ private void ReadFile(File folder) throws IOException {
4041
Scan.MsLevel = 2;
4142
Scan.MGFTitle = Scan.MGFTitle.split("_")[Scan.MGFTitle.split("_").length - 2];
4243
Scan.Normalization();
43-
CrossLinkerScanResult scanresult = new CrossLinkerScanResult(Scan);
44+
CrossLinkerScanResult scanresult = new CrossLinkerScanResult(Scan,linker);
4445
Results.add(scanresult);
4546
}
4647
} else if (files.toLowerCase().endsWith(".pkl")) {
4748
PKLScanParser pkl = new PKLScanParser(folder + "/" + files);
4849
pkl.scan.MsLevel = 1;
4950
pkl.scan.MGFTitle = pkl.scan.MGFTitle.split("_")[pkl.scan.MGFTitle.split("_").length - 2];
5051
pkl.scan.Normalization();
51-
CrossLinkerScanResult scanresult = new CrossLinkerScanResult(pkl.scan);
52+
CrossLinkerScanResult scanresult = new CrossLinkerScanResult(pkl.scan,linker);
5253
Results.add(scanresult);
5354
}
5455
} else {

0 commit comments

Comments
 (0)