commit 55e53bebf7fa20f2570957e40a05fcd87db1b385 Merge: 1dbf272 861b7f8 Date: Sat Nov 14 15:02:29 2020 -0500 Merge pull request #5082 from RosettaCommons/vmullig/make_helical_bundle_predict_public Make the helical_bundle_predict app into a public app This seems stable enough to make it public, and I've had a few requests from external Rosetta users who can see the documentation for the app but who can't access the app itself. Tasks: - [x] Move `helical_bundle_predict.cc` from `apps/pilot/vmullig` to `apps/public/helical_bundle`. - [x] Update tracer output. - [x] Add CitationManager functions. - [x] Check that there are good integration tests. (I think I wrote some.) - [x] Check that integration tests produce reasonable output. - [x] Check that MPI tests produce reasonable output. - [x] Beauty. - [x] Check documentation and update accordingly. commit 1dbf27255a5e24de5f00bfbc2238c4630aba0b3b Merge: 6e44474 909fc90 Date: Fri Nov 13 08:16:34 2020 +0100 Merge pull request #5062 from RosettaCommons/lqtza/update-snugdock-sci-test Update SnugDock Scientific Test to Use CAPRI Metrics commit 6e444740edf67e0b1d3f55da70337dab122c9988 Merge: fc7820a 6ec58ef Date: Thu Nov 12 18:43:42 2020 -0500 Merge pull request #5079 from RosettaCommons/vmullig/suppress_unnecessary_warning Suppress a warning message in a context in which the thing that it warns about is not an issue. This PR suppresses warnings about out-of-date residue connections in a context in which we're about to update the residue connections anyways. Users have raised questions about this unnecessary warning in the past, thinking that it indicates something going wrong when it does not. This is expected to cause cosmetic changes to a bunch of integration tests, so I'm pulling it out into its own pull request. commit fc7820a6e329c28b964abd21f75b729030082dd8 Merge: 6de9133 d941260 Date: Thu Nov 12 12:15:41 2020 -0500 Merge pull request #5075 From branch aleaverfay/hotfix_rama_ats_w_dof_derivs Fix a segfault that shows up when using cartesian minimization with the "old" (pre ref2015) rama term on termini. Now, the RamachandranEnergy class checks residues to see that they're not termini before appending the dof-deriv atoms for their phi or psi, since if they are termini, then those atoms don't exist. The Ramachandran class (which defines the potential) uses logic to decide whether a residue should have its energy counted; that logic needs to be invoked by the RamachandranEnergy class in its atoms_with_dof_derivatives function. Thanks for the heads up, Florian and Julia! Thanks for the help in zeroing in out the problem, TJ! commit 6de9133ab53423d54bcc1cb79b834bd4a6c923b4 Merge: 1d3bafc 8cd06c9 Date: Wed Nov 11 12:49:49 2020 -0500 Merge pull request #5070 from RosettaCommons/vmullig/remove_metal_connections_mover Add a mover that removes connections that were added by the -auto_setup_metals flag or the SetupMetalsMover It can be convenient to be able to remove bonds between metal-liganding residues and metals (_e.g._ for mutagenesis protocols in which metal-coordinating positions are mutated). This pull request aims to add a mover that does this. The mover will: - Remove the bonds between liganding residues and metals. - Remove the custom variant types from the residues. - Remove the custom variant types from the metals. - If a residue selector is provided, this behaviour will only apply when a liganding residue _and_ the metal are selected by the selector. Otherwise, it will apply to the whole pose. Tasks: - [x] Add the mover. - [x] parse_my_tag() - [x] provide_xml_schema() - [x] apply() - [x] Unit tests. - [x] For applying to whole pose. - [x] For applying to selection. - [x] Documentation. - [x] Pull request #4980 should be merged before this one. - [x] This PR should be updated with changes from PR #4980 (simplified interface for CitationManager). - [x] Beauty. commit 1d3bafc677841e99ded19163b60e9f8a605899a9 Merge: c116855 566856e Date: Mon Nov 9 19:08:32 2020 -0600 Merge pull request #4980 from RosettaCommons/roccomoretti/cleanup_citation_manager Simplify interface for using CitationManager. There was way too much boilerplate involved with adding citation manager functions, pretty much all of which is unneeded. This PR reduces the interface for most usage down to one: a void provide_citation_info(basic::citation_manager::CitationCollectionList & citations) const member function. The current CitationCollection and the UnpublishedModuleInfo have been unified under a simple CitationCollectionBase class, which now means that both cited and uncited can be added to the same CitationCollectionList, and the CitationManager will deconvolute them when it needs to. The CitationCollectionList is basically a glorified vector1 with convenience functions to add() citation collections to it. It's set up not only to be able to add CitationCollection and UnpublishedModuleInfo (pointer) objects, but has some template magic which means that you can citations.add() sub-objects directly, which will automatically invoke their provide_citation_info() member function, making the implementation of the provide_citation_info() functions much simpler. There shouldn't be any change to what is actually printed, modulo potential order rearrangement. commit c1168558ec6b3705f3e3c0bc4be791f35a4121b9 Merge: 9fdd492 466cfe4 Date: Mon Nov 9 15:12:19 2020 -0600 Merge pull request #5031 from RosettaCommons/roccomoretti/v3000_sdf_parser Update the V3000 SDF parser. It looks like the V3000 format SDF parser wasn't working properly. (And wasn't tested.) commit 9fdd492f0eed2d37648a5b19cf9292ea64b74d65 Merge: 0a8c35c 88944aa Date: Fri Nov 6 17:21:09 2020 -0600 Merge pull request #5049 from RosettaCommons/roccmoretti/disable_ligand_dock_performance Disable the LigandDockProtocol performance test. This test is one of the noisiest performance test. (Probably because it's attempting to do too much in each cycle.) Additionally, it's testing an old, outdated protocol. If we want to re-enable this, we probably want to do more granular testing (different tests for each step), and test the most recent version of the protocol. commit 0a8c35c48d19a8d014321694bf61db9c3d3d32f6 Merge: e014eb0f 2af54b2 Date: Fri Nov 6 17:20:28 2020 -0600 Merge pull request #5047 from RosettaCommons/roccomoretti/database_md5_mpi Fix database_md5 MPI issue. My recent changes to the database_md5 test didn't work 100% with the MPI build, as there's some spurious lines which now get printed (and diffed) there. Move the log files which we don't need to compare to a .ignore file instead. commit e014eb0f1468dde852a56de15acd01cd2fe4c7a6 Merge: aaa3e16 daa360a Date: Thu Nov 5 13:51:02 2020 -0500 Merge pull request #4991 from RosettaCommons/francesc45/logic_residue_selector Add LogicResidueSelector which takes booleans in its option commit aaa3e164fa0ee89e712cec626c71770d9b5816c1 Merge: 9a816aa 6b24b8c Date: Thu Nov 5 12:19:27 2020 -0500 Merge pull request #5069 from RosettaCommons/JackMaguire/FixJD3Issue Fixing and commenting JD3NodeManagersTests:test_stop_early unit test commit 9a816aa942038d5b608ef13757460358295dda10 Merge: 36a2b8f d17592d Date: Wed Nov 4 20:23:08 2020 -0700 Merge pull request #5068 from RosettaCommons/sergey/binder fixing PyRosetta notebook tests commit 36a2b8fe7ca760de0131e29de8d45076c629290e Merge: 8af1905 bf89d2a Date: Tue Nov 3 16:31:08 2020 -0700 Merge pull request #5067 from RosettaCommons/sergey/binder updating PyRosetta memory requirements during building commit 8af190522629229eeb78a111e88f014204c42ab3 Merge: e35e009 4f26c68 Date: Mon Nov 2 18:08:03 2020 -0600 Merge pull request #5064 from RosettaCommons/roccomoretti/fix_clang_tidy Fix Clang tidy issue with ResidueTypeSet. Sergey's recent changes caused clang-tidy to point out issues with ResidueTypeSet. Resolve these. commit e35e009174f3304acd31ce6b3573f6079ee87d87 Merge: 1a52b0a 000bd2d Date: Mon Nov 2 10:45:05 2020 -0600 Merge pull request #5032 from RosettaCommons/roccomoretti/license Add a LICENSE.md Include the current Academic license with the code. Be sure to point out that this is the Academic version, and doesn't apply to commercial users. There's some potential deficiencies in the current text, but those would need to get fixed upstream at UW first. commit 1a52b0a5209a8c2fb16689843b9225f9b3b85dd7 Merge: 0847d9e 023fb75 Date: Fri Oct 30 18:57:11 2020 -0500 Merge pull request #5063 from RosettaCommons/roccomoretti/fix_thread_frag_picker Attempt to stabilize integration.thread fragment_picker test. The fragment_picker test in the multithreaded case is noisy on the test server. This looks to be due to fragment sorting. Depending on when the threads finish, equivalently scored fragments can come in different orders. Attempt to stabilize this by sorting on FragID when the scores are identical. commit 0847d9e4987d5c892c72f913bd1f9dcb6ed71071 Merge: 9f64dcf a0676b2 Date: Fri Oct 30 16:06:19 2020 -0600 Merge pull request #5054 from RosettaCommons/benchmark various fixes in preparation to update Mac testing server to Catalina commit 9f64dcffe297ee46f5259e47c90eadbf3b40d143 Merge: 7a7dcd1 cb4d8f7 Date: Tue Oct 27 11:42:54 2020 -0400 Merge pull request #5060 from RosettaCommons/aleaverfay/hotfix_from_4924 Add a missing inclusion to fix release unit test build I had a unit test that was not compiling in release mode due to undefined symbols not caught in debug mode commit 7a7dcd1807221bde98667a67e4bf75db2359c580 Merge: 21bc3e8 a1b70c5 Date: Mon Oct 26 16:00:53 2020 +0100 Merge pull request #5028 from RosettaCommons/glis-glis/iphold Added iphold option to ligand_dock app commit 21bc3e827193816b273285764b21baca52390ad6 Merge: 8e1e8f8 1b53aa0 Date: Sat Oct 24 12:36:05 2020 -0400 Merge pull request #5052 from RosettaCommons/jkleman/SciBen_membrane scientific benchmarks for membrane runs - finalizing the following tests: * mp_f19_decoy_discrimination * mp_f19_sequence_recovery * mp_f19_energy_landscape commit 8e1e8f81ba4206e7f4304b3609a9bbe82ba98943 Merge: 5654846 bdc7bc2 Date: Fri Oct 23 15:21:38 2020 -0700 Merge pull request #5044 from RosettaCommons/vmullig/fix_multithreaded_ig_symm_test Fix the multithreaded_ig_symm integration test and reinstate it This PR aims to fix this previously permabroken test. Tasks: - [x] PR #5043 must be merged before this one. (This branch is branched off of `roccomoretti/fix_tests`). - [x] Revert 074fe9c78a2f157d245b1ed9cef9fd9e13d9487f to re-enable the test. - [x] Confirm that it fails. - [x] Find the problem --> threshold was just a bit too low. - [x] Fix it --> threshold raised a bit. - [x] Confirm that test passes on my machine. - [x] Confirm that test passes on test server. commit 565484632f92ce227392a792c2857bd3140ccd57 Merge: b07f96d ac7ec64 Date: Fri Oct 23 01:33:37 2020 -0400 Merge pull request #5051 from RosettaCommons/jkleman/SciBen_snugdock Jkleman/sci ben snugdock: adjusting cutoffs commit b07f96d1c81473ee61b16cdccc8fd2cba4829e59 Merge: 670cac3 ab1fc26 Date: Thu Oct 22 12:17:27 2020 -0400 Merge pull request #4924 from RosettaCommons/aleaverfay/dof_deriv_bugfix Fix score/deriv mismatch w/ DOF derivs in cart min Terms like RamaPrePro and Dunbrack and P_AA_PP are three body energies that masquerade as one- and two-body energies. Because they depend on both phi and psi, and phi extends into the previous residue and psi extends into the next restidue, they depend on the coordinates of three residues. The DOFs that they define, however, live within a single residue in the atom tree. The N atom's atom-tree torsion defines phi; the CA atom's atom-tree torsion defines psi. So we usually just call these terms one-body energies (or in RamaPrePro's case, a two-body energy). When we run atom-tree minimization on residue i (and not residue i+1), then when residue i's DOF's change, residue i's energies are updated and residue i+1's energies are not. This is OK because residue i+1's DOFs are not changing, even though the coordinates for residue i are moving. When we run cartesian minimization on residue i (and not on residue i+1), however, then residue i+1's DOFs do change. Until the introduction of RamaPrePro, cartesian minimization had a discrepancy between the score function that it was optimizing and the true score function for the structure, but did not have a derivative/score function discrepancy. The DOFs for residue i+1 were changing, but neither the score for residue i+1 nor the derivatives for those DOFs were evaluated. RamaPrePro, however, is a two-body energy. The energy for RamaPrePro is evaluated on edges in the minimization graph (e.g. the edge from i to i+1), but the DOF derivatives are evaluated for the lower residue. This meant, when residue i-1 was held fixed and residue i was allowed to move, that the changing score for the i/i+1 interaction was evaluated but the derivatives for this changing score were not. The (fairly involved) solution for this bug is to have DOF-derivative-defining (DDD) energy methods report which atoms define the DOFs that they examine for a particular residue, and then activate energy methods for certain residues if these atoms are moving. To report what atoms define a DOF off the edge of a residue, I have created a new class: the PartialAtomID, which can either refer to a particular atom, or to an atom defined relative to an inter-residue connection. This code works properly now for my original test case that relied on cartesian minimization of a subset of the Pose (no more inaccurate G! messages), as well as (asymmetric) cartesian minimization unit tests, and new unit tests for symmetric cartesian minimization. commit 670cac3c1bcc1062716db7ebbee004603255d16f Merge: 34062fc 1acd36e Date: Mon Oct 19 10:08:18 2020 -0500 Merge pull request #5043 from RosettaCommons/roccomoretti/fix_tests Fix some tests broken in master. * Fix crashes due to a bug introduced by PR #4986 in mover error handling * Make the database_md5 test less noisy * Disable (until fixed) the perma-broken multithreaded_interaction_graph_accuracy_symm * Fix an issue with undefined behavior in RDKit which is showing in our tests. commit 34062fceaab25d04e04b5a161e342f64ec31ca99 Merge: 6bff5b0 592a190 Date: Fri Oct 16 15:41:27 2020 -0500 Merge pull request #5033 from RosettaCommons/roccomoretti/move_loop_relax Move LoopRelaxMover to different library level. PR #5028 has issues due to library levels. This PR (being merged independently) should alleviate those issues by moving the LoopRelaxMover from protocols 5g to protocols 4. (into a new protocols/relax/loop directory). This also requires moving some utility functions from protocols/comparative_modeling/util.hh to protocols/loops/util.hh, but that's arguably the better place for them, anyway. commit 6bff5b0f5e35347b5777b542cc2067d60c5c6683 Merge: d289fbd 0bd8dcd Date: Fri Oct 16 16:32:41 2020 -0400 Merge pull request #5038 from RosettaCommons/jkleman/SciBen_FlexPepDock Jkleman/sci ben flex pep dock: FlexPepDock: fixed the technical evaluation error - this test wasn't supposed to be passing according to what the readme said. Fixed the test, the RMSD cutoffs and adjusted the readme accordingly commit d289fbd0799127309a9f987d81ba7e1785912425 Merge: 03f66bc 045e3e9 Date: Fri Oct 16 16:30:54 2020 -0400 Merge pull request #5037 from RosettaCommons/jkleman/SciBen_ddg_ala_scan small edits to ddg_ala_scan based on SMLs comments commit 03f66bc617be959a19ce45a6a983c0e9c98cc2e6 Merge: 3548d5e ab0b743 Date: Fri Oct 16 14:18:46 2020 -0500 Merge pull request #5035 from RosettaCommons/roccomoretti/fix_compile_noise Fix deprecation warning issues with Boost update. The recent update to Boost 1.74 has caused issues with some of the added deprecation warnings. Theoretically, these should just be warnings and not errors, as they happen in external headers (and we include them with -isystem), but there have been reports of Rosetta not compiling. (And they're just annoying/ugly.) commit 3548d5ed6e9f36f69efe414b4e30132a5077ab6d Merge: b8ee43f 8ed6853 Date: Tue Oct 13 11:51:39 2020 -0500 Merge pull request #4986 from RosettaCommons/roccomoretti/pp_sm_addition Add the ability to run simple metrics directly from the PROTOCOLS section. SimpleMetrics were slightly harder to use than Filters for reporting values, as you could not add them directly to the PROTOCOL section. This adds the ability to add SimpleMetrics with the simple directive , which evaluates them at that point in the protocol, and then adds them to the pose to be output as scores (just like if you did a RunSimpleMetrics mover.) By default, the metrics are labeled according to their names (the strings in the metrics= line.) You can change this with a labels=(comma separated list), which will allow you to provide particular values to be used for the output. If you use '-' (a single dash) as a label, the "normal" labeling will be used. Examples from the integration test: -- adds the L3_fa_rep metric under the label "L3_fa_rep" -- adds the three metrics under the labels "TotEnergy" "my_rmsd" and "SaSa", respectively. -- Adds the L3_interactions metric to the output under it's default name with custom type, etc. (which happens to be "L1_interaction_energy" in the integration test case, and adds the L3_no_sol metric under the "L3_no_sol" name. -- adds the L3_fa_rep metric under the "interact_rep" name, and the ss metric under the name "ss" The relabeling should work with string, per-residue and composite metrics, with (per residue metric) giving a number of pr_hbond_{resnum} entries, and (composite string) giving a bunch of protocols_{label} entries. The RunSimpleMetricsMover should still work as it has before, but potentially with a greater number of options. commit b8ee43f4fb8f2cdf71c7044a4d4280f1a8ee2f94 Merge: d9ca41f 37529be Date: Mon Oct 12 18:23:57 2020 -0400 Merge pull request #5027 from RosettaCommons/vmullig/check_cterm_amidation_patch Debug the Cterm_amidation patch A few users have complained about this. Adding unit test for desired behaviour. Will debug if unit test fails. EDIT: Yes, the patch was messed up. It's fixed now, and the unit test will ensure that it stays fixed. commit d9ca41fbdcccde6b12d59eaa426b59eda93e9515 Merge: f1d4f1d bff8b3c Date: Wed Oct 7 15:38:36 2020 -0600 Merge pull request #5020 from RosettaCommons/bcov/clang_code Fixing clang code quality commit f1d4f1d950e82d31b2e8991004d8d104451f6b00 Merge: 0926851 f37333c Date: Tue Oct 6 21:32:40 2020 -0600 Merge pull request #5010 from RosettaCommons/bcov/SapStuff SapScore in rosetta as a metric and a score_term commit 0926851bab593a637cd910ee65ede0eaf698aba9 Merge: 93d20f3 ab81849 Date: Sun Oct 4 16:49:01 2020 -0600 Merge pull request #5014 from RosettaCommons/sergey/rosie ROSIE related additions and refactoring commit 93d20f3353a4e3723a77c07ba03110f2d5bc516b Date: Sun Oct 4 11:15:09 2020 -0600 triggering clean rebuild commit f0ac18258159b141c128333a6290a9c7882c8a18 Merge: f01fa77 a2064b0 Date: Fri Oct 2 16:34:12 2020 -0400 Merge pull request #5016 from RosettaCommons/vmullig/fix_iterator_copy_issue Fixing clang 12 build for MacOS. Clang 12 warns about unnecessary copying when using auto as an iterator in a for loop. commit f01fa77e7385c2c0bdac6e346b24a6d8d900e7c7 Merge: ffd723f cea00a8 Date: Fri Oct 2 11:47:11 2020 -0400 Merge pull request #4945 from RosettaCommons/jkleman/benchmarks Jkleman/benchmarks: fixing a bunch of scientific tests but there is more work to do. Just want master to be up to date so I can see what else needs fixing. commit ffd723f633ab334c6db11bb5ad79d9db6c68683e Date: Fri Oct 2 02:09:21 2020 -0400 RosettaAI: Setting rosetta_scripts_scripts submodule to latest origin/master version. commit 2e03da6a6d3def9a5299d6ea3944442f6b9c029d Merge: 91a0aaf 39beb9c Date: Thu Oct 1 14:51:23 2020 -0400 Merge pull request #5005 from RosettaCommons/vmullig/fix_modernize_use_nullptr_warnings Trying to fix clang-tidy warnings They're currently making a lot of red on the test server. These warnings are false alarms, and can be safely ignored, but I don't like having a lot of red lights that people are trained to ignore. So here there's a bit of a problem. The original point of pull request #4941 (which created these false alarms) was to deal with the fact that if a developer wrote `tag->getOption( "myoption", "false" )`, the string literal would be interpreted as a boolean `true`. To get around this, it was necessary to introduce a `Tag::getOption( std::string const &, char * const )` variant, but that means that `tag->getOption( "myoption", 0 )` gets interpreted as `nullptr` (even if I explicitly delete the variant for core::Size). This means I have to explicitly delete the variant for core::Size _and_ explicitly say `tag->getOption( "myoption", core::Size(0) )`, which is a bit frustrating... Edit: Rocco suggested implementing `Tag::getOption( std::string const&, int const)`, since `int` is a "preferred" interpretation of `0` (over `core::Size` or `nullptr`). This seems to work, and ensures that `tag->getOption( "myoption", 0 )` can still be used as it was previously. I'll leave the places where I converted to `tag->getOption( "myoption", core::Size(0) )` since they're harmless, but I won't bother converting the rest. Note that I am deliberately deleting the Real and bool versions of the int `getOption`, since doing so has revealed places where people were setting the wrong type. (So initializing a Real requires `tag->getOption("myoption", 0.0)`, and `tag->getOption("myoption", 0)` will result in an error. If people really hate this, we can switch it back later, but it does catch bugs.) Note to reviewers: I know that a lot of files have changed here, but most changes are trivial. There are five types of changes in this PR: 1. Changes to Tag.cc/Tag.hh. These are the most important. 2. A few places where the changes revealed the wrong type of datum being set (e.g. setting a bool with a tag parsed as a core::Real). The `SidechainMover` is one example. These are not so important. 3. Lots of places where `tag->getOption("myoption", )` was replaced with `tag->getOption("myoption", )`. These are largely cosmetic, but they allow us to be more pedantic about the structure of `getOption` so that we can catch the errors in number 2. These are not so important. 4. Some places where I was changing `tag->getOption("myoption", 0)` to `tag->getOption("myoption", core::Size(0))` before Rocco suggested a fix that no longer necessitated this. I've left these since it was too much trouble to change them all back and since they do no harm. These are not so important. 5. Addition of the `OLDER_CLANG` definition for clang < 4.0. This allows me to get around the problem described below. Added note: this PR revealed a bug in older versions of clang. In clang 3.4 (on the test server), it seems you can't have a deleted general template followed by an explicitly-defined template specialization (which is useful to say, "I don't want this function to accept anything but the types that I define, and I want a compiler error otherwise"). I'm special-casing that here by defining OLDER_CLANG when compiling with clang < 4.0, and implementing a general version of `T Tag::getOption(std::string const &, int const) const` that throws an error if invoked if OLDER_CLANG is defined (using `delete` to turn this runtime error into a compile-time error for newer compilers). So for older clang we have the following pseudo-code: ```c++ class Tag { ... template< class T > T getOption( std::string const &, int const ) const { /*Throw error here at runtime if ever called.*/ } ... }; template <> core::Size Tag::getOption( std::string const &s, int const i ) const { /*Actually parse the tag without error.*/ } ``` On newer clang or on gcc or icc, it becomes: ```c++ class Tag { ... template< class T > T getOption( std::string const &, int const ) const = delete; //Compiler error instead of runtime error -- better for catching stuff (e.g. a `bool` or `string` initialized with `8`). ... }; template <> core::Size Tag::getOption( std::string const &s, int const i ) const { /*Actually parse the tag without error.*/ } ``` commit 91a0aaf27df968713ae546097d16b13caea4505b Merge: 0de1860 b10fde5 Date: Thu Oct 1 09:56:21 2020 -0600 Merge pull request #5002 from RosettaCommons/bcov/SimpleMetricSelector SimpleMetricSelector: a residue selector based on PerResidueRealMetrics commit 0de1860b16b427ab9cfd7fa9d837b1c864a99c7d Merge: 1bd516e d107137 Date: Wed Sep 30 11:22:29 2020 -0500 Merge pull request #5009 from RosettaCommons/roccomoretti/update_boost Update Boost version to 1.74 commit 1bd516e6d5b5b37cf4f1a504bba1b4c090ecdbfb Date: Wed Sep 30 09:20:40 2020 -0700 Build `zlib` from sources (#4968) Build `zlib` from sources Issue Details: Rosetta historically has relied on `zlib` existing on the OS, but Windows doesn't ship with `zlib`. Fix Details: Use the `zlib` sources checked in to Rosetta to build `zlib` for Windows only. commit c529511797b2a9f0fc08d36c91c226494214643a Merge: 40e5aaf 32134f4 Date: Tue Sep 29 18:11:33 2020 -0700 Merge pull request #5011 from RosettaCommons/everyday847/hotfix_swm_integration_tests SWM: This should fix up integration test breakage commit 40e5aaf7ca3dbaac729c18abbd3e3ef04f0272c0 Merge: a6b2807 345d2d2 Date: Sat Sep 26 05:24:06 2020 -0400 Merge pull request #4997 from RosettaCommons/vmullig/non_recursive_refold Attempt to remove recursion in internal coordinate updates Our current internal coordinate update logic can result in call stacks thousands of layers deep. When stack size is limited, this can result in stack overflows. Andy and I have been running into this working with larger poses in threads on MacOS, where the stack size of non-primary threads is limited to 512 kB (something that it's not possible to override when using std::threads). Switching to non-recursive logic will probably have benefits for performance even outside of a multi-threaded context, so let's give this a try. This is complicated by the fact that, given a parent atom P and children C1...CN, the stub used to update C1 is modified by the updating operation _and then_ passed to C2 to update it (where it changes again). So the existing recursive logic was much easier than a non-recursive iterative approach, since it's not straightforward to store the data that are needed to compute each child. The new logic is to iterate over atoms at a given level of depth, updating those atoms' coordinates while constructing two lists: a list of unique stubs with which to update their children, and an ordered list of pairs of (child atom, pointer to stub to use to update). In the next iteration of batches of parents, the old children become the new parents and the old children's stublist becomes the new parents' stublist, parents' coordinates are updated in sequence (suitably modifying the stubs in the parent stublist), and a new children's stublist and children list is populated. This continues until a generation produces no children. This is summarized below: Old: - Start with root atom and its stub. - Recursive function: - Update current atom with stub (updating stub in the process). - Construct child's starting stub. - Loop over all children: - Recursively call this function, passing in a child and the child's stub (both of which will be modified). New: - Allocate space for list of parents' stubs, ordered list of parents. - Allocate space for list of children's stubs, ordered list of children. - Put root atom and its stub into ordered list of parents and list of parents' stubs, respectively. - Do: - Loop over current parents: - For each parent, update current atom with stub (updating stub, owned by parent stublist, in the process). - Construct child's starting stub, and store it in the children's stub list. - For each child, store pair of (child, pointer to child's stub in children's stub list) in children's list. - Delete parents' stub list and list of current parents. - Children's stub list and children's list become parents' stub list and parents list, respectively. (Done with dual buffers and pointer swap for efficiency). - Break if new parents list is empty (i.e. no children from last round). A few details: - I'm avoiding owning pointers due to the cost of incrementing and decrementing reference counts. - I am using raw pointers, but only for accessing objects that are owned by something else (where the lifetime is longer than the function in which I use raw pointers), which is no more dangerous than using references, or for objects owned by std::deques where the lifetime is longer than the raw pointers (again, no more dangerous than using references). - Since appending to a deque doesn't invalidate references to existing elements, storing pointers to those elements is safe. Tasks: - [x] Switch internal logic to a non-recursive algorithm based on ordinary iteration. - [x] Debug. - [x] Check unit tests. - [x] Check integration tests. - [x] Check performance tests. - [x] Check profile tests. - [x] Check scientific tests --> simple_cycpep_predict unchanged. - [x] Beauty. commit a6b280706530f72c728760cc65d227217cfd309e Date: Fri Sep 25 15:23:58 2020 -0700 Improve LocalRelax to work with DNA and be non-directional (#4971) I had a complex I wanted to use LocalRelax on but because of the directionality code it was incompatible with DNA. These changes remove the directionality, but allow non-protein residues to work with this code! I also updated a few XRW_TODO comments, and compared this to the previous implementation. compared to the previous LocalRelax, this code packs slightly more residues at a time (from ~140 -> ~200) but keeps approximately the same number of residues minimzing at each step (~50). K used to be some function of the distance between two CA/CB residues * directionality parameters * 0.28. now it's just based on the NBR_radius so it's triggered when the distance between two nbr atoms is <= nbr_radius_1 + nbr_radius_2. That's what I found to make the # residues that minimize/pack the most similar to the old version commit a5ac36f05e5844e61a2db82f8208a7ca81518147 Merge: 882f757 c16d45b Date: Fri Sep 25 11:37:24 2020 -0600 Merge pull request #4998 from RosettaCommons/sergey/f fixing Ninja build commit 882f7572276e2b1edc20953bfa53f80076f76eff Merge: 9ee477a fa02e69 Date: Fri Sep 25 07:44:49 2020 -0600 Merge pull request #5000 from RosettaCommons/revert-4999-revert-4714-roccomoretti/rdkit_submodule2 Revert "Revert "Add RDKit as a submodule to Rosetta."" commit 9ee477a1d9d615da653167cf059551268713dda2 Date: Thu Sep 24 22:05:54 2020 -0600 initiating clean rebuild commit 56c232a7e5b5cad75d7714b2dde093aa35a0c8ad Merge: aa958df d67fdfe Date: Thu Sep 24 21:00:53 2020 -0600 Merge pull request #4999 from RosettaCommons/revert-4714-roccomoretti/rdkit_submodule2 Revert "Add RDKit as a submodule to Rosetta." commit aa958df63b145feab2e99670c2aad1da48377fdc Merge: 51cfed9 49334bb Date: Thu Sep 24 19:01:30 2020 -0700 Merge pull request #4845 from RosettaCommons/everyday847/evaluate_MMA_potentials Updates to the general monomer sampler commit 51cfed9ea3411cfa55de408cb0ff23fab8729856 Merge: d13ff3f 2f5ac77 Date: Thu Sep 24 17:29:23 2020 -0400 Merge pull request #4948 from RosettaCommons/bfrenz/refactored-ddg-fixes Bfrenz/refactored ddg fixes: This PR has recent fixes for the refactored version of the ddg code. They included fixes to the way in which the movemap is set up. It also resets the default values of certain options based on new findings with the debugged version. (from Brandon Frenz). commit d13ff3f9e5963c36c92283ea727413bb79823312 Merge: 2d86ef3 0a09661 Date: Thu Sep 24 15:28:26 2020 -0500 Merge pull request #4714 from RosettaCommons/roccomoretti/rdkit_submodule2 Add RDKit as a submodule to Rosetta. While Rosetta has a bunch of functionality for macromolecule modeling, it's lacking functionality for small molecule modeling. The RDKit (http://rdkit.org/) is a widely-used BSD-licensed library for chemoinformatics and analysis & manipulation of small molecules. While primarily used as a Python package, RDKit has a C++ library backing. This PR adds RDKit as a submodule in the external/ directory, and hooks the C++ library into Rosetta compilation. (Such that the files will be compiled with Rosetta.) In addition to the library, included in this PR are two classes to facilitate transformation from a Rosetta ResidueType to an RDKit molecule and back again. It also includes a SimpleMetric and a Mover which can be used to run a number of chemoinformatic measures (such as logP, TPSA, etc.) over a specified ResidueType. Other functionality such as rotamer library generation and ligand manipulation will be added in future PRs. (This PR is one in a series to merge my drug_design branch into master.) commit 2d86ef3298897a2735b1968a74a6003db44b3b24 Merge: d3ddb5b 165e45a Date: Wed Sep 23 13:57:09 2020 -0400 Merge pull request #4993 from RosettaCommons/vmullig/fix_unit_test_werror_clang12 Fix a warning-as-error in the unit test suite, raised by clang 12 Fixing the following error raised by clang 12's warnings-as-errors: ``` ./test/protocols/indexed_structure_store/utility.hh:96:21: error: loop variable 'pair' is always a copy because the range of type 'combined_range' (aka 'combined_range, ndarray::detail::StridedIterator, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type> >') does not return a reference [-Werror,-Wrange-loop-analysis] for ( const auto & pair : boost::combine(a, b) ) { ``` commit d3ddb5bb4d78d3d32e7664e57316ae5fbbed17d5 Merge: 490aa65 af7d088 Date: Tue Sep 22 22:31:48 2020 -0700 Merge pull request #4992 from RosettaCommons/fix_farfar_graphics conformation viewer setup/teardown commit 490aa654cb42c88a1422bf08c5d10403b803abe7 Merge: 85495e6 d1c28a8 Date: Mon Sep 21 16:45:43 2020 -0600 Merge pull request #4985 from RosettaCommons/klimaj/submodule_pyrc Update PyRosetta.notebooks submodule commit 85495e6d2ea894792b4210aee383c666458a280d Merge: d59c38d 26507ac Date: Mon Sep 21 15:33:05 2020 -0400 Merge pull request #4989 from RosettaCommons/vmullig/add_beta_branched_property Adding BETA_BRANCHED_SIDECHAIN property for amino acids. This is important for machine learning, if one wants to learn based on amino acid properties rather than based on one-hot encodings of amino acid identities. Without this, leucine and isoleucine are identical from properties alone. commit d59c38d1c00ca557f798b3fafb69cd34b6d98316 Merge: d441dd9 e27d7cc Date: Mon Sep 21 15:30:12 2020 -0400 Merge pull request #4981 from RosettaCommons/vmullig/update_clang_macos_settings Adding -Wno-implicit-function-declaration to the Mac/clang build options. Unfortunately, the recent update from clang 11 to clang 12 adds new warnings-as-errors that break the build of the C files in the external libraries. commit d441dd93c60c4be5722debe08f1bcc5d99c5ffa9 Date: Tue Sep 15 20:39:44 2020 -0400 beautifying commit 62fb38d7e6158d522c81357c9db19c3f2925ccf2 Merge: 8071b5e 1e8ac73 Date: Tue Sep 15 16:00:17 2020 -0700 Merge pull request #4871 from RosettaCommons/dimaio/dna_phil_modes A few general fixes for DNA. - Enabling (plus fix a few deriv discontinuities) in Phil's dna_dihedral_* terms. - Fix cart_bonded for DNA - Change default of -excluded_dna_dna to true. - Adding some utility functions (from Phil) for minimizing DNA with a zig-zag atom tree Integration test changes are due to: a) changes to cart_bonded database (and consequent changes in summation order of cart_bonded terms); b) integration tests that print EnergyMethodOptions or HbondOptions (which have had defaults changed). commit 8071b5ec488636b2cb456c6a74a0d7c19c3af497 Date: Tue Sep 15 16:12:50 2020 -0400 RosettaAI: Setting rosetta_scripts_scripts submodule to latest origin/master version. commit 0d85a0a274c4e979f681b8c7b89e45e726560125 Date: Mon Sep 14 09:14:03 2020 -0700 Add a Release and Debug Windows build definition (#4975) * Add a Release and Debug Windows build definition * Add `windows` and `windows_debug` CMake build definitions. * Add rules to build with MSVC (aka. cl). * Don't double-define `NOMINMAX` in `httplib.`. * Add a `types.hh` to use with the MSVC build. commit 61f38062d297c1a83107a77cd5b33afceeee53a0 Date: Fri Sep 11 17:59:35 2020 -0700 Make Python build scripts for Ninja work on Windows (#4962) * Make Python build scripts for Ninja work on Windows Issue Details: Currently the Python build scripts that set up the Ninja build uses Linux/Mac OS specific commands/assumptions. Fix Details: * Explicitly run Python scripts using `sys.executable` (instead of assuming that the OS knows how to handle `.py` files). * Handle Windows executables having a `.exe` suffix. * Either change `git` commands, or use Python to process output instead of using other tools that don't exist on Windows. commit 6ff6ab4b271587dd703540bf6c8868faa2f313a0 Merge: 678a77f b2dc04b Date: Fri Sep 11 03:15:43 2020 -0500 Merge pull request #4858 from RosettaCommons/alamo/EPRSpinLabel_speedup Small code changes to speed up EPRSpinLabel.cc commit 678a77f2030de5172193cc2f0102f9ed9ce8bf5e Merge: 3ba1aaa 473cd19 Date: Wed Sep 9 10:24:48 2020 -0600 Merge pull request #4951 from RosettaCommons/klimaj/pyrc Integration of PyRosettaCluster into pyrosetta.distributed