Skip to content

Commit

Permalink
Improve.
Browse files Browse the repository at this point in the history
  • Loading branch information
fcyu committed Jan 17, 2016
1 parent fa4384d commit c14c853
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 71 deletions.
8 changes: 4 additions & 4 deletions src/main/java/proteomics/Math/CalScore.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@

public class CalScore {

private float[][] alignment_matrix = null;
private double[][] alignment_matrix = null;

public CalScore(float[][] exp_matrix, float[] theo_vector, float ms2_tolerance) {
alignment_matrix = new float[2][exp_matrix[0].length + theo_vector.length];
alignment_matrix = new double[2][exp_matrix[0].length + theo_vector.length];

int start = 0;
int idx = 0;
Expand All @@ -32,8 +32,8 @@ public CalScore(float[][] exp_matrix, float[] theo_vector, float ms2_tolerance)
}
}

public float cal_dot_product() {
float dot_value = 0;
public double cal_dot_product() {
double dot_value = 0;
for (int i = 0; i < alignment_matrix[0].length; ++i) {
dot_value += alignment_matrix[1][i];
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/proteomics/Search/FinalResultEntry.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ public class FinalResultEntry implements Comparable<FinalResultEntry> {
public int rank = 0;
public int charge = 0;
public float spectrum_precursor_mz = 0;
public float abs_ppm = 0;
public float ppm = 0;
public double score = 0;
public double delta_score = 0;
public String seq_1 = null;
Expand All @@ -22,12 +22,12 @@ public class FinalResultEntry implements Comparable<FinalResultEntry> {
public int C13_correction = 0;
public float qvalue = 0;

public FinalResultEntry(int spectrum_id, int rank, int charge, float spectrum_precursor_mz, float abs_ppm, double score, double delta_score, String seq_1, int link_site_1, String mod_1, String pro_id_1, String seq_2, int link_site_2, String mod_2, String pro_id_2, String cl_type, String type, int C13_correction, float qvalue) {
public FinalResultEntry(int spectrum_id, int rank, int charge, float spectrum_precursor_mz, float ppm, double score, double delta_score, String seq_1, int link_site_1, String mod_1, String pro_id_1, String seq_2, int link_site_2, String mod_2, String pro_id_2, String cl_type, String type, int C13_correction, float qvalue) {
this.spectrum_id = spectrum_id;
this.rank = rank;
this.charge = charge;
this.spectrum_precursor_mz= spectrum_precursor_mz;
this.abs_ppm = abs_ppm;
this.ppm = ppm;
this.score = score;
this.delta_score = delta_score;
this.seq_1 = seq_1;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/proteomics/Search/ResultEntry.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,19 @@ public class ResultEntry {

public String chain_seq_1 = "";
public String chain_seq_2 = "";
public float abs_ppm = 0;
public float ppm = 0;
public double score = 0;
public double second_score = 0;
public int link_site_1 = 0;
public int link_site_2 = 0;
public int C13_correction = 0;

public ResultEntry(String chain_seq_1, String chain_seq_2, int link_site_1, int link_site_2, float abs_ppm, double score, double second_score, int C13_correction) {
public ResultEntry(String chain_seq_1, String chain_seq_2, int link_site_1, int link_site_2, float ppm, double score, double second_score, int C13_correction) {
this.chain_seq_1 = chain_seq_1;
this.chain_seq_2 = chain_seq_2;
this.link_site_1 = link_site_1;
this.link_site_2 = link_site_2;
this.abs_ppm = abs_ppm;
this.ppm = ppm;
this.score = score;
this.second_score = second_score;
this.C13_correction = C13_correction;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/proteomics/Search/SemiPSM.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@

public class SemiPSM {
public int scan_num = 0;
public float dot_product = 0;
public double dot_product = 0;
public int ion_num = 0;
public int link_site = 0;
public String chain_seq = "";
public int C13_correction = 0;

public SemiPSM(int scan_num, float dot_product, int ion_num, int link_site, String chain_seq, int C13_correction) {
public SemiPSM(int scan_num, double dot_product, int ion_num, int link_site, String chain_seq, int C13_correction) {
this.scan_num = scan_num;
this.dot_product = dot_product;
this.ion_num = ion_num;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/proteomics/Spectrum/PreSpectrum.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public class PreSpectrum {

private static final float PROTON_MASS = 1.00727646688f;
private static final float DEFAULT_INTENSITY = 1; // DO NOT change. Otherwise, change CalScore accordingly.
private static final float DEFAULT_INTENSITY = 100; // DO NOT change. Otherwise, change score calculation accordingly.
private static final float FLOAT_ZERO = 1e-6f;

public static float[][] preProcessSpec(Map<Double, Double> peaks_map, float precursor_mass, int precursor_charge, float ms2_tolerance, float max_mz) {
Expand All @@ -16,9 +16,9 @@ public static float[][] preProcessSpec(Map<Double, Double> peaks_map, float prec
TreeMap<Float, Float> denoised_pl_map = deNoise(new TreeMap<>(temp.subMap(0f, true, max_mz, true)));

// normalize
TreeMap<Float, Float> normzlized_pl_map = normalizeSpec(denoised_pl_map);
TreeMap<Float, Float> normalized_pl_map = normalizeSpec(denoised_pl_map);

return prepareScore(normzlized_pl_map);
return prepareScore(normalized_pl_map);
}

private static TreeMap<Float, Float> removePrecursorPeak(Map<Double, Double> peak_map, float precursor_mass, int precursor_charge, float ms2_tolerance) {
Expand Down Expand Up @@ -134,7 +134,7 @@ private static TreeMap<Float, Float> normalizeSpec(TreeMap<Float, Float> pl_map)
Float[] intensity_array = sub_map.values().toArray(new Float[sub_map.size()]);
Arrays.sort(intensity_array);
float temp_1 = DEFAULT_INTENSITY / intensity_array[intensity_array.length - 1];
float temp_2 = (float) 0.05 * intensity_array[intensity_array.length - 1];
float temp_2 = 5;
for (float mz : sub_map.keySet()) {
if (sub_map.get(mz) > temp_2) {
windowed_pl_map.put(mz, sub_map.get(mz) * temp_1);
Expand Down
88 changes: 33 additions & 55 deletions src/main/java/proteomics/Validation/CalFDR.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,64 +5,46 @@

public class CalFDR {

private static final float MAX_SCORE = 1;
private static final float PRECISION = 0.001f;
private static final int BIN_NUM = 1000;
private static final float DELTA_SCORE_T = 0.95f;

private float[] qvalue_array = null;
private List<FinalResultEntry> results;
private final double bin_size;

public CalFDR(List<FinalResultEntry> results, boolean unique_peptide) {
public CalFDR(List<FinalResultEntry> results) {
this.results = results;
final int array_length = 1 + (int) Math.ceil(MAX_SCORE / PRECISION);
float[] decoy_count_vector = new float[array_length];
float[] target_count_vector = new float[array_length];
float[] fuse_count_vector = new float[array_length];

// find the max_score
double max_score = 0;
for (FinalResultEntry entry : results) {
if (entry.score > max_score) {
max_score = entry.score;
}
}

bin_size = max_score / BIN_NUM;

final int array_length = 1 + BIN_NUM;
int[] decoy_count_vector = new int[array_length];
int[] target_count_vector = new int[array_length];
int[] fuse_count_vector = new int[array_length];
float[] fdr_array = new float[array_length];
qvalue_array = new float[array_length];

if (unique_peptide) {
Map<String, FinalResultEntry> peptide_result_map = new HashMap<>();
for (FinalResultEntry result_entry : results) {
if (result_entry.delta_score > DELTA_SCORE_T) {
continue;
}
String peptide = result_entry.seq_1 + "-" + result_entry.seq_2;
if (peptide_result_map.containsKey(peptide)) {
if (peptide_result_map.get(peptide).score < result_entry.score) {
peptide_result_map.put(peptide, result_entry);
}
} else {
peptide_result_map.put(peptide, result_entry);
}
}
for (FinalResultEntry re : peptide_result_map.values()) {
if (re.type.contentEquals("00")) {
int idx = (int) Math.floor(re.score / PRECISION);
++decoy_count_vector[idx];
} else if (re.type.contentEquals("11")) {
int idx = (int) Math.floor(re.score / PRECISION);
++target_count_vector[idx];
} else {
int idx = (int) Math.floor(re.score / PRECISION);
++fuse_count_vector[idx];
}
for (FinalResultEntry re : results) {
if (re.delta_score > DELTA_SCORE_T) {
continue;
}
} else {
for (FinalResultEntry re : results) {
if (re.delta_score > DELTA_SCORE_T) {
continue;
}
if (re.type.contentEquals("00")) {
int idx = (int) Math.floor(re.score / PRECISION);
++decoy_count_vector[idx];
} else if (re.type.contentEquals("11")) {
int idx = (int) Math.floor(re.score / PRECISION);
++target_count_vector[idx];
} else {
int idx = (int) Math.floor(re.score / PRECISION);
++fuse_count_vector[idx];
}
if (re.type.contentEquals("00")) {
int idx = (int) Math.floor(re.score / bin_size);
++decoy_count_vector[idx];
} else if (re.type.contentEquals("11")) {
int idx = (int) Math.floor(re.score / bin_size);
++target_count_vector[idx];
} else {
int idx = (int) Math.floor(re.score / bin_size);
++fuse_count_vector[idx];
}
}

Expand Down Expand Up @@ -104,17 +86,13 @@ public CalFDR(List<FinalResultEntry> results, boolean unique_peptide) {
}

public List<FinalResultEntry> includeStats() {
List<FinalResultEntry> final_results = new LinkedList<>();
for (FinalResultEntry re : results) {
if (re.type.contentEquals("11")) {
if (re.delta_score <= DELTA_SCORE_T) {
int idx = (int) Math.floor(re.score / PRECISION);
float qvalue = qvalue_array[idx];
final_results.add(new FinalResultEntry(re.spectrum_id, re.rank, re.charge, re.spectrum_precursor_mz, re.abs_ppm, re.score, re.delta_score, re.seq_1, re.link_site_1, re.mod_1, re.pro_id_1, re.seq_2, re.link_site_2, re.mod_2, re.pro_id_2, re.cl_type, re.type, re.C13_correction, qvalue));
}
int idx = (int) Math.floor(re.score / bin_size);
re.qvalue = qvalue_array[idx];
}
}

return final_results;
return results;
}
}

0 comments on commit c14c853

Please sign in to comment.