use of net.sf.mzmine.datamodel.PeakList in project mzmine2 by mzmine.
the class MainMenu method actionPerformed.
/**
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
MZmineRunnableModule module = moduleMenuItems.get(src);
if (module != null) {
ParameterSet moduleParameters = MZmineCore.getConfiguration().getModuleParameters(module.getClass());
RawDataFile[] selectedFiles = MZmineCore.getDesktop().getSelectedDataFiles();
if (selectedFiles.length > 0) {
for (Parameter<?> p : moduleParameters.getParameters()) {
if (p instanceof RawDataFilesParameter) {
RawDataFilesParameter rdp = (RawDataFilesParameter) p;
rdp.setValue(RawDataFilesSelectionType.GUI_SELECTED_FILES);
}
}
}
PeakList[] selectedPeakLists = MZmineCore.getDesktop().getSelectedPeakLists();
if (selectedPeakLists.length > 0) {
for (Parameter<?> p : moduleParameters.getParameters()) {
if (p instanceof PeakListsParameter) {
PeakListsParameter plp = (PeakListsParameter) p;
plp.setValue(PeakListsSelectionType.GUI_SELECTED_PEAKLISTS);
}
}
}
logger.finest("Setting parameters for module " + module.getName());
ExitCode exitCode = moduleParameters.showSetupDialog(MZmineCore.getDesktop().getMainWindow(), true);
if (exitCode == ExitCode.OK) {
ParameterSet parametersCopy = moduleParameters.cloneParameterSet();
logger.finest("Starting module " + module.getName() + " with parameters " + parametersCopy);
ArrayList<Task> tasks = new ArrayList<Task>();
MZmineProject project = MZmineCore.getProjectManager().getCurrentProject();
module.runModule(project, parametersCopy, tasks);
MZmineCore.getTaskController().addTasks(tasks.toArray(new Task[0]));
}
return;
}
if (src == projectExit) {
MZmineCore.getDesktop().exitMZmine();
}
if (src == projectSaveParameters) {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showSaveDialog(MZmineCore.getDesktop().getMainWindow());
if (returnVal == JFileChooser.APPROVE_OPTION) {
File configFile = chooser.getSelectedFile();
try {
MZmineCore.getConfiguration().saveConfiguration(configFile);
} catch (Exception ex) {
MZmineCore.getDesktop().displayException(MZmineCore.getDesktop().getMainWindow(), ex);
}
}
}
if (src == projectLoadParameters) {
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(MZmineCore.getDesktop().getMainWindow());
if (returnVal == JFileChooser.APPROVE_OPTION) {
File configFile = chooser.getSelectedFile();
try {
MZmineCore.getConfiguration().loadConfiguration(configFile);
} catch (Exception ex) {
MZmineCore.getDesktop().displayException(MZmineCore.getDesktop().getMainWindow(), ex);
}
}
}
if (src == projectSampleParameters) {
ProjectParametersSetupDialog dialog = new ProjectParametersSetupDialog();
dialog.setVisible(true);
}
if (src == projectPreferences) {
MZminePreferences preferences = MZmineCore.getConfiguration().getPreferences();
preferences.showSetupDialog(MZmineCore.getDesktop().getMainWindow(), true);
}
if (src == showAbout) {
MainWindow mainWindow = (MainWindow) MZmineCore.getDesktop();
mainWindow.showAboutDialog();
}
if (src == checkUpdate) {
// Check for updated version
NewVersionCheck NVC = new NewVersionCheck(CheckType.MENU);
new Thread(NVC).start();
}
}
use of net.sf.mzmine.datamodel.PeakList in project mzmine2 by mzmine.
the class RowsFilterModule method runModule.
@Override
@Nonnull
public ExitCode runModule(@Nonnull MZmineProject project, @Nonnull ParameterSet parameters, @Nonnull Collection<Task> tasks) {
final PeakList[] peakLists = parameters.getParameter(RowsFilterParameters.PEAK_LISTS).getValue().getMatchingPeakLists();
for (PeakList peakList : peakLists) {
Task newTask = new RowsFilterTask(project, peakList, parameters);
tasks.add(newTask);
}
return ExitCode.OK;
}
use of net.sf.mzmine.datamodel.PeakList in project mzmine2 by mzmine.
the class RowsFilterTask method filterPeakListRows.
/**
* Filter the feature list rows.
*
* @param peakList feature list to filter.
* @return a new feature list with rows of the original feature list that pass the filtering.
*/
private PeakList filterPeakListRows(final PeakList peakList) {
// Create new feature list.
final PeakList newPeakList = new SimplePeakList(peakList.getName() + ' ' + parameters.getParameter(RowsFilterParameters.SUFFIX).getValue(), peakList.getRawDataFiles());
// Copy previous applied methods.
for (final PeakListAppliedMethod method : peakList.getAppliedMethods()) {
newPeakList.addDescriptionOfAppliedTask(method);
}
// Add task description to peakList.
newPeakList.addDescriptionOfAppliedTask(new SimplePeakListAppliedMethod(getTaskDescription(), parameters));
// Get parameters.
final boolean onlyIdentified = parameters.getParameter(RowsFilterParameters.HAS_IDENTITIES).getValue();
final boolean filterByIdentityText = parameters.getParameter(RowsFilterParameters.IDENTITY_TEXT).getValue();
final boolean filterByCommentText = parameters.getParameter(RowsFilterParameters.COMMENT_TEXT).getValue();
final String groupingParameter = (String) parameters.getParameter(RowsFilterParameters.GROUPSPARAMETER).getValue();
final boolean filterByMinPeakCount = parameters.getParameter(RowsFilterParameters.MIN_PEAK_COUNT).getValue();
final boolean filterByMinIsotopePatternSize = parameters.getParameter(RowsFilterParameters.MIN_ISOTOPE_PATTERN_COUNT).getValue();
final boolean filterByMzRange = parameters.getParameter(RowsFilterParameters.MZ_RANGE).getValue();
final boolean filterByRtRange = parameters.getParameter(RowsFilterParameters.RT_RANGE).getValue();
final boolean filterByDuration = parameters.getParameter(RowsFilterParameters.PEAK_DURATION).getValue();
final boolean filterByFWHM = parameters.getParameter(RowsFilterParameters.FWHM).getValue();
final boolean filterByCharge = parameters.getParameter(RowsFilterParameters.CHARGE).getValue();
final boolean filterByKMD = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getValue();
final boolean filterByMS2 = parameters.getParameter(RowsFilterParameters.MS2_Filter).getValue();
final String removeRowString = parameters.getParameter(RowsFilterParameters.REMOVE_ROW).getValue();
Double minCount = parameters.getParameter(RowsFilterParameters.MIN_PEAK_COUNT).getEmbeddedParameter().getValue();
final boolean renumber = parameters.getParameter(RowsFilterParameters.Reset_ID).getValue();
int rowsCount = 0;
boolean removeRow = false;
if (removeRowString.equals(RowsFilterParameters.removeRowChoices[0]))
removeRow = false;
else
removeRow = true;
// Keep rows that don't match any criteria. Keep by default.
boolean filterRowCriteriaFailed = false;
// Handle < 1 values for minPeakCount
if ((minCount == null) || (minCount < 1))
minCount = 1.0;
// Round value down to nearest hole number
int intMinCount = minCount.intValue();
// Filter rows.
final PeakListRow[] rows = peakList.getRows();
totalRows = rows.length;
for (processedRows = 0; !isCanceled() && processedRows < totalRows; processedRows++) {
filterRowCriteriaFailed = false;
final PeakListRow row = rows[processedRows];
final int peakCount = getPeakCount(row, groupingParameter);
// Check number of peaks.
if (filterByMinPeakCount) {
if (peakCount < intMinCount)
filterRowCriteriaFailed = true;
}
// Check identities.
if (onlyIdentified) {
if (row.getPreferredPeakIdentity() == null)
filterRowCriteriaFailed = true;
}
// Check average m/z.
if (filterByMzRange) {
final Range<Double> mzRange = parameters.getParameter(RowsFilterParameters.MZ_RANGE).getEmbeddedParameter().getValue();
if (!mzRange.contains(row.getAverageMZ()))
filterRowCriteriaFailed = true;
}
// Check average RT.
if (filterByRtRange) {
final Range<Double> rtRange = parameters.getParameter(RowsFilterParameters.RT_RANGE).getEmbeddedParameter().getValue();
if (!rtRange.contains(row.getAverageRT()))
filterRowCriteriaFailed = true;
}
// Search peak identity text.
if (filterByIdentityText) {
if (row.getPreferredPeakIdentity() == null)
filterRowCriteriaFailed = true;
if (row.getPreferredPeakIdentity() != null) {
final String searchText = parameters.getParameter(RowsFilterParameters.IDENTITY_TEXT).getEmbeddedParameter().getValue().toLowerCase().trim();
int numFailedIdentities = 0;
PeakIdentity[] identities = row.getPeakIdentities();
for (int index = 0; !isCanceled() && index < identities.length; index++) {
String rowText = identities[index].getName().toLowerCase().trim();
if (!rowText.contains(searchText))
numFailedIdentities += 1;
}
if (numFailedIdentities == identities.length)
filterRowCriteriaFailed = true;
}
}
// Search peak comment text.
if (filterByCommentText) {
if (row.getComment() == null)
filterRowCriteriaFailed = true;
if (row.getComment() != null) {
final String searchText = parameters.getParameter(RowsFilterParameters.COMMENT_TEXT).getEmbeddedParameter().getValue().toLowerCase().trim();
final String rowText = row.getComment().toLowerCase().trim();
if (!rowText.contains(searchText))
filterRowCriteriaFailed = true;
}
}
// Calculate average duration and isotope pattern count.
int maxIsotopePatternSizeOnRow = 1;
double avgDuration = 0.0;
final Feature[] peaks = row.getPeaks();
for (final Feature p : peaks) {
final IsotopePattern pattern = p.getIsotopePattern();
if (pattern != null && maxIsotopePatternSizeOnRow < pattern.getNumberOfDataPoints()) {
maxIsotopePatternSizeOnRow = pattern.getNumberOfDataPoints();
}
avgDuration += RangeUtils.rangeLength(p.getRawDataPointsRTRange());
}
// Check isotope pattern count.
if (filterByMinIsotopePatternSize) {
final int minIsotopePatternSize = parameters.getParameter(RowsFilterParameters.MIN_ISOTOPE_PATTERN_COUNT).getEmbeddedParameter().getValue();
if (maxIsotopePatternSizeOnRow < minIsotopePatternSize)
filterRowCriteriaFailed = true;
}
// Check average duration.
avgDuration /= peakCount;
if (filterByDuration) {
final Range<Double> durationRange = parameters.getParameter(RowsFilterParameters.PEAK_DURATION).getEmbeddedParameter().getValue();
if (!durationRange.contains(avgDuration))
filterRowCriteriaFailed = true;
}
// Filter by FWHM range
if (filterByFWHM) {
final Range<Double> FWHMRange = parameters.getParameter(RowsFilterParameters.FWHM).getEmbeddedParameter().getValue();
// If any of the peaks fail the FWHM criteria,
Double FWHM_value = row.getBestPeak().getFWHM();
if (FWHM_value != null && !FWHMRange.contains(FWHM_value))
filterRowCriteriaFailed = true;
}
// Filter by charge range
if (filterByCharge) {
final Range<Integer> chargeRange = parameters.getParameter(RowsFilterParameters.CHARGE).getEmbeddedParameter().getValue();
int charge = row.getBestPeak().getCharge();
if (charge == 0 || !chargeRange.contains(charge))
filterRowCriteriaFailed = true;
}
// Filter by KMD or RKM range
if (filterByKMD) {
// get embedded parameters
final Range<Double> rangeKMD = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.kendrickMassDefectRange).getValue();
final String kendrickMassBase = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.kendrickMassBase).getValue();
final double shift = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.shift).getValue();
final int charge = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.charge).getValue();
final int divisor = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.divisor).getValue();
final boolean useRemainderOfKendrickMass = parameters.getParameter(RowsFilterParameters.KENDRICK_MASS_DEFECT).getEmbeddedParameters().getParameter(KendrickMassDefectFilterParameters.useRemainderOfKendrickMass).getValue();
// get m/z
Double valueMZ = row.getBestPeak().getMZ();
// calc exact mass of Kendrick mass base
double exactMassFormula = FormulaUtils.calculateExactMass(kendrickMassBase);
// calc exact mass of Kendrick mass factor
double kendrickMassFactor = Math.round(exactMassFormula / divisor) / (exactMassFormula / divisor);
double defectOrRemainder = 0.0;
if (!useRemainderOfKendrickMass) {
// calc Kendrick mass defect
defectOrRemainder = Math.ceil(charge * (valueMZ * kendrickMassFactor)) - charge * (valueMZ * kendrickMassFactor);
} else {
// calc Kendrick mass remainder
defectOrRemainder = (charge * (divisor - Math.round(FormulaUtils.calculateExactMass(kendrickMassBase))) * valueMZ) / //
FormulaUtils.calculateExactMass(kendrickMassBase) - Math.floor((charge * (divisor - Math.round(FormulaUtils.calculateExactMass(kendrickMassBase))) * valueMZ) / FormulaUtils.calculateExactMass(kendrickMassBase));
}
// shift Kendrick mass defect or remainder of Kendrick mass
double kendrickMassDefectShifted = defectOrRemainder + shift - Math.floor(defectOrRemainder + shift);
// check if shifted Kendrick mass defect or remainder of Kendrick mass is in range
if (!rangeKMD.contains(kendrickMassDefectShifted))
filterRowCriteriaFailed = true;
}
// Check ms2 filter .
if (filterByMS2) {
// iterates the peaks
int failCounts = 0;
for (int i = 0; i < peakCount; i++) {
if (row.getPeaks()[i].getMostIntenseFragmentScanNumber() < 1) {
failCounts++;
// filterRowCriteriaFailed = true;
// break;
}
}
if (failCounts == peakCount) {
filterRowCriteriaFailed = true;
}
}
if (!filterRowCriteriaFailed && !removeRow) {
// Only add the row if none of the criteria have failed.
rowsCount++;
PeakListRow resetRow = copyPeakRow(row);
if (renumber) {
resetRow.setID(rowsCount);
}
newPeakList.addRow(resetRow);
}
if (filterRowCriteriaFailed && removeRow) {
// Only remove rows that match *all* of the criteria, so add
// rows that fail any of the criteria.
rowsCount++;
PeakListRow resetRow = copyPeakRow(row);
if (renumber) {
resetRow.setID(rowsCount);
}
newPeakList.addRow(resetRow);
}
}
return newPeakList;
}
use of net.sf.mzmine.datamodel.PeakList in project mzmine2 by mzmine.
the class PeakFinderModule method runModule.
@Override
@Nonnull
public ExitCode runModule(@Nonnull MZmineProject project, @Nonnull ParameterSet parameters, @Nonnull Collection<Task> tasks) {
PeakList[] peakLists = parameters.getParameter(PeakFinderParameters.peakLists).getValue().getMatchingPeakLists();
for (PeakList peakList : peakLists) {
Task newTask = new PeakFinderTask(project, peakList, parameters);
tasks.add(newTask);
}
return ExitCode.OK;
}
use of net.sf.mzmine.datamodel.PeakList in project mzmine2 by mzmine.
the class SameRangeGapFillerModule method runModule.
@Override
@Nonnull
public ExitCode runModule(@Nonnull MZmineProject project, @Nonnull ParameterSet parameters, @Nonnull Collection<Task> tasks) {
PeakList[] peakLists = parameters.getParameter(SameRangeGapFillerParameters.peakLists).getValue().getMatchingPeakLists();
for (PeakList peakList : peakLists) {
Task newTask = new SameRangeTask(project, peakList, parameters);
tasks.add(newTask);
}
return ExitCode.OK;
}
Aggregations