void MapAlignmentAlgorithmIdentification::setReference(Size reference_index,
                                                         const String & reference_file)
  {
    reference_.clear();
    reference_index_ = reference_index;
    // reference is one of the input files, or no reference given:
    if (reference_index_ || reference_file.empty())
      return;

    // reference is external file:
    LOG_DEBUG << "Extracting reference RT data..." << endl;
    SeqToList rt_data;
    bool sorted = true;
    FileTypes::Type filetype = FileHandler::getType(reference_file);
    if (filetype == FileTypes::MZML)
    {
      MSExperiment<> experiment;
      MzMLFile().load(reference_file, experiment);
      getRetentionTimes_(experiment, rt_data);
      sorted = false;
    }
    else if (filetype == FileTypes::FEATUREXML)
    {
      FeatureMap<> features;
      FeatureXMLFile().load(reference_file, features);
      getRetentionTimes_(features, rt_data);
    }
    else if (filetype == FileTypes::CONSENSUSXML)
    {
      ConsensusMap features;
      ConsensusXMLFile().load(reference_file, features);
      getRetentionTimes_(features, rt_data);
    }
    else if (filetype == FileTypes::IDXML)
    {
      vector<ProteinIdentification> proteins;
      vector<PeptideIdentification> peptides;
      IdXMLFile().load(reference_file, proteins, peptides);
      getRetentionTimes_(peptides, rt_data);
    }

    computeMedians_(rt_data, reference_, sorted);
    if (reference_.empty())
    {
      throw Exception::MissingInformation(
              __FILE__, __LINE__, __PRETTY_FUNCTION__,
              "Could not extract retention time information from the reference file");
    }
  }
Exemplo n.º 2
0
      bool
      validate(const std::vector<std::string>& file_names)
      {
        std::cout << "checking (created temporary files)..." << std::endl;
        bool passed_all = true;
        for (Size i = 0; i < file_names.size(); ++i)
        {
          if (File::exists(file_names[i]))
          {
            FileTypes::Type type = FileHandler::getType(file_names[i]);
            bool passed_single = true;
            bool skipped = false;
            switch (type)
            {
            case FileTypes::MZML:
            {
              if (!MzMLFile().isValid(file_names[i]))
              {
                std::cout << " - Error: mzML file does not validate against XML schema '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              StringList errors, warnings;
              if (!MzMLFile().isSemanticallyValid(file_names[i], errors,
                                                  warnings))
              {
                std::cout << " - Error: mzML file semantically invalid '" << file_names[i] << "'" << std::endl;
                for (Size j = 0; j < errors.size(); ++j)
                {
                  std::cout << "Error - " << errors[j] << std::endl;
                }
                passed_single = false;
              }
            }
            break;

            case FileTypes::MZDATA:
              if (!MzDataFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid mzData file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::MZXML:
              if (!MzXMLFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid mzXML file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::FEATUREXML:
              if (!FeatureXMLFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid featureXML file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::IDXML:
              if (!IdXMLFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid idXML file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::CONSENSUSXML:
              if (!ConsensusXMLFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid consensusXML file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::INI:
              if (!ParamXMLFile().isValid(file_names[i], std::cerr))
              {
                std::cout << " - Error: Invalid Param file '" << file_names[i] << "'" << std::endl;
                passed_single = false;
              }
              break;

            case FileTypes::TRANSFORMATIONXML:
              if (!TransformationXMLFile().isValid(file_names[i], std::cerr))
              {

                passed_single = false;
              }
              break;

            default:
              skipped = true;
              break;
            }
            //output for single file
            if (skipped)
            {
              std::cout << " +  skipped file '" << file_names[i] << "' (type: " << FileTypes::typeToName(type) << ")" << std::endl;
            }
            else if (passed_single)
            {
              std::cout << " +  valid file '" << file_names[i] << "' (type: " << FileTypes::typeToName(type) << ")" << std::endl;
            }
            else
            {
              passed_all = false;
              std::cout << " -  invalid file '" << file_names[i] << "' (type: " << FileTypes::typeToName(type) << ")" << std::endl;
            }
          }
        }
        //output for all files
        if (passed_all)
        {
          std::cout << ": passed" << std::endl << std::endl;
        }
        else
        {
          std::cout << ": failed" << std::endl << std::endl;
        }
        return passed_all;
      }
    ExitCodes main_(int, const char **)
    {
      String in = getStringOption_("in");
      StringList out = getStringList_("out");
      SeedListGenerator seed_gen;
      // results (actually just one result, except for consensusXML input):
      Map<UInt64, SeedListGenerator::SeedList> seed_lists;

      Size num_maps = 0;
      FileTypes::Type in_type = FileHandler::getType(in);

      if (in_type == FileTypes::CONSENSUSXML)
      {
        ConsensusMap consensus;
        ConsensusXMLFile().load(in, consensus);
        num_maps = consensus.getFileDescriptions().size();
        if (out.size() != num_maps)
        {
          writeLog_("Error: expected " + String(num_maps) +
                    " output filenames");
          return ILLEGAL_PARAMETERS;
        }
        seed_gen.generateSeedLists(consensus, seed_lists);
      }
      else if (out.size() > 1)
      {
        writeLog_("Error: expected only one output filename");
        return ILLEGAL_PARAMETERS;
      }
      else if (in_type == FileTypes::MZML)
      {
        MSExperiment<> experiment;
        MzMLFile().load(in, experiment);
        seed_gen.generateSeedList(experiment, seed_lists[0]);
      }
      else if (in_type == FileTypes::IDXML)
      {
        vector<ProteinIdentification> proteins;
        vector<PeptideIdentification> peptides;
        IdXMLFile().load(in, proteins, peptides);
        seed_gen.generateSeedList(peptides, seed_lists[0],
                                  getFlag_("use_peptide_mass"));
      }
      else if (in_type == FileTypes::FEATUREXML)
      {
        FeatureMap features;
        FeatureXMLFile().load(in, features);
        seed_gen.generateSeedList(
          features.getUnassignedPeptideIdentifications(), seed_lists[0]);
      }

      // output:
      num_maps = 0;
      for (Map<UInt64, SeedListGenerator::SeedList>::Iterator it =
             seed_lists.begin(); it != seed_lists.end(); ++it, ++num_maps)
      {
        FeatureMap features;
        seed_gen.convertSeedList(it->second, features);
        //annotate output with data processing info:
        addDataProcessing_(features, getProcessingInfo_(
                             DataProcessing::DATA_PROCESSING));
        FeatureXMLFile().store(out[num_maps], features);
      }

      return EXECUTION_OK;
    }