ExitCodes main_(int, const char **) override { String in = getStringOption_("in"); String out = getStringOption_("out"); String algo_type = getStringOption_("algorithm_type"); String acc_filter = getStringOption_("accession_filter"); String desc_filter = getStringOption_("description_filter"); double ratio_threshold = getDoubleOption_("ratio_threshold"); ConsensusXMLFile infile; infile.setLogType(log_type_); ConsensusMap map; infile.load(in, map); //map normalization if (algo_type == "robust_regression") { map.sortBySize(); vector<double> results = ConsensusMapNormalizerAlgorithmThreshold::computeCorrelation(map, ratio_threshold, acc_filter, desc_filter); ConsensusMapNormalizerAlgorithmThreshold::normalizeMaps(map, results); } else if (algo_type == "median") { ConsensusMapNormalizerAlgorithmMedian::normalizeMaps(map, ConsensusMapNormalizerAlgorithmMedian::NM_SCALE, acc_filter, desc_filter); } else if (algo_type == "median_shift") { ConsensusMapNormalizerAlgorithmMedian::normalizeMaps(map, ConsensusMapNormalizerAlgorithmMedian::NM_SHIFT, acc_filter, desc_filter); } else if (algo_type == "quantile") { if (acc_filter != "" || desc_filter != "") { LOG_WARN << endl << "NOTE: Accession / description filtering is not supported in quantile normalization mode. Ignoring filters." << endl << endl; } ConsensusMapNormalizerAlgorithmQuantile::normalizeMaps(map); } else { cerr << "Unknown algorithm type '" << algo_type.c_str() << "'." << endl; return ILLEGAL_PARAMETERS; } //annotate output with data processing info and save output file addDataProcessing_(map, getProcessingInfo_(DataProcessing::NORMALIZATION)); infile.store(out, map); return EXECUTION_OK; }
void FeatureGroupingAlgorithmQT::group_(const vector<MapType>& maps, ConsensusMap& out) { // check that the number of maps is ok: if (maps.size() < 2) { throw Exception::IllegalArgument(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, "At least two maps must be given!"); } QTClusterFinder cluster_finder; cluster_finder.setParameters(param_.copy("", true)); cluster_finder.run(maps, out); StringList ms_run_locations; // add protein IDs and unassigned peptide IDs to the result map here, // to keep the same order as the input maps (useful for output later): for (typename vector<MapType>::const_iterator map_it = maps.begin(); map_it != maps.end(); ++map_it) { // add protein identifications to result map: out.getProteinIdentifications().insert( out.getProteinIdentifications().end(), map_it->getProteinIdentifications().begin(), map_it->getProteinIdentifications().end()); // add unassigned peptide identifications to result map: out.getUnassignedPeptideIdentifications().insert( out.getUnassignedPeptideIdentifications().end(), map_it->getUnassignedPeptideIdentifications().begin(), map_it->getUnassignedPeptideIdentifications().end()); } // canonical ordering for checking the results: out.sortByQuality(); out.sortByMaps(); out.sortBySize(); return; }
ExitCodes main_(int, const char **) { String in = getStringOption_("in"); String out = getStringOption_("out"); String algo_type = getStringOption_("algorithm_type"); double ratio_threshold = getDoubleOption_("ratio_threshold"); ConsensusXMLFile infile; infile.setLogType(log_type_); ConsensusMap map; infile.load(in, map); //map normalization if (algo_type == "robust_regression") { map.sortBySize(); vector<double> results = ConsensusMapNormalizerAlgorithmThreshold::computeCorrelation(map, ratio_threshold); ConsensusMapNormalizerAlgorithmThreshold::normalizeMaps(map, results); } else if (algo_type == "median") { ConsensusMapNormalizerAlgorithmMedian::normalizeMaps(map); } else if (algo_type == "quantile") { ConsensusMapNormalizerAlgorithmQuantile::normalizeMaps(map); } else { cerr << "Unknown algorithm type '" << algo_type.c_str() << "'." << endl; return ILLEGAL_PARAMETERS; } //annotate output with data processing info and save output file addDataProcessing_(map, getProcessingInfo_(DataProcessing::NORMALIZATION)); infile.store(out, map); return EXECUTION_OK; }
void FeatureGroupingAlgorithmUnlabeled::group(const std::vector<FeatureMap> & maps, ConsensusMap & out) { // check that the number of maps is ok if (maps.size() < 2) { throw Exception::IllegalArgument(__FILE__, __LINE__, __PRETTY_FUNCTION__, "At least two maps must be given!"); } // define reference map (the one with most peaks) Size reference_map_index = 0; Size max_count = 0; for (Size m = 0; m < maps.size(); ++m) { if (maps[m].size() > max_count) { max_count = maps[m].size(); reference_map_index = m; } } std::vector<ConsensusMap> input(2); // build a consensus map of the elements of the reference map (contains only singleton consensus elements) MapConversion::convert(reference_map_index, maps[reference_map_index], input[0]); // loop over all other maps, extend the groups StablePairFinder pair_finder; pair_finder.setParameters(param_.copy("", true)); for (Size i = 0; i < maps.size(); ++i) { if (i != reference_map_index) { MapConversion::convert(i, maps[i], input[1]); // compute the consensus of the reference map and map i ConsensusMap result; pair_finder.run(input, result); input[0].swap(result); } } // replace result with temporary map out.swap(input[0]); // copy back the input maps (they have been deleted while swapping) out.getFileDescriptions() = input[0].getFileDescriptions(); // add protein IDs and unassigned peptide IDs to the result map here, // to keep the same order as the input maps (useful for output later) for (std::vector<FeatureMap>::const_iterator map_it = maps.begin(); map_it != maps.end(); ++map_it) { // add protein identifications to result map out.getProteinIdentifications().insert( out.getProteinIdentifications().end(), map_it->getProteinIdentifications().begin(), map_it->getProteinIdentifications().end()); // add unassigned peptide identifications to result map out.getUnassignedPeptideIdentifications().insert( out.getUnassignedPeptideIdentifications().end(), map_it->getUnassignedPeptideIdentifications().begin(), map_it->getUnassignedPeptideIdentifications().end()); } // canonical ordering for checking the results, and the ids have no real meaning anyway #if 1 // the way this was done in DelaunayPairFinder and StablePairFinder out.sortByMZ(); #else out.sortByQuality(); out.sortByMaps(); out.sortBySize(); #endif return; }