Java tutorial
/* * (C) Copyright 2015-2016 by MSDK Development Team * * This software is dual-licensed under either * * (a) the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation * * or (per the licensee's choosing) * * (b) the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation. */ package io.github.msdk.util; import javax.annotation.Nonnull; import javax.annotation.concurrent.Immutable; import com.google.common.collect.Range; /** * This class represents m/z tolerance. Tolerance is set using absolute (m/z) * and relative (ppm) values. The tolerance range is calculated as the maximum * of the absolute and relative values. */ @Immutable public class MZTolerance { // PPM conversion factor. private static final Double MILLION = 1000000.0; // Tolerance has absolute (in m/z) and relative (in ppm) values private final @Nonnull Double mzTolerance; private final @Nonnull Double ppmTolerance; /** * <p> * Constructor for MZTolerance. * </p> * * @param toleranceMZ * a {@link java.lang.Double} object. * @param tolerancePPM * a {@link java.lang.Double} object. */ public MZTolerance(final @Nonnull Double toleranceMZ, final @Nonnull Double tolerancePPM) { mzTolerance = toleranceMZ; ppmTolerance = tolerancePPM; } /** * <p> * Getter for the field <code>mzTolerance</code>. * </p> * * @return a {@link java.lang.Double} object. */ public @Nonnull Double getMzTolerance() { return mzTolerance; } /** * <p> * Getter for the field <code>ppmTolerance</code>. * </p> * * @return a {@link java.lang.Double} object. */ public @Nonnull Double getPpmTolerance() { return ppmTolerance; } /** * <p> * getToleranceRange. * </p> * * @param mzValue * a {@link java.lang.Double} object. * @return a {@link com.google.common.collect.Range} object. */ @SuppressWarnings("null") public @Nonnull Range<Double> getToleranceRange(final @Nonnull Double mzValue) { final @Nonnull Double absoluteTolerance = Math.max(mzTolerance, mzValue / MILLION * ppmTolerance); return Range.closed(mzValue - absoluteTolerance, mzValue + absoluteTolerance); } /** {@inheritDoc} */ @Override public String toString() { return mzTolerance + " m/z or " + ppmTolerance + " ppm"; } }