{"action":"created","comment":{"url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/comments/146124540","pull_request_review_id":71026285,"id":146124540,"diff_hunk":"@@ -0,0 +1,859 @@\n+// --------------------------------------------------------------------------\n+//                   OpenMS -- Open-Source Mass Spectrometry\n+// --------------------------------------------------------------------------\n+// Copyright The OpenMS Team -- Eberhard Karls University Tuebingen,\n+// ETH Zurich, and Freie Universitaet Berlin 2002-2017.\n+//\n+// This software is released under a three-clause BSD license:\n+//  * Redistributions of source code must retain the above copyright\n+//    notice, this list of conditions and the following disclaimer.\n+//  * Redistributions in binary form must reproduce the above copyright\n+//    notice, this list of conditions and the following disclaimer in the\n+//    documentation and/or other materials provided with the distribution.\n+//  * Neither the name of any author or any participating institution\n+//    may be used to endorse or promote products derived from this software\n+//    without specific prior written permission.\n+// For a full list of authors, refer to the file AUTHORS.\n+// --------------------------------------------------------------------------\n+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+// ARE DISCLAIMED. IN NO EVENT SHALL ANY OF THE AUTHORS OR THE CONTRIBUTING\n+// INSTITUTIONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n+// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n+// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\n+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n+// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\n+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n+// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+//\n+// --------------------------------------------------------------------------\n+// $Maintainer: Lukas Zimmermann $\n+// $Authors: Lukas Zimmermann, Leon Bichmann $\n+// --------------------------------------------------------------------------\n+#include <OpenMS/APPLICATIONS/TOPPBase.h>\n+#include <OpenMS/FORMAT/FileHandler.h>\n+#include <OpenMS/CHEMISTRY/EnzymesDB.h>\n+#include <OpenMS/SYSTEM/JavaInfo.h>\n+#include <QtCore/QDir>\n+#include <QtCore/QProcess>\n+#include <iostream>\n+\n+using namespace OpenMS;\n+using namespace std;\n+\n+//-------------------------------------------------------------\n+//Doxygen docu\n+//-------------------------------------------------------------\n+\n+/**\n+    @page TOPP_MSFraggerAdapter MSFraggerAdapter\n+\n+    @brief Peptide Identification with MSFragger\n+\n+<CENTER>\n+    <table>\n+        <tr>\n+            <td ALIGN = \"center\" BGCOLOR=\"#EBEBEB\"> pot. predecessor tools </td>\n+            <td VALIGN=\"middle\" ROWSPAN=2> \\f$ \\longrightarrow \\f$ MSFraggerAdapter \\f$ \\longrightarrow \\f$</td>\n+            <td ALIGN = \"center\" BGCOLOR=\"#EBEBEB\"> pot. successor tools </td>\n+        </tr>\n+        <tr>\n+            <td VALIGN=\"middle\" ALIGN = \"center\" ROWSPAN=1> any signal-/preprocessing tool @n (in mzML format)</td>\n+            <td VALIGN=\"middle\" ALIGN = \"center\" ROWSPAN=1> @ref TOPP_IDFilter or @n any protein/peptide processing tool</td>\n+        </tr>\n+    </table>\n+</CENTER>\n+\n+    @em MSFragger must be installed before this adapter can be used.\n+\n+\tAll MSFragger parameters (as specified in the fragger.params file) have been transcribed to parameters of this OpenMS util.\n+\tIt is not possible to provide an explicit fragger.params file to avoid redundancy with the ini file.\n+\tThis adapter creates an fragger.params file prior to calling MSFragger. If the fragger.params file should be inspected, set the\n+\t-debug option to 2. MSFraggerAdapter will print the path to the working directory to standard out.\n+\n+\tMSFragger can process multiple input files (mzML, mzXML) one after another. The number of output files specified must match\n+\tthe number of input spectra files. The output file is then matched to the input file by index. The default parameters of the\n+\tadapter are the same as given by the official MSFragger manual.\n+\n+    <B>The command line parameters of this tool are:</B>\n+    @verbinclude UTILS_MSFraggerAdapter.cli\n+    <B>INI file documentation of this tool:</B>\n+    @htmlinclude UTILS_MSFraggerAdapter.html\n+ */\n+\n+// We do not want this class to show up in the docu:\n+/// @cond TOPPCLASSES\n+\n+\n+class TOPPMSFraggerAdapter final :\n+public TOPPBase\n+{\n+public:\n+\n+  static const String param_java_executable;\n+  static const String param_java_heapmemory;\n+  static const String param_executable;\n+  static const String param_in;\n+  static const String param_out;\n+  static const String param_database;\n+\n+  // tolerance\n+  static const String param_precursor_mass_tolerance;\n+  static const String param_precursor_mass_unit;\n+  static const String param_precursor_true_tolerance;\n+  static const String param_precursor_true_unit;\n+  static const String param_fragment_mass_tolerance;\n+  static const String param_fragment_mass_unit;\n+  static const String param_isotope_error;\n+\n+  // digest\n+  static const String param_search_enzyme_name;\n+  static const String param_search_enzyme_cutafter;\n+  static const String param_search_enzyme_nocutbefore;\n+  static const String param_num_enzyme_termini;\n+  static const String param_allowed_missed_cleavage;\n+  static const String param_digest_min_length;\n+  static const String param_digest_max_length;\n+  static const String param_digest_mass_range_min;\n+  static const String param_digest_mass_range_max;\n+\n+  // varmod\n+  static const String param_clip_nterm_m;\n+  static const String param_varmod_masses;\n+  static const String param_varmod_syntax;\n+  static const String param_varmod_enable_common;\n+  static const String param_not_allow_multiple_variable_mods_on_residue;\n+  static const String param_max_variable_mods_per_mod;\n+  static const String param_max_variable_mods_combinations;\n+\n+  // spectrum\n+  static const String param_minimum_peaks;\n+  static const String param_use_topn_peaks;\n+  static const String param_minimum_ratio;\n+  static const String param_clear_mz_range_min;\n+  static const String param_clear_mz_range_max;\n+  static const String param_max_fragment_charge;\n+  static const String param_override_charge;\n+  static const String param_precursor_charge_min;\n+  static const String param_precursor_charge_max;\n+\n+  // search\n+  static const String param_track_zero_topn;\n+  static const String param_zero_bin_accept_expect;\n+  static const String param_zero_bin_mult_expect;\n+  static const String param_add_topn_complementary;\n+  static const String param_min_fragments_modeling;\n+  static const String param_min_matched_fragments;\n+  static const String param_output_report_topn;\n+  static const String param_output_max_expect;\n+\n+  // statmod\n+  static const String param_add_cterm_peptide;\n+  static const String param_add_nterm_peptide;\n+  static const String param_add_cterm_protein;\n+  static const String param_add_nterm_protein;\n+  static const String param_add_G_glycine;\n+  static const String param_add_A_alanine;\n+  static const String param_add_S_serine;\n+  static const String param_add_P_proline;\n+  static const String param_add_V_valine;\n+  static const String param_add_T_threonine;\n+  static const String param_add_C_cysteine;\n+  static const String param_add_L_leucine;\n+  static const String param_add_I_isoleucine;\n+  static const String param_add_N_asparagine;\n+  static const String param_add_D_aspartic_acid;\n+  static const String param_add_Q_glutamine;\n+  static const String param_add_K_lysine;\n+  static const String param_add_E_glutamic_acid;\n+  static const String param_add_M_methionine;\n+  static const String param_add_H_histidine;\n+  static const String param_add_F_phenylalanine;\n+  static const String param_add_R_arginine;\n+  static const String param_add_Y_tyrosine;\n+  static const String param_add_W_tryptophan;\n+\n+\n+  TOPPMSFraggerAdapter() :\n+    TOPPBase(\"MSFraggerAdapter\", \"Peptide Identification with MSFragger\", false),\n+    working_directory(\"\"),\n+    java_executable(\"\"),\n+    executable(\"\"),\n+    parameter_file_path(\"\"),\n+    input_files(),\n+    output_files(),\n+    file_type(\"\")\n+  {\n+  }\n+\n+  ~TOPPMSFraggerAdapter()\n+  {\n+    // Remove the temp working directory if the debug level is smaller than 2\n+    // and the working directory has been created\n+    if (this->debug_level_ < 2 && this->working_directory != \"\")\n+    {\n+      File::removeDir(this->working_directory);\n+    }\n+  }\n+\n+\n+protected:\n+  void registerOptionsAndFlags_() final override\n+  {\n+    const StringList emptyStrings;\n+    const std::vector< double > emptyDoubles;\n+\n+    const StringList validUnits = ListUtils::create<String>(\"Da,ppm\");\n+    const StringList isotope_error_and_enzyme_termini = ListUtils::create<String>(\"0,1,2\");\n+    const StringList zero_to_five = ListUtils::create<String>(\"0,1,2,3,4,5\");\n+\n+    // Java executable\n+    registerInputFile_(TOPPMSFraggerAdapter::param_java_executable, \"<file>\", \"java\", \"The Java executable. Usually Java is on the system PATH. If Java is not found, use this parameter to specify the full path to Java\", false, false, ListUtils::create<String>(\"skipexists\"));\n+    registerIntOption_(TOPPMSFraggerAdapter::param_java_heapmemory, \"<num>\", 3500, \"Maximum Java heap size (in MB)\", false);\n+\n+    // Handle executable\n+    registerInputFile_(TOPPMSFraggerAdapter::param_executable, \"<path_to_executable>\", \"\", \"Path to the MSFragger executable to use; may be empty if the executable is globally available.\", false, false, ListUtils::create<String>(\"skipexists\"));\n+\n+    // input spectra\n+    registerInputFileList_(TOPPMSFraggerAdapter::param_in, \"spectra_file_1 [spectra_file_2, .., spectra_file_N]>\", emptyStrings, \"Spectra files to search with MSFragger\", true, false);\n+    setValidFormats_(TOPPMSFraggerAdapter::param_in, ListUtils::create<String>(\"mzML,mzXML\"));\n+\n+    //  output files\n+    registerOutputFileList_(TOPPMSFraggerAdapter::param_out, \"output_file_1 [output_file_2, ..., output_file_N]\", emptyStrings, \"MSFragger output files\", true, false);\n+    setValidFormats_(TOPPMSFraggerAdapter::param_out, ListUtils::create<String>(\"pep.xml,pepXML,tsv\"), true);\n+\n+    // Path to database to search\n+    registerInputFile_(TOPPMSFraggerAdapter::param_database, \"<path_to_fasta>\", \"\", \"FASTA database file\", true, false);\n+    setValidFormats_(TOPPMSFraggerAdapter::param_database, ListUtils::create<String>(\"FASTA,fasta,fa,fas\"), false);\n+\n+    // TOPP tolerance\n+    registerTOPPSubsection_(\"tolerance\", \"Search Tolerances\");\n+\n+    // Precursor mass tolerance and unit\n+    _registerNonNegativeDouble(TOPPMSFraggerAdapter::param_precursor_mass_tolerance, \"<precursor_mass_tolerance>\", 20.0, \"Precursor mass tolerance\", false, false);\n+    registerStringOption_(TOPPMSFraggerAdapter::param_precursor_mass_unit, \"<precursor_mass_unit>\", \"ppm\", \"Unit of precursor mass tolerance\", false, false);\n+    setValidStrings_(TOPPMSFraggerAdapter::param_precursor_mass_unit, validUnits);\n+\n+    // Precursor true tolerance\n+    _registerNonNegativeDouble(TOPPMSFraggerAdapter::param_precursor_true_tolerance, \"<precursor_true_tolerance>\", 0.0, \"Precursor true tolerance. It is strongly recommended to set this feature!\", false, false);","path":"src/utils/MSFraggerAdapter.cpp","position":null,"original_position":239,"commit_id":"6f96c3da0a3fe56a11c0c262f8461b7ee4f89f5f","original_commit_id":"6f8f094b78fab4b638abbb8996189faaa51a5aa9","user":{"login":"lukaszimmermann","id":9307862,"avatar_url":"https://avatars2.githubusercontent.com/u/9307862?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszimmermann","html_url":"https://github.com/lukaszimmermann","followers_url":"https://api.github.com/users/lukaszimmermann/followers","following_url":"https://api.github.com/users/lukaszimmermann/following{/other_user}","gists_url":"https://api.github.com/users/lukaszimmermann/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszimmermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszimmermann/subscriptions","organizations_url":"https://api.github.com/users/lukaszimmermann/orgs","repos_url":"https://api.github.com/users/lukaszimmermann/repos","events_url":"https://api.github.com/users/lukaszimmermann/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszimmermann/received_events","type":"User","site_admin":false},"body":"I improved the description of the parameters","created_at":"2017-10-22T07:55:03Z","updated_at":"2017-10-22T07:55:03Z","html_url":"https://github.com/OpenMS/OpenMS/pull/2969#discussion_r146124540","pull_request_url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/comments/146124540"},"html":{"href":"https://github.com/OpenMS/OpenMS/pull/2969#discussion_r146124540"},"pull_request":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969"}},"in_reply_to_id":146116192},"pull_request":{"url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969","id":147945229,"html_url":"https://github.com/OpenMS/OpenMS/pull/2969","diff_url":"https://github.com/OpenMS/OpenMS/pull/2969.diff","patch_url":"https://github.com/OpenMS/OpenMS/pull/2969.patch","issue_url":"https://api.github.com/repos/OpenMS/OpenMS/issues/2969","number":2969,"state":"open","locked":false,"title":"Feature/msfragger Adds MSFraggerAdapter as util","user":{"login":"lukaszimmermann","id":9307862,"avatar_url":"https://avatars2.githubusercontent.com/u/9307862?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszimmermann","html_url":"https://github.com/lukaszimmermann","followers_url":"https://api.github.com/users/lukaszimmermann/followers","following_url":"https://api.github.com/users/lukaszimmermann/following{/other_user}","gists_url":"https://api.github.com/users/lukaszimmermann/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszimmermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszimmermann/subscriptions","organizations_url":"https://api.github.com/users/lukaszimmermann/orgs","repos_url":"https://api.github.com/users/lukaszimmermann/repos","events_url":"https://api.github.com/users/lukaszimmermann/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszimmermann/received_events","type":"User","site_admin":false},"body":"Adds the MSFraggerAdapter as util. The util essentially boils down to parameter validation and writing the `fragger.params` file  \r\n\r\nSome considerations are:\r\n\r\n- There is no support for directly providing the `fragger.params` file, as this would be redundant to the ini file and also error-prone. \r\n- The default values for the parameters are taken from the official documentation (PDF). The flag` allow_multiple_variable_mods_on_residue` is set to true per default, hence the logic was inverted to the parameter flag `not_allow_multiple_variable_mods_on_residue`.\r\n- In MSFragger Variable modifications can be specified arbitrarily by providing the mass and some special syntax for residues and termini. This is unchanged here.\r\n- For the QProcess, a temp directory is created and the input spectra / database are linked there. This is required, because MSFragger writes indices to the same directory where the database resides.\r\n- Non-Unimod modifications can be present in the result pepXML file. This will become problematic when exported to mzTab ( #2779 ). \r\n- The temp working dir is deleted upon tool destruction. Can be prevented with -debug 2 to manually inspect the fragger.params file.\r\n- All parameters are non-advanced, except for the static modifications per residue (where cysteine has an added mass of 57.021464  per default)\r\n- The MSFragger.jar  can probably not be added to THIRDPARTY because of licensing. \r\n\r\nTests pending. I am going to do some searches with and without adapter and compare the results.\r\n\r\n\r\n","created_at":"2017-10-21T14:01:47Z","updated_at":"2017-10-22T07:55:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e0498aab02b99362361ae0ec51fc4b0612a6bad3","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969/commits","review_comments_url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969/comments","review_comment_url":"https://api.github.com/repos/OpenMS/OpenMS/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OpenMS/OpenMS/issues/2969/comments","statuses_url":"https://api.github.com/repos/OpenMS/OpenMS/statuses/6f96c3da0a3fe56a11c0c262f8461b7ee4f89f5f","head":{"label":"lukaszimmermann:feature/msfragger","ref":"feature/msfragger","sha":"6f96c3da0a3fe56a11c0c262f8461b7ee4f89f5f","user":{"login":"lukaszimmermann","id":9307862,"avatar_url":"https://avatars2.githubusercontent.com/u/9307862?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszimmermann","html_url":"https://github.com/lukaszimmermann","followers_url":"https://api.github.com/users/lukaszimmermann/followers","following_url":"https://api.github.com/users/lukaszimmermann/following{/other_user}","gists_url":"https://api.github.com/users/lukaszimmermann/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszimmermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszimmermann/subscriptions","organizations_url":"https://api.github.com/users/lukaszimmermann/orgs","repos_url":"https://api.github.com/users/lukaszimmermann/repos","events_url":"https://api.github.com/users/lukaszimmermann/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszimmermann/received_events","type":"User","site_admin":false},"repo":{"id":75833520,"name":"OpenMS","full_name":"lukaszimmermann/OpenMS","owner":{"login":"lukaszimmermann","id":9307862,"avatar_url":"https://avatars2.githubusercontent.com/u/9307862?v=4","gravatar_id":"","url":"https://api.github.com/users/lukaszimmermann","html_url":"https://github.com/lukaszimmermann","followers_url":"https://api.github.com/users/lukaszimmermann/followers","following_url":"https://api.github.com/users/lukaszimmermann/following{/other_user}","gists_url":"https://api.github.com/users/lukaszimmermann/gists{/gist_id}","starred_url":"https://api.github.com/users/lukaszimmermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lukaszimmermann/subscriptions","organizations_url":"https://api.github.com/users/lukaszimmermann/orgs","repos_url":"https://api.github.com/users/lukaszimmermann/repos","events_url":"https://api.github.com/users/lukaszimmermann/events{/privacy}","received_events_url":"https://api.github.com/users/lukaszimmermann/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lukaszimmermann/OpenMS","description":"The codebase of the OpenMS project","fork":true,"url":"https://api.github.com/repos/lukaszimmermann/OpenMS","forks_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/forks","keys_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/teams","hooks_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/hooks","issue_events_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/issues/events{/number}","events_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/events","assignees_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/assignees{/user}","branches_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/branches{/branch}","tags_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/tags","blobs_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/git/refs{/sha}","trees_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/statuses/{sha}","languages_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/languages","stargazers_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/stargazers","contributors_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/contributors","subscribers_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/subscribers","subscription_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/subscription","commits_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/commits{/sha}","git_commits_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/git/commits{/sha}","comments_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/comments{/number}","issue_comment_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/issues/comments{/number}","contents_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/contents/{+path}","compare_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/merges","archive_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/downloads","issues_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/issues{/number}","pulls_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/pulls{/number}","milestones_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/milestones{/number}","notifications_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/labels{/name}","releases_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/releases{/id}","deployments_url":"https://api.github.com/repos/lukaszimmermann/OpenMS/deployments","created_at":"2016-12-07T12:22:37Z","updated_at":"2016-12-07T12:23:00Z","pushed_at":"2017-10-22T07:53:41Z","git_url":"git://github.com/lukaszimmermann/OpenMS.git","ssh_url":"git@github.com:lukaszimmermann/OpenMS.git","clone_url":"https://github.com/lukaszimmermann/OpenMS.git","svn_url":"https://github.com/lukaszimmermann/OpenMS","homepage":null,"size":256310,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"OpenMS:develop","ref":"develop","sha":"91866b9b639fb7990a6809f09f6430155732f4b5","user":{"login":"OpenMS","id":5994841,"avatar_url":"https://avatars3.githubusercontent.com/u/5994841?v=4","gravatar_id":"","url":"https://api.github.com/users/OpenMS","html_url":"https://github.com/OpenMS","followers_url":"https://api.github.com/users/OpenMS/followers","following_url":"https://api.github.com/users/OpenMS/following{/other_user}","gists_url":"https://api.github.com/users/OpenMS/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenMS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenMS/subscriptions","organizations_url":"https://api.github.com/users/OpenMS/orgs","repos_url":"https://api.github.com/users/OpenMS/repos","events_url":"https://api.github.com/users/OpenMS/events{/privacy}","received_events_url":"https://api.github.com/users/OpenMS/received_events","type":"Organization","site_admin":false},"repo":{"id":15763403,"name":"OpenMS","full_name":"OpenMS/OpenMS","owner":{"login":"OpenMS","id":5994841,"avatar_url":"https://avatars3.githubusercontent.com/u/5994841?v=4","gravatar_id":"","url":"https://api.github.com/users/OpenMS","html_url":"https://github.com/OpenMS","followers_url":"https://api.github.com/users/OpenMS/followers","following_url":"https://api.github.com/users/OpenMS/following{/other_user}","gists_url":"https://api.github.com/users/OpenMS/gists{/gist_id}","starred_url":"https://api.github.com/users/OpenMS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OpenMS/subscriptions","organizations_url":"https://api.github.com/users/OpenMS/orgs","repos_url":"https://api.github.com/users/OpenMS/repos","events_url":"https://api.github.com/users/OpenMS/events{/privacy}","received_events_url":"https://api.github.com/users/OpenMS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OpenMS/OpenMS","description":"The codebase of the OpenMS project","fork":false,"url":"https://api.github.com/repos/OpenMS/OpenMS","forks_url":"https://api.github.com/repos/OpenMS/OpenMS/forks","keys_url":"https://api.github.com/repos/OpenMS/OpenMS/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OpenMS/OpenMS/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OpenMS/OpenMS/teams","hooks_url":"https://api.github.com/repos/OpenMS/OpenMS/hooks","issue_events_url":"https://api.github.com/repos/OpenMS/OpenMS/issues/events{/number}","events_url":"https://api.github.com/repos/OpenMS/OpenMS/events","assignees_url":"https://api.github.com/repos/OpenMS/OpenMS/assignees{/user}","branches_url":"https://api.github.com/repos/OpenMS/OpenMS/branches{/branch}","tags_url":"https://api.github.com/repos/OpenMS/OpenMS/tags","blobs_url":"https://api.github.com/repos/OpenMS/OpenMS/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OpenMS/OpenMS/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OpenMS/OpenMS/git/refs{/sha}","trees_url":"https://api.github.com/repos/OpenMS/OpenMS/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OpenMS/OpenMS/statuses/{sha}","languages_url":"https://api.github.com/repos/OpenMS/OpenMS/languages","stargazers_url":"https://api.github.com/repos/OpenMS/OpenMS/stargazers","contributors_url":"https://api.github.com/repos/OpenMS/OpenMS/contributors","subscribers_url":"https://api.github.com/repos/OpenMS/OpenMS/subscribers","subscription_url":"https://api.github.com/repos/OpenMS/OpenMS/subscription","commits_url":"https://api.github.com/repos/OpenMS/OpenMS/commits{/sha}","git_commits_url":"https://api.github.com/repos/OpenMS/OpenMS/git/commits{/sha}","comments_url":"https://api.github.com/repos/OpenMS/OpenMS/comments{/number}","issue_comment_url":"https://api.github.com/repos/OpenMS/OpenMS/issues/comments{/number}","contents_url":"https://api.github.com/repos/OpenMS/OpenMS/contents/{+path}","compare_url":"https://api.github.com/repos/OpenMS/OpenMS/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OpenMS/OpenMS/merges","archive_url":"https://api.github.com/repos/OpenMS/OpenMS/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OpenMS/OpenMS/downloads","issues_url":"https://api.github.com/repos/OpenMS/OpenMS/issues{/number}","pulls_url":"https://api.github.com/repos/OpenMS/OpenMS/pulls{/number}","milestones_url":"https://api.github.com/repos/OpenMS/OpenMS/milestones{/number}","notifications_url":"https://api.github.com/repos/OpenMS/OpenMS/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OpenMS/OpenMS/labels{/name}","releases_url":"https://api.github.com/repos/OpenMS/OpenMS/releases{/id}","deployments_url":"https://api.github.com/repos/OpenMS/OpenMS/deployments","created_at":"2014-01-09T10:15:13Z","updated_at":"2017-10-21T05:32:47Z","pushed_at":"2017-10-22T07:53:43Z","git_url":"git://github.com/OpenMS/OpenMS.git","ssh_url":"git@github.com:OpenMS/OpenMS.git","clone_url":"https://github.com/OpenMS/OpenMS.git","svn_url":"https://github.com/OpenMS/OpenMS","homepage":"https://www.openms.de","size":256287,"stargazers_count":88,"watchers_count":88,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":92,"mirror_url":null,"archived":false,"open_issues_count":513,"forks":92,"open_issues":513,"watchers":88,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969"},"html":{"href":"https://github.com/OpenMS/OpenMS/pull/2969"},"issue":{"href":"https://api.github.com/repos/OpenMS/OpenMS/issues/2969"},"comments":{"href":"https://api.github.com/repos/OpenMS/OpenMS/issues/2969/comments"},"review_comments":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969/comments"},"review_comment":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OpenMS/OpenMS/pulls/2969/commits"},"statuses":{"href":"https://api.github.com/repos/OpenMS/OpenMS/statuses/6f96c3da0a3fe56a11c0c262f8461b7ee4f89f5f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"lukaszimmermann"}}