From 70e55c8311c0b862cc6fde3634d3f49f85d5bb26 Mon Sep 17 00:00:00 2001 From: Chapin Cavender <43589143+chapincavender@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:24:09 -0800 Subject: [PATCH] Update scalar couplings for BPTI, HEWL, and Ubq (#13) * Bugfix for 4-point water * Update NMR fit force fields * Timeseries analysis * Update scalar couplings for bpti, hewl, ubq * Fix bracket error in benchmark_targets * Disable time series analysis by default * Benchmark targets for Ala6 and Ala7 * Time series analysis for H bond scalar couplings --- proteinbenchmark/analysis.py | 230 +++++--- proteinbenchmark/analysis_parameters.py | 98 ++- proteinbenchmark/benchmark_targets.py | 91 ++- .../Protein-Null-0.0.2-OPC3.offxml | 14 +- .../Protein-Null-0.0.2-TIP3P-FB-1.259.offxml | 529 ----------------- .../Protein-Null-0.0.2-TIP3P-FB.offxml | 14 +- .../Protein-Specific-0.0.2-OPC3-1.259.offxml | 556 ------------------ .../Protein-Specific-0.0.2-OPC3.offxml | 14 +- .../Protein-Specific-0.0.2-TIP3P-FB.offxml | 14 +- .../ala6/ala6-scalar-couplings.dat | 36 ++ .../ala7/ala7-scalar-couplings.dat | 41 ++ .../bpti/bpti-scalar-couplings.dat | 88 +++ .../hewl/hewl-scalar-couplings.dat | 82 +++ .../observables/ubq/ubq-scalar-couplings.dat | 158 ++--- proteinbenchmark/force_fields.py | 30 +- proteinbenchmark/protein_system.py | 28 +- proteinbenchmark/system_setup.py | 6 +- 17 files changed, 736 insertions(+), 1293 deletions(-) delete mode 100644 proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB-1.259.offxml delete mode 100644 proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3-1.259.offxml create mode 100644 proteinbenchmark/data/observables/ala6/ala6-scalar-couplings.dat create mode 100644 proteinbenchmark/data/observables/ala7/ala7-scalar-couplings.dat create mode 100644 proteinbenchmark/data/observables/bpti/bpti-scalar-couplings.dat create mode 100644 proteinbenchmark/data/observables/hewl/hewl-scalar-couplings.dat diff --git a/proteinbenchmark/analysis.py b/proteinbenchmark/analysis.py index b5747d2..f93cbb0 100644 --- a/proteinbenchmark/analysis.py +++ b/proteinbenchmark/analysis.py @@ -7,12 +7,51 @@ from loos.pyloos import Trajectory from openff.toolkit import Molecule from openff.units import unit +from pymbar import timeseries from proteinbenchmark.analysis_parameters import * from proteinbenchmark.benchmark_targets import benchmark_targets, experimental_datasets from proteinbenchmark.utilities import list_of_dicts_to_csv +def get_timeseries_mean(correlated_timeseries: numpy.ndarray): + # Get burn-in time, statistical inefficiency, and maximum number of + # uncorrelated samples from pymbar.timeseries + t0, g, Neff_max = timeseries.detect_equilibration(correlated_timeseries, nskip=10) + + # Get an uncorrelated sample from the correlated timeseries + truncated_timeseries = correlated_timeseries[t0:] + uncorrelated_sample_indices = timeseries.subsample_correlated_data( + truncated_timeseries, g=g + ) + uncorrelated_timeseries = truncated_timeseries[uncorrelated_sample_indices] + + # Get mean and standard error of the mean for the correlated, truncated, and + # uncorrelated timeseries + N_correlated = correlated_timeseries.size + correlated_mean = correlated_timeseries.mean() + correlated_sem = correlated_timeseries.std(ddof=1) / numpy.sqrt(N_correlated) + N_truncated = truncated_timeseries.size + truncated_mean = truncated_timeseries.mean() + truncated_sem = truncated_timeseries.std(ddof=1) / numpy.sqrt(N_truncated) + N_uncorrelated = uncorrelated_timeseries.size + uncorrelated_mean = uncorrelated_timeseries.mean() + uncorrelated_sem = uncorrelated_timeseries.std(ddof=1) / numpy.sqrt(N_uncorrelated) + + return { + "Statistical Inefficiency": g, + "Correlated Mean": correlated_mean, + "Correlated SEM": correlated_sem, + "Correlated N": N_correlated, + "Truncated Mean": truncated_mean, + "Truncated SEM": truncated_sem, + "Truncated N": N_truncated, + "Uncorrelated Mean": uncorrelated_mean, + "Uncorrelated SEM": uncorrelated_sem, + "Uncorrelated N": N_uncorrelated, + } + + def align_trajectory( topology_path: str, trajectory_path: str, @@ -636,9 +675,10 @@ def compute_scalar_couplings( dihedrals_path: str, output_path: str, karplus: str = "vogeli", + time_series_output_path: str = None, ): """ - Compute NMR scalar couplings and chi^2 with respect to experimental values. + Compute NMR scalar couplings using a Karplus model. Parameters --------- @@ -647,12 +687,14 @@ def compute_scalar_couplings( dihedrals_path The path to the time series of dihedrals. output_path - The path to write the computed scalar couplings and chi^2 values. + The path to write the computed mean scalar couplings. karplus The name of the set of Karplus parameters to use. + time_series_output_path + The path to write the time series of computed scalar couplings. """ - # Check Karplus parameters + # Get Karplus parameters for scalar couplings associated with phi karplus = karplus.lower() if karplus == "vogeli": @@ -672,9 +714,12 @@ def compute_scalar_couplings( "\n case_dft1\n case_dft2" ) + # Get Karplus parameters for scalar couplings associated with psi karplus_parameters.update(WIRMER_KARPLUS_PARAMETERS) karplus_parameters.update(DING_KARPLUS_PARAMETERS) karplus_parameters.update(HENNIG_KARPLUS_PARAMETERS) + + # Get Karplus parameters for scalar couplings associated with chi1 karplus_parameters.update(PEREZ_KARPLUS_PARAMETERS) if karplus != "schmidt": @@ -708,6 +753,8 @@ def compute_scalar_couplings( observable_df.reset_index(drop=True, inplace=True) # Compute observables + if time_series_output_path is not None: + observable_timeseries = list() computed_observables = list() for index, row in observable_df.iterrows(): @@ -718,19 +765,17 @@ def compute_scalar_couplings( if observable == "3j_hn_ca": # Compute sine and cosine of phi and psi # Reset indices for products, e.g. cos phi * cos psi - phi = numpy.deg2rad( - dihedral_df[ - (dihedral_df["Dihedral Name"] == "phi") - & (dihedral_df["Resid"] == observable_resid) - ]["Dihedral (deg)"].values - ) + karplus_df = dihedral_df[ + (dihedral_df["Dihedral Name"] == "phi") + & (dihedral_df["Resid"] == observable_resid) + ] + phi = numpy.deg2rad(karplus_df["Dihedral (deg)"].values) - prev_psi = numpy.deg2rad( - dihedral_df[ - (dihedral_df["Dihedral Name"] == "psi") - & (dihedral_df["Resid"] == observable_resid - 1) - ]["Dihedral (deg)"].values - ) + karplus_df = dihedral_df[ + (dihedral_df["Dihedral Name"] == "psi") + & (dihedral_df["Resid"] == observable_resid - 1) + ] + prev_psi = numpy.deg2rad(karplus_df["Dihedral (deg)"].values) cos_phi = numpy.cos(phi) sin_phi = numpy.sin(phi) @@ -738,7 +783,7 @@ def compute_scalar_couplings( sin_psi = numpy.sin(prev_psi) # Compute estimate for scalar coupling - computed_coupling = numpy.mean( + computed_coupling = ( observable_parameters["cos_phi"] * cos_phi + observable_parameters["sin_phi"] * sin_phi + observable_parameters["cos_psi"] * cos_psi @@ -748,10 +793,7 @@ def compute_scalar_couplings( + observable_parameters["sin_phi_cos_psi"] * sin_phi * cos_psi + observable_parameters["sin_phi_sin_psi"] * sin_phi * sin_psi + observable_parameters["C"] - ) - - # Extrema of 3j_hn_ca Karplus curve from numerical optimization - karplus_extrema = [0.0329976 / unit.second, 1.08915 / unit.second] + ).m_as(unit.second**-1) else: # Get relevant dihedral angle @@ -777,68 +819,76 @@ def compute_scalar_couplings( dihedral_resname = PEREZ_KARPLUS_RESIDUE_MAP[row["Resname"]] observable_parameters = observable_parameters[dihedral_resname] - # Compute cos(theta + delta) and cos^2(theta + delta) + # Compute cos(theta + delta) karplus_angle = numpy.deg2rad( observable_parameters["delta"] + karplus_df["Dihedral (deg)"].values ) - cos_angle = numpy.cos(karplus_angle) - cos_sq_angle = numpy.square(cos_angle) # Compute estimate for scalar coupling # = A + B + C - karplus_A = observable_parameters["A"] - karplus_B = observable_parameters["B"] - karplus_C = observable_parameters["C"] - - computed_coupling = numpy.mean( - karplus_A * cos_sq_angle + karplus_B * cos_angle + karplus_C - ) - - # Get extrema of Karplus curve at - # J(0) = A + B + C - # J(pi) = A - B + C - # J(+/- arccos(-B / 2 A)) = -B^2 / (4 A) + C - karplus_extrema = [ - karplus_A + karplus_B + karplus_C, - karplus_A - karplus_B + karplus_C, - ] - - if numpy.abs(karplus_B / karplus_A) <= 2: - karplus_extrema.append( - -karplus_B * karplus_B / karplus_A / 4 + karplus_C, - ) + computed_coupling = ( + observable_parameters["A"] * numpy.square(cos_angle) + + observable_parameters["B"] * cos_angle + + observable_parameters["C"] + ).m_as(unit.second**-1) - # Compute contribution to chi^2 - experimental_coupling = row["Experiment"] / unit.second - uncertainty = observable_parameters["sigma"] - chi_sq = numpy.square((computed_coupling - experimental_coupling) / uncertainty) + # Get experimental uncertainty from Karplus model + experiment_uncertainty = observable_parameters["sigma"].m_as(unit.second**-1) # Truncate experimental coupling to Karplus extrema + experimental_coupling = row["Experiment"] / unit.second truncated_experimental_coupling = min( - max(experimental_coupling, min(karplus_extrema)), - max(karplus_extrema), - ) - truncated_chi_sq = numpy.square( - (computed_coupling - truncated_experimental_coupling) / uncertainty - ) + max(experimental_coupling, observable_parameters["minimum"]), + observable_parameters["maximum"], + ).m_as(unit.second**-1) + + if time_series_output_path is not None: + # Get mean and SEM of correlated, truncated, and uncorrelated timeseries + # for computed scalar coupling + computed_coupling_mean = get_timeseries_mean(computed_coupling) + + # Write time series of observable + observable_timeseries.append( + { + "Frame": karplus_df["Frame"], + "Time (ns)": karplus_df["Time (ns)"], + "Observable": observable, + "Resid": observable_resid, + "Resname": row["Resname"], + "Experiment": row["Experiment"], + "Experiment Uncertainty": experiment_uncertainty, + "Truncated Experiment": truncated_experimental_coupling, + "Computed": computed_coupling, + } + ) + + else: + computed_coupling_mean = { + "Correlated Mean": computed_coupling.mean(), + "Correlated SEM": ( + computed_coupling.std(ddof=1) / numpy.sqrt(computed_coupling.size) + ), + } + # Write computed means of observable computed_observables.append( { - "Uncertainty": uncertainty.m_as(unit.second**-1), - "Computed": computed_coupling.m_as(unit.second**-1), - "Chi^2": chi_sq, - "Truncated Experiment": ( - truncated_experimental_coupling.m_as(unit.second**-1) - ), - "Truncated Chi^2": truncated_chi_sq, + "Experiment Uncertainty": experiment_uncertainty, + "Truncated Experiment": truncated_experimental_coupling, + **computed_coupling_mean, } ) + if time_series_output_path is not None: + observable_timeseries_df = pandas.concat( + [pandas.DataFrame(df) for df in observable_timeseries] + ).reset_index(drop=True) + observable_timeseries_df.to_csv(time_series_output_path) + scalar_coupling_df = pandas.concat( [observable_df, pandas.DataFrame(computed_observables)], axis=1 ) - scalar_coupling_df.to_csv(output_path) @@ -847,6 +897,7 @@ def compute_h_bond_scalar_couplings( h_bond_geometries_path: str, output_path: str, karplus: str = "barfield", + time_series_output_path: str = None, ): """ Compute NMR 3J_N_CO scalar couplings and chi^2 with respect to experimental @@ -862,6 +913,8 @@ def compute_h_bond_scalar_couplings( The path to write the computed scalar couplings and chi^2 values. karplus The name of the set of Karplus parameters to use. + time_series_output_path + The path to write the time series of computed scalar couplings. """ # Check Karplus parameters @@ -921,6 +974,8 @@ def compute_h_bond_scalar_couplings( h_bond_df = pandas.read_csv(h_bond_geometries_path, index_col=0) # Compute observables + if time_series_output_path is not None: + observable_timeseries = list() computed_observables = list() for index, row in observable_df.iterrows(): @@ -950,7 +1005,7 @@ def compute_h_bond_scalar_couplings( # 3J(R, theta, phi) = ( # (exp(a R_0) A cos^2 phi + exp(a R_0) B cos phi + exp(a R_0) C) # * sin^2 theta + exp(a R_0) D cos^2 theta) * exp(-a R) - computed_coupling = numpy.mean( + computed_coupling = ( ( ( karplus_sin_sq_cos_sq * cos_sq_HOCN_dihedral @@ -961,21 +1016,54 @@ def compute_h_bond_scalar_couplings( + karplus_cos_sq * cos_sq_HOC_angle ) * exp_HO_distance - ) + ).m_as(unit.second**-1) + + # Get experimental uncertainty from Karplus model + experiment_uncertainty = karplus_parameters["sigma"].m_as(unit.second**-1) + + if time_series_output_path is not None: + # Get mean and SEM of correlated, truncated, and uncorrelated timeseries + # for computed scalar coupling + computed_coupling_mean = get_timeseries_mean(computed_coupling) + + # Write time series of observable + observable_timeseries.append( + { + "Frame": geometry_df["Frame"], + "Time (ns)": geometry_df["Time (ns)"], + "Observable": observable, + "Resid N": observable_resid_n, + "Resname N": row["Resname N"], + "Resid CO": observable_resid_co, + "Resname CO": row["Resname CO"], + "Experiment": row["Experiment"], + "Experiment Uncertainty": experiment_uncertainty, + "Computed": computed_coupling, + } + ) - # Compute contribution to chi^2 - experimental_coupling = row["Experiment"] / unit.second - uncertainty = karplus_parameters["sigma"] - chi_sq = numpy.square((computed_coupling - experimental_coupling) / uncertainty) + else: + computed_coupling_mean = { + "Correlated Mean": computed_coupling.mean(), + "Correlated SEM": ( + computed_coupling.std(ddof=1) / numpy.sqrt(computed_coupling.size) + ), + } + # Write computed means of observable computed_observables.append( { - "Uncertainty": uncertainty.m_as(unit.second**-1), - "Computed": computed_coupling.m_as(unit.second**-1), - "Chi^2": chi_sq, + "Experiment Uncertainty": experiment_uncertainty, + **computed_coupling_mean, } ) + if time_series_output_path is not None: + observable_timeseries_df = pandas.concat( + [pandas.DataFrame(df) for df in observable_timeseries] + ).reset_index(drop=True) + observable_timeseries_df.to_csv(time_series_output_path) + scalar_coupling_df = pandas.concat( [observable_df, pandas.DataFrame(computed_observables)], axis=1 ) diff --git a/proteinbenchmark/analysis_parameters.py b/proteinbenchmark/analysis_parameters.py index e27331f..aa02d74 100644 --- a/proteinbenchmark/analysis_parameters.py +++ b/proteinbenchmark/analysis_parameters.py @@ -1,11 +1,25 @@ """Default parameter values for analysis of trajectories.""" from pathlib import Path +from typing import TypedDict +import numpy import pandas from openff.units import unit from proteinbenchmark.utilities import package_data_directory + +class KarplusDict(TypedDict, total=False): + dihedral: str + delta: float + A: unit.Quantity + B: unit.Quantity + C: unit.Quantity + sigma: unit.Quantity + minimum: unit.Quantity + maximum: unit.Quantity + + DCD_TIME_TO_PICOSECONDS = 0.04888821 * unit.picosecond # Lists of atoms that make up named dihedrals in protein residues @@ -195,6 +209,7 @@ # Karplus parameters for backbone scalar couplings from # Hennig M, Bermel W, Schwalbe H, Griesinger C. (2000). J. Am. Chem. Soc. 122, # 6268-6277. +# Extrema of 3j_hn_ca Karplus curve from numerical optimization HENNIG_KARPLUS_PARAMETERS = { "3j_hn_ca": { "dihedral": "phi,prev_psi", @@ -208,11 +223,15 @@ "sin_phi_sin_psi": -0.14 / unit.second, "C": 0.54 / unit.second, "sigma": 0.10 / unit.second, + "minimum": 0.0329976 / unit.second, + "maximum": 1.08915 / unit.second, }, } # Karplus parameters for backbone scalar couplings from # Vogeli B, Ying J, Grishaev A, Bax A. (2007). J. Am. Chem. Soc. 129, 9377-9385. +# 3J_CO_CO and 3J_HA_CO parameters from +# Hu JS, Bax A (1997). J. Am. Chem. Soc. 119, 6360-6368. VOGELI_KARPLUS_PARAMETERS = { "3j_co_co": { "dihedral": "phi", @@ -464,6 +483,9 @@ "TYR", ] } +PEREZ_KARPLUS_RESIDUE_MAP["ALA"] = "ALA" +PEREZ_KARPLUS_RESIDUE_MAP["CYS"] = "CYS" +PEREZ_KARPLUS_RESIDUE_MAP["CYX"] = "CYS" PEREZ_KARPLUS_RESIDUE_MAP["ILE"] = "ILE,VAL" PEREZ_KARPLUS_RESIDUE_MAP["SER"] = "SER" PEREZ_KARPLUS_RESIDUE_MAP["THR"] = "THR" @@ -489,6 +511,13 @@ }, "3j_ha_hb2": { "dihedral": "chi1", + "ALA": { + "delta": -120.0, + "A": 7.23 / unit.second, + "B": -1.37 / unit.second, + "C": 3.01 / unit.second, + "sigma": 0.40 / unit.second, + }, "ARG,ASN,ASP,GLN,GLU,HIS,LEU,LYS,MET,PHE,PRO,TRP,TYR": { "delta": -120.0, "A": 7.23 / unit.second, @@ -496,6 +525,13 @@ "C": 2.40 / unit.second, "sigma": 0.40 / unit.second, }, + "CYS": { + "delta": -120.0, + "A": 7.23 / unit.second, + "B": -1.37 / unit.second, + "C": 1.71 / unit.second, + "sigma": 0.40 / unit.second, + }, "SER": { "delta": -120.0, "A": 7.23 / unit.second, @@ -514,7 +550,7 @@ "sigma": 0.40 / unit.second, }, "SER": { - "delta": -120.0, + "delta": 0.0, "A": 7.23 / unit.second, "B": -1.37 / unit.second, "C": 1.42 / unit.second, @@ -679,3 +715,63 @@ "sigma": 0.12 / unit.second, }, } + + +def get_karplus_extrema(karplus_dict: KarplusDict): + """ + Get extrema of a Karplus curve J(phi) = A cos^2(phi) + B cos(phi) + C. + """ + + karplus_A = karplus_dict["A"] + karplus_B = karplus_dict["B"] + karplus_C = karplus_dict["C"] + + # Get extrema of Karplus curve at + # J(0) = A + B + C + # J(pi) = A - B + C + # J(+/- arccos(-B / 2 A)) = -B^2 / (4 A) + C + potential_extrema = [ + karplus_A + karplus_B + karplus_C, + karplus_A - karplus_B + karplus_C, + ] + + if numpy.abs(karplus_B / karplus_A) <= 2: + potential_extrema.append( + -karplus_B * karplus_B / karplus_A / 4 + karplus_C, + ) + + karplus_dict["minimum"] = min(potential_extrema) + karplus_dict["maximum"] = max(potential_extrema) + + +# Get extrema of Karplus parameters +for karplus_parameters in [ + VOGELI_KARPLUS_PARAMETERS, + SCHMIDT_KARPLUS_PARAMETERS, + HU_KARPLUS_PARAMETERS, + CASE_DFT1_KARPLUS_PARAMETERS, + CASE_DFT2_KARPLUS_PARAMETERS, + WIRMER_KARPLUS_PARAMETERS, + DING_KARPLUS_PARAMETERS, + PEREZ_KARPLUS_PARAMETERS, + CHOU_KARPLUS_PARAMETERS, +]: + for observable, observable_karplus in karplus_parameters.items(): + if observable == "3j_hn_ca": + continue + + elif observable in { + "3j_n_cg1", + "3j_n_cg2", + "3j_co_cg1", + "3j_co_cg2", + "3j_ha_hb", + "3j_ha_hb2", + "3j_ha_hb3", + }: + for key, karplus_dict in observable_karplus.items(): + if key != "dihedral": + get_karplus_extrema(karplus_dict) + + else: + get_karplus_extrema(observable_karplus) diff --git a/proteinbenchmark/benchmark_targets.py b/proteinbenchmark/benchmark_targets.py index e59a8ab..2bcbcf4 100644 --- a/proteinbenchmark/benchmark_targets.py +++ b/proteinbenchmark/benchmark_targets.py @@ -178,6 +178,38 @@ }, }, }, + "ala6": { + "target_type": "peptide", + "aa_sequence": "AAAAAA", + "pressure": 1.0 * unit.atmosphere, + "temperature": 300.0 * unit.kelvin, + "ph": 2.0, + "ionic_strength": 0.0 * unit.molar, + "observables": { + "scalar_couplings": { + "experimental_datasets": ["graf_jacs_2007"], + "observable_path": Path( + observable_directory, "ala6", "ala6-scalar-couplings.dat" + ), + }, + }, + }, + "ala7": { + "target_type": "peptide", + "aa_sequence": "AAAAAAA", + "pressure": 1.0 * unit.atmosphere, + "temperature": 300.0 * unit.kelvin, + "ph": 2.0, + "ionic_strength": 0.0 * unit.molar, + "observables": { + "scalar_couplings": { + "experimental_datasets": ["graf_jacs_2007"], + "observable_path": Path( + observable_directory, "ala7", "ala7-scalar-couplings.dat" + ), + }, + }, + }, "asyn": { "target_type": "disordered", "aa_sequence": ( @@ -224,11 +256,11 @@ "target_type": "folded", "initial_pdb": Path(pdb_directory, "bpti-1PIT-model-1.pdb"), "pressure": 1.0 * unit.atmosphere, - "temperature": 313.0 * unit.kelvin, - "ph": 5.1, - "ionic_strength": 0.125 * unit.molar, + "temperature": 309.0 * unit.kelvin, + "ph": 3.5, + "ionic_strength": 0.0 * unit.molar, "observables": { - "3j-hn-ha": "balasubramanian_jmr_1994", + "3j_hn_ha": "pardi_jmb_1984", }, }, "bpti-3j-ha-hb": { @@ -239,7 +271,27 @@ "ph": 4.6, "ionic_strength": 0.0 * unit.molar, "observables": { - "3j_ha_hb": "berndt_jmb_1992", + "scalar_couplings": { + "experimental_datasets": [ + "pardi_jmb_1984", + "berndt_jmb_1992", + "lindorff-larsen_prot_2010", + ], + "observable_path": Path( + observable_directory, "bpti", "bpti-scalar-couplings.dat" + ), + }, + }, + }, + "bpti-t1-relaxation": { + "target_type": "folded", + "initial_pdb": Path(pdb_directory, "bpti-1PIT-model-1.pdb"), + "pressure": 1.0 * unit.atmosphere, + "temperature": 313.0 * unit.kelvin, + "ph": 5.1, + "ionic_strength": 0.125 * unit.molar, + "observables": { + "t1_relaxation": "balasubramanian_jmr_1994", }, }, "cln025": { @@ -512,8 +564,12 @@ "ph": 3.8, "ionic_strength": 0.0 * unit.molar, "observables": { - "3j_co_hb": "schwalbe_prosci_2001", - "3j_ha_hb": "schwalbe_prosci_2001", + "scalar_couplings": { + "experimental_datasets": ["schwalbe_prosci_2001"], + "observable_path": Path( + observable_directory, "hewl", "hewl-scalar-couplings.dat" + ), + }, "backbone_S2": "buck_biochem_1995", }, }, @@ -551,11 +607,19 @@ "experimental_datasets": [ "wang_jacs_1996", "hu_jacs_1997", + "chou_jacs_2003", + "lindorff-larsen_prot_2010", ], "observable_path": Path( observable_directory, "ubq", "ubq-scalar-couplings.dat" ), }, + "h_bond_scalar_couplings": { + "experimental_datasets": ["cordier_jacs_1999"], + "observable_path": Path( + observable_directory, "ubq", "ubq-3j-n-co-cordier.dat" + ), + }, }, }, "ubq-3j-hn-ha": { @@ -581,6 +645,9 @@ "observables": { "h_bond_scalar_couplings": { "experimental_datasets": ["cordier_jacs_1999"], + "observable_path": Path( + observable_directory, "ubq", "ubq-3j-n-co-cordier.dat" + ), }, }, }, @@ -593,7 +660,10 @@ "ionic_strength": 0.0 * unit.molar, "observables": { "h_bond_scalar_couplings": { - "experimental_datasets": ["cornilescu_jacs_1999"], + "experimental_datasets": ["cornilescu_jacs_1999_a"], + "observable_path": Path( + observable_directory, "ubq", "ubq-3j-n-co-cornilescu.dat" + ), }, }, }, @@ -785,6 +855,11 @@ "Ottinger M, Bax A. (1998). J. Am. Chem. Soc. 120, 12334-12341.", ], }, + "pardi_jmb_1984": { + "references": [ + "Pardi A, Billeter M, Wuthrich K. (1984). J. Mol. Biol. 180, 741-751.", + ], + }, "rao_jmb_2009": { "references": [ "Rao JN, Kim Y, Park L, Ulmer T. (2009). J. Mol. Biol. 390, 516-529.", diff --git a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-OPC3.offxml b/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-OPC3.offxml index 67356da..c1b68c6 100644 --- a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-OPC3.offxml +++ b/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-OPC3.offxml @@ -323,12 +323,12 @@ - - - - - - + + + + + + @@ -339,7 +339,7 @@ - + diff --git a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB-1.259.offxml b/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB-1.259.offxml deleted file mode 100644 index 231c720..0000000 --- a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB-1.259.offxml +++ /dev/null @@ -1,529 +0,0 @@ - - - The Open Force Field Initiative - 2021-08-16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB.offxml b/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB.offxml index e376034..c116422 100644 --- a/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB.offxml +++ b/proteinbenchmark/data/force-fields/Protein-Null-0.0.2-TIP3P-FB.offxml @@ -323,12 +323,12 @@ - - - - - - + + + + + + @@ -339,7 +339,7 @@ - + diff --git a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3-1.259.offxml b/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3-1.259.offxml deleted file mode 100644 index afe4a44..0000000 --- a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3-1.259.offxml +++ /dev/null @@ -1,556 +0,0 @@ - - - The Open Force Field Initiative - 2021-08-16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3.offxml b/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3.offxml index 2c754a2..7e9a868 100644 --- a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3.offxml +++ b/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-OPC3.offxml @@ -323,13 +323,13 @@ - - - + + + - - - + + + @@ -366,7 +366,7 @@ - + diff --git a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-TIP3P-FB.offxml b/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-TIP3P-FB.offxml index ab438ec..f1fcbde 100644 --- a/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-TIP3P-FB.offxml +++ b/proteinbenchmark/data/force-fields/Protein-Specific-0.0.2-TIP3P-FB.offxml @@ -323,13 +323,13 @@ - - - + + + - - - + + + @@ -366,7 +366,7 @@ - + diff --git a/proteinbenchmark/data/observables/ala6/ala6-scalar-couplings.dat b/proteinbenchmark/data/observables/ala6/ala6-scalar-couplings.dat new file mode 100644 index 0000000..71d5afd --- /dev/null +++ b/proteinbenchmark/data/observables/ala6/ala6-scalar-couplings.dat @@ -0,0 +1,36 @@ +Observable Resid Resname Experiment Uncertainty +1j_n_ca 2 ALA 11.37 0.59 +2j_n_ca 2 ALA 9.17 0.50 +3j_ha_co 2 ALA 1.81 0.38 +3j_hn_ca 2 ALA 0.66 0.10 +3j_hn_cb 2 ALA 2.33 0.25 +3j_hn_co 2 ALA 1.13 0.31 +3j_hn_ha 2 ALA 5.60 0.42 +1j_n_ca 3 ALA 11.26 0.59 +2j_n_ca 3 ALA 8.52 0.50 +3j_ha_co 3 ALA 1.79 0.38 +3j_hn_ca 3 ALA 0.59 0.10 +3j_hn_cb 3 ALA 2.23 0.25 +3j_hn_co 3 ALA 1.20 0.31 +3j_hn_ha 3 ALA 5.67 0.42 +1j_n_ca 4 ALA 11.27 0.59 +2j_n_ca 4 ALA 8.34 0.50 +3j_ha_co 4 ALA 1.73 0.38 +3j_hn_ca 4 ALA 0.54 0.10 +3j_hn_cb 4 ALA 2.18 0.25 +3j_hn_co 4 ALA 1.22 0.31 +3j_hn_ha 4 ALA 5.80 0.42 +1j_n_ca 5 ALA 11.25 0.59 +2j_n_ca 5 ALA 8.26 0.50 +3j_ha_co 5 ALA 1.99 0.38 +3j_hn_ca 5 ALA 0.53 0.10 +3j_hn_cb 5 ALA 2.20 0.25 +3j_hn_co 5 ALA 1.05 0.31 +3j_hn_ha 5 ALA 6.02 0.42 +1j_n_ca 6 ALA 11.49 0.59 +2j_n_ca 6 ALA 8.18 0.50 +3j_ha_co 6 ALA 2.23 0.38 +3j_hn_ca 6 ALA 0.62 0.10 +3j_hn_cb 6 ALA 1.94 0.25 +3j_hn_co 6 ALA 1.29 0.31 +3j_hn_ha 6 ALA 6.59 0.42 diff --git a/proteinbenchmark/data/observables/ala7/ala7-scalar-couplings.dat b/proteinbenchmark/data/observables/ala7/ala7-scalar-couplings.dat new file mode 100644 index 0000000..4115875 --- /dev/null +++ b/proteinbenchmark/data/observables/ala7/ala7-scalar-couplings.dat @@ -0,0 +1,41 @@ +Observable Resid Resname Experiment Uncertainty +1j_n_ca 2 ALA 11.37 0.59 +2j_n_ca 2 ALA 9.17 0.50 +3j_ha_co 2 ALA 1.89 0.38 +3j_hn_ca 2 ALA 0.71 0.10 +3j_hn_cb 2 ALA 2.31 0.25 +3j_hn_co 2 ALA 1.15 0.31 +3j_hn_ha 2 ALA 5.61 0.42 +1j_n_ca 3 ALA 11.27 0.59 +2j_n_ca 3 ALA 8.52 0.50 +3j_ha_co 3 ALA 1.85 0.38 +3j_hn_ca 3 ALA 0.66 0.10 +3j_hn_cb 3 ALA 2.20 0.25 +3j_hn_co 3 ALA 1.20 0.31 +3j_hn_ha 3 ALA 5.66 0.42 +1j_n_ca 4 ALA 11.22 0.59 +2j_n_ca 4 ALA 8.29 0.50 +3j_ha_co 4 ALA 1.80 0.38 +3j_hn_ca 4 ALA 0.56 0.10 +3j_hn_cb 4 ALA 2.23 0.25 +3j_hn_co 4 ALA 1.20 0.31 +3j_hn_ha 4 ALA 5.77 0.42 +1j_n_ca 5 ALA 11.29 0.59 +2j_n_ca 5 ALA 8.22 0.50 +3j_ha_co 5 ALA 1.56 0.38 +3j_hn_cb 5 ALA 2.23 0.25 +3j_hn_co 5 ALA 1.19 0.31 +3j_hn_ha 5 ALA 5.92 0.42 +1j_n_ca 6 ALA 11.29 0.59 +2j_n_ca 6 ALA 8.24 0.50 +3j_ha_co 6 ALA 1.67 0.38 +3j_hn_cb 6 ALA 2.21 0.25 +3j_hn_co 6 ALA 1.10 0.31 +3j_hn_ha 6 ALA 6.04 0.42 +1j_n_ca 7 ALA 11.51 0.59 +2j_n_ca 7 ALA 8.18 0.50 +3j_ha_co 7 ALA 2.03 0.38 +3j_hn_ca 7 ALA 0.59 0.10 +3j_hn_cb 7 ALA 1.99 0.25 +3j_hn_co 7 ALA 1.25 0.31 +3j_hn_ha 7 ALA 6.60 0.42 diff --git a/proteinbenchmark/data/observables/bpti/bpti-scalar-couplings.dat b/proteinbenchmark/data/observables/bpti/bpti-scalar-couplings.dat new file mode 100644 index 0000000..8b59d63 --- /dev/null +++ b/proteinbenchmark/data/observables/bpti/bpti-scalar-couplings.dat @@ -0,0 +1,88 @@ +Observable Resid Resname Experiment Uncertainty +3j_hn_ha 3 ASP 3.8 0.42 +3j_ha_hb2 4 PHE 4.5 0.40 +3j_ha_hb3 4 PHE 4.5 0.40 +3j_hn_ha 4 PHE 4.8 0.42 +3j_ha_hb2 5 CYS 12.0 0.40 +3j_ha_hb3 5 CYS 3.0 0.40 +3j_hn_ha 5 CYS 4.9 0.42 +3j_hn_ha 6 LEU 8.1 0.42 +3j_hn_ha 7 GLU 6.9 0.42 +3j_ha_hb 11 THR 8.2 0.40 +3j_hn_ha 11 THR 5.2 0.42 +3j_ha_hb2 14 CYS 12.0 0.40 +3j_ha_hb3 14 CYS 3.0 0.40 +3j_ha_hb2 15 LYS 11.0 0.40 +3j_ha_hb3 15 LYS 3.5 0.40 +3j_hn_ha 15 LYS 8.7 0.42 +3j_ha_hb 18 ILE 10.5 0.40 +3j_hn_ha 18 ILE 9.2 0.42 +3j_ha_hb 19 ILE 11.0 0.40 +3j_hn_ha 19 ILE 6.9 0.42 +3j_ha_hb2 20 ARG 12.5 0.40 +3j_ha_hb3 20 ARG 2.5 0.40 +3j_hn_ha 21 TYR 10.2 0.42 +3j_ha_hb2 22 PHE 4.4 0.40 +3j_ha_hb3 22 PHE 3.5 0.40 +3j_hn_ha 22 PHE 9.1 0.42 +3j_ha_hb2 23 TYR 3.8 0.40 +3j_ha_hb3 23 TYR 12.5 0.40 +3j_hn_ha 23 TYR 6.7 0.42 +3j_ha_hb2 24 ASN 3.5 0.40 +3j_ha_hb3 24 ASN 12.0 0.40 +3j_hn_ha 24 ASN 8.7 0.42 +3j_hn_ha 25 ALA 3.9 0.42 +3j_hn_ha 26 LYS 6.1 0.42 +3j_hn_ha 27 ALA 7.8 0.42 +3j_hn_ha 29 LEU 7.0 0.42 +3j_ha_hb2 30 CYS 12.0 0.40 +3j_ha_hb3 30 CYS 2.5 0.40 +3j_hn_ha 30 CYS 9.1 0.42 +3j_ha_hb2 31 GLN 11.0 0.40 +3j_ha_hb3 31 GLN 3.5 0.40 +3j_hn_ha 31 GLN 10.2 0.42 +3j_ha_hb 32 THR 2.5 0.40 +3j_hn_ha 32 THR 8.1 0.42 +3j_ha_hb2 33 PHE 4.5 0.40 +3j_ha_hb3 33 PHE 3.0 0.40 +3j_hn_ha 33 PHE 7.1 0.42 +3j_ha_hb 34 VAL 10.5 0.40 +3j_ha_hb2 35 TYR 6.5 0.40 +3j_ha_hb3 35 TYR 11.5 0.40 +3j_hn_ha 35 TYR 8.7 0.42 +3j_ha_hb2 38 CYS 6.5 0.40 +3j_ha_hb3 38 CYS 1.5 0.40 +3j_hn_ha 39 ARG 6.9 0.42 +3j_ha_hb2 41 LYS 12.5 0.40 +3j_ha_hb3 41 LYS 2.5 0.40 +3j_hn_ha 41 LYS 10.2 0.42 +3j_hn_ha 42 ARG 5.2 0.42 +3j_ha_hb2 43 ASN 3.0 0.40 +3j_ha_hb3 43 ASN 12.0 0.40 +3j_hn_ha 43 ASN 7.4 0.42 +3j_ha_hb2 44 ASN 4.0 0.40 +3j_ha_hb3 44 ASN 11.0 0.40 +3j_hn_ha 44 ASN 7.9 0.42 +3j_ha_hb2 45 PHE 11.8 0.40 +3j_ha_hb3 45 PHE 4.0 0.40 +3j_hn_ha 45 PHE 10.0 0.42 +3j_ha_hb2 46 LYS 9.5 0.40 +3j_ha_hb3 46 LYS 4.0 0.40 +3j_hn_ha 46 LYS 6.1 0.42 +3j_ha_hb2 47 SER 3.0 0.40 +3j_ha_hb3 47 SER 2.8 0.40 +3j_hn_ha 47 SER 8.3 0.42 +3j_hn_ha 48 ALA 3.9 0.42 +3j_hn_ha 50 ASP 4.9 0.42 +3j_ha_hb2 51 CYS 5.5 0.40 +3j_ha_hb3 51 CYS 11.5 0.40 +3j_hn_ha 51 CYS 4.6 0.42 +3j_ha_hb2 52 MET 3.0 0.40 +3j_ha_hb3 52 MET 10.2 0.40 +3j_hn_ha 52 MET 5.2 0.42 +3j_hn_ha 53 ARG 4.1 0.42 +3j_ha_hb 54 THR 10.0 0.40 +3j_ha_hb2 55 CYS 11.0 0.40 +3j_ha_hb3 55 CYS 1.5 0.40 +3j_hn_ha 55 CYS 9.4 0.42 +3j_hn_ha 58 ALA 5.7 0.42 diff --git a/proteinbenchmark/data/observables/hewl/hewl-scalar-couplings.dat b/proteinbenchmark/data/observables/hewl/hewl-scalar-couplings.dat new file mode 100644 index 0000000..a5c9c29 --- /dev/null +++ b/proteinbenchmark/data/observables/hewl/hewl-scalar-couplings.dat @@ -0,0 +1,82 @@ +Observable Resid Resname Experiment Uncertainty +3j_ha_hb 2 VAL 9.8 0.40 +3j_ha_hb2 3 PHE 7.7 0.40 +3j_ha_hb3 3 PHE 1.0 0.40 +3j_ha_hb2 6 CYS 12.6 0.40 +3j_ha_hb3 6 CYS 0.9 0.40 +3j_ha_hb2 8 LEU 1.2 0.40 +3j_ha_hb2 12 MET 12.6 0.40 +3j_ha_hb3 12 MET 1.0 0.40 +3j_ha_hb2 15 HIS 9.0 0.40 +3j_ha_hb3 15 HIS 0.6 0.40 +3j_ha_hb2 17 LEU 9.5 0.40 +3j_ha_hb3 17 LEU 1.0 0.40 +3j_ha_hb2 18 ASP 1.7 0.40 +3j_ha_hb3 18 ASP 13.2 0.40 +3j_ha_hb2 20 TYR 1.4 0.40 +3j_ha_hb3 20 TYR 12.0 0.40 +3j_ha_hb2 23 TYR 8.3 0.40 +3j_ha_hb3 23 TYR 0.2 0.40 +3j_ha_hb2 24 SER 1.0 0.40 +3j_ha_hb2 27 ASN 12.1 0.40 +3j_ha_hb3 27 ASN 0.5 0.40 +3j_ha_hb2 30 CYS 0.2 0.40 +3j_ha_hb3 30 CYS 6.8 0.40 +3j_ha_hb2 33 LYS 2.1 0.40 +3j_ha_hb3 33 LYS 7.9 0.40 +3j_ha_hb2 34 PHE 12.1 0.40 +3j_ha_hb3 34 PHE 1.6 0.40 +3j_ha_hb2 38 PHE 11.9 0.40 +3j_ha_hb2 39 ASN 2.2 0.40 +3j_ha_hb3 39 ASN 12.7 0.40 +3j_ha_hb2 41 GLN 10.0 0.40 +3j_ha_hb3 41 GLN 1.2 0.40 +3j_ha_hb 43 THR 3.9 0.40 +3j_ha_hb 47 THR 2.4 0.40 +3j_ha_hb2 48 ASP 0.2 0.40 +3j_ha_hb3 48 ASP 1.2 0.40 +3j_ha_hb 51 THR 13.3 0.40 +3j_ha_hb2 52 ASP 10.3 0.40 +3j_ha_hb3 52 ASP 0.3 0.40 +3j_ha_hb2 53 TYR 12.5 0.40 +3j_ha_hb3 53 TYR 0.8 0.40 +3j_ha_hb 55 ILE 3.6 0.40 +3j_ha_hb2 59 ASN 1.9 0.40 +3j_ha_hb3 59 ASN 8.1 0.40 +3j_ha_hb2 64 CYS 0.9 0.40 +3j_ha_hb3 64 CYS 0.5 0.40 +3j_ha_hb2 65 ASN 2.1 0.40 +3j_ha_hb3 65 ASN 13.4 0.40 +3j_ha_hb2 66 ASP 0.1 0.40 +3j_ha_hb3 66 ASP 2.2 0.40 +3j_ha_hb 69 THR 11.4 0.40 +3j_ha_hb2 74 ASN 1.7 0.40 +3j_ha_hb3 74 ASN 12.6 0.40 +3j_ha_hb2 80 CYS 13.8 0.40 +3j_ha_hb3 80 CYS 1.0 0.40 +3j_ha_hb2 84 LEU 12.0 0.40 +3j_ha_hb3 84 LEU 0.5 0.40 +3j_ha_hb3 87 ASP 12.2 0.40 +3j_ha_hb 88 ILE 2.0 0.40 +3j_ha_hb 89 THR 10.8 0.40 +3j_ha_hb2 93 ASN 13.5 0.40 +3j_ha_hb3 93 ASN 1.9 0.40 +3j_ha_hb2 94 CYS 2.1 0.40 +3j_ha_hb3 94 CYS 15.0 0.40 +3j_ha_hb 98 ILE 15.3 0.40 +3j_ha_hb2 105 MET 13.0 0.40 +3j_ha_hb3 105 MET 2.6 0.40 +3j_ha_hb2 106 ASN 13.2 0.40 +3j_ha_hb3 106 ASN 3.1 0.40 +3j_ha_hb2 111 TRP 1.7 0.40 +3j_ha_hb3 114 ARG 1.8 0.40 +3j_ha_hb2 116 LYS 3.4 0.40 +3j_ha_hb3 116 LYS 9.8 0.40 +3j_ha_hb 118 THR 4.9 0.40 +3j_ha_hb2 119 ASP 4.5 0.40 +3j_ha_hb3 119 ASP 13.3 0.40 +3j_ha_hb 120 VAL 4.5 0.40 +3j_ha_hb2 123 TRP 8.6 0.40 +3j_ha_hb3 123 TRP 0.3 0.40 +3j_ha_hb 124 ILE 4.2 0.40 +3j_ha_hb3 127 CYS 2.6 0.40 diff --git a/proteinbenchmark/data/observables/ubq/ubq-scalar-couplings.dat b/proteinbenchmark/data/observables/ubq/ubq-scalar-couplings.dat index 967cf85..0187c0a 100644 --- a/proteinbenchmark/data/observables/ubq/ubq-scalar-couplings.dat +++ b/proteinbenchmark/data/observables/ubq/ubq-scalar-couplings.dat @@ -1,5 +1,5 @@ Observable Resid Resname Experiment Uncertainty -3j_ha_1hb 1 MET 4.30 0.40 +3j_ha_hb2 1 MET 4.30 0.40 3j_ha_co 2 GLN 2.59 0.38 3j_hn_cb 2 GLN 1.52 0.25 3j_hn_co 2 GLN 0.08 0.31 @@ -12,8 +12,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 3 ILE 9.27 0.42 3j_n_cg2 3 ILE 0.39 0.25 3j_ha_co 4 PHE 3.14 0.38 -3j_ha_1hb 4 PHE 11.90 0.40 -3j_ha_2hb 4 PHE 3.60 0.40 +3j_ha_hb2 4 PHE 11.90 0.40 +3j_ha_hb3 4 PHE 3.60 0.40 3j_hn_cb 4 PHE 0.85 0.25 3j_hn_co 4 PHE -0.13 0.31 3j_hn_ha 4 PHE 10.04 0.42 @@ -26,8 +26,8 @@ Observable Resid Resname Experiment Uncertainty 3j_n_cg1 5 VAL 1.83 0.25 3j_n_cg2 5 VAL 0.46 0.25 3j_ha_co 6 LYS 2.29 0.38 -3j_ha_1hb 6 LYS 6.20 0.40 -3j_ha_2hb 6 LYS 7.00 0.40 +3j_ha_hb2 6 LYS 6.20 0.40 +3j_ha_hb3 6 LYS 7.00 0.40 3j_hn_cb 6 LYS 1.43 0.25 3j_hn_co 6 LYS -0.06 0.31 3j_hn_ha 6 LYS 9.30 0.42 @@ -38,8 +38,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 7 THR 8.93 0.42 3j_n_cg2 7 THR 1.02 0.21 3j_ha_co 8 LEU 1.43 0.38 -3j_ha_1hb 8 LEU 8.70 0.40 -3j_ha_2hb 8 LEU 4.10 0.40 +3j_ha_hb2 8 LEU 8.70 0.40 +3j_ha_hb3 8 LEU 4.10 0.40 3j_hn_cb 8 LEU 2.15 0.25 3j_hn_co 8 LEU 1.59 0.31 3j_hn_ha 8 LEU 4.15 0.42 @@ -50,8 +50,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 9 THR 8.63 0.42 3j_n_cg2 9 THR 0.81 0.21 3j_hn_co 10 GLY 0.14 0.31 -3j_ha_1hb 11 LYS 5.70 0.40 -3j_ha_2hb 11 LYS 6.70 0.40 +3j_ha_hb2 11 LYS 5.70 0.40 +3j_ha_hb3 11 LYS 6.70 0.40 3j_hn_cb 11 LYS 2.00 0.25 3j_hn_co 11 LYS 0.31 0.31 3j_hn_ha 11 LYS 7.26 0.42 @@ -75,14 +75,14 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 14 THR 9.62 0.42 3j_n_cg2 14 THR 1.50 0.21 3j_ha_co 15 LEU 3.02 0.38 -3j_ha_1hb 15 LEU 8.40 0.40 -3j_ha_2hb 15 LEU 1.40 0.40 +3j_ha_hb2 15 LEU 8.40 0.40 +3j_ha_hb3 15 LEU 1.40 0.40 3j_hn_cb 15 LEU 0.35 0.25 3j_hn_co 15 LEU 0.78 0.31 3j_hn_ha 15 LEU 9.95 0.42 3j_ha_co 16 GLU 3.08 0.38 -3j_ha_1hb 16 GLU 5.50 0.40 -3j_ha_2hb 16 GLU 8.20 0.40 +3j_ha_hb2 16 GLU 5.50 0.40 +3j_ha_hb3 16 GLU 8.20 0.40 3j_hn_cb 16 GLU 0.93 0.25 3j_hn_co 16 GLU 0.40 0.31 3j_hn_ha 16 GLU 9.77 0.42 @@ -96,17 +96,17 @@ Observable Resid Resname Experiment Uncertainty 3j_n_cg1 17 VAL 0.25 0.25 3j_n_cg2 17 VAL 0.68 0.25 3j_ha_co 18 GLU 2.77 0.38 -3j_ha_1hb 18 GLU 9.30 0.40 -3j_ha_2hb 18 GLU 2.50 0.40 +3j_ha_hb2 18 GLU 9.30 0.40 +3j_ha_hb3 18 GLU 2.50 0.40 3j_hn_cb 18 GLU 0.86 0.25 3j_hn_co 18 GLU 0.43 0.31 3j_hn_ha 18 GLU 9.56 0.42 3j_ha_co 19 PRO 1.22 0.38 -3j_ha_1hb 19 PRO 6.80 0.40 -3j_ha_2hb 19 PRO 7.30 0.40 +3j_ha_hb2 19 PRO 6.80 0.40 +3j_ha_hb3 19 PRO 7.30 0.40 3j_ha_co 20 SER 2.16 0.38 -3j_ha_1hb 20 SER 9.40 0.40 -3j_ha_2hb 20 SER 3.00 0.40 +3j_ha_hb2 20 SER 9.40 0.40 +3j_ha_hb3 20 SER 3.00 0.40 3j_hn_co 20 SER 0.18 0.31 3j_hn_ha 20 SER 7.62 0.42 3j_ha_co 21 ASP 1.46 0.38 @@ -127,8 +127,8 @@ Observable Resid Resname Experiment Uncertainty 3j_n_cg2 23 ILE 2.11 0.25 3j_ha_co 24 GLU 0.82 0.38 3j_ha_co 25 ASN 1.46 0.38 -3j_ha_1hb 25 ASN 8.40 0.40 -3j_ha_2hb 25 ASN 5.30 0.40 +3j_ha_hb2 25 ASN 8.40 0.40 +3j_ha_hb3 25 ASN 5.30 0.40 3j_hn_cb 25 ASN 2.34 0.25 3j_hn_co 25 ASN 0.67 0.31 3j_hn_ha 25 ASN 5.50 0.42 @@ -142,8 +142,8 @@ Observable Resid Resname Experiment Uncertainty 3j_n_cg1 26 VAL 2.16 0.25 3j_n_cg2 26 VAL 0.62 0.25 3j_ha_co 27 LYS 1.02 0.38 -3j_ha_1hb 27 LYS 10.60 0.40 -3j_ha_2hb 27 LYS 2.40 0.40 +3j_ha_hb2 27 LYS 10.60 0.40 +3j_ha_hb3 27 LYS 2.40 0.40 3j_hn_cb 27 LYS 2.55 0.25 3j_hn_co 27 LYS 1.00 0.31 3j_hn_ha 27 LYS 4.28 0.42 @@ -151,8 +151,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_cb 28 ALA 2.92 0.25 3j_hn_ha 28 ALA 4.57 0.42 3j_ha_co 29 LYS 1.54 0.38 -3j_ha_1hb 29 LYS 9.20 0.40 -3j_ha_2hb 29 LYS 1.90 0.40 +3j_ha_hb2 29 LYS 9.20 0.40 +3j_ha_hb3 29 LYS 1.90 0.40 3j_hn_cb 29 LYS 2.40 0.25 3j_hn_co 29 LYS 0.80 0.31 3j_hn_ha 29 LYS 5.55 0.42 @@ -164,25 +164,25 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 30 ILE 5.77 0.42 3j_n_cg2 30 ILE 2.10 0.25 3j_ha_co 31 GLN 0.76 0.38 -3j_ha_1hb 31 GLN 3.80 0.40 -3j_ha_2hb 31 GLN 11.30 0.40 +3j_ha_hb2 31 GLN 3.80 0.40 +3j_ha_hb3 31 GLN 11.30 0.40 3j_hn_cb 31 GLN 2.79 0.25 3j_hn_co 31 GLN 1.19 0.31 3j_ha_co 32 ASP 1.06 0.38 -3j_ha_1hb 32 ASP 7.40 0.40 -3j_ha_2hb 32 ASP 5.30 0.40 +3j_ha_hb2 32 ASP 7.40 0.40 +3j_ha_hb3 32 ASP 5.30 0.40 3j_hn_cb 32 ASP 2.57 0.25 3j_hn_co 32 ASP 1.72 0.31 3j_hn_ha 32 ASP 3.82 0.42 3j_ha_co 33 LYS 1.98 0.38 -3j_ha_1hb 33 LYS 9.00 0.40 -3j_ha_2hb 33 LYS 4.00 0.40 +3j_ha_hb2 33 LYS 9.00 0.40 +3j_ha_hb3 33 LYS 4.00 0.40 3j_hn_cb 33 LYS 2.04 0.25 3j_hn_co 33 LYS 0.26 0.31 3j_hn_ha 33 LYS 7.13 0.42 3j_ha_co 34 GLU 2.89 0.38 -3j_ha_1hb 34 GLU 10.20 0.40 -3j_ha_2hb 34 GLU 4.40 0.40 +3j_ha_hb2 34 GLU 10.20 0.40 +3j_ha_hb3 34 GLU 4.40 0.40 3j_hn_co 34 GLU -0.05 0.31 3j_hn_ha 34 GLU 9.54 0.42 3j_hn_co 35 GLY 0.99 0.31 @@ -193,19 +193,19 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 36 ILE 7.98 0.42 3j_n_cg2 36 ILE 2.08 0.25 3j_ha_co 37 PRO 1.71 0.38 -3j_ha_1hb 37 PRO 6.50 0.40 -3j_ha_2hb 37 PRO 7.00 0.40 +3j_ha_hb2 37 PRO 6.50 0.40 +3j_ha_hb3 37 PRO 7.00 0.40 3j_ha_co 38 PRO 1.06 0.38 -3j_ha_1hb 38 PRO 7.80 0.40 -3j_ha_2hb 38 PRO 5.40 0.40 +3j_ha_hb2 38 PRO 7.80 0.40 +3j_ha_hb3 38 PRO 5.40 0.40 3j_ha_co 39 ASP 1.65 0.38 -3j_ha_1hb 39 ASP 4.70 0.40 -3j_ha_2hb 39 ASP 4.40 0.40 +3j_ha_hb2 39 ASP 4.70 0.40 +3j_ha_hb3 39 ASP 4.40 0.40 3j_hn_cb 39 ASP 2.19 0.25 3j_hn_co 39 ASP 1.15 0.31 3j_hn_ha 39 ASP 5.15 0.42 -3j_ha_1hb 40 GLN 12.20 0.40 -3j_ha_2hb 40 GLN 2.00 0.40 +3j_ha_hb2 40 GLN 12.20 0.40 +3j_ha_hb3 40 GLN 2.00 0.40 3j_hn_cb 40 GLN 1.27 0.25 3j_hn_co 40 GLN 0.59 0.31 3j_hn_ha 40 GLN 9.45 0.42 @@ -214,14 +214,14 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_co 41 GLN -0.19 0.31 3j_hn_ha 41 GLN 8.41 0.42 3j_ha_co 42 ARG 2.81 0.38 -3j_ha_1hb 42 ARG 8.30 0.40 -3j_ha_2hb 42 ARG 4.30 0.40 +3j_ha_hb2 42 ARG 8.30 0.40 +3j_ha_hb3 42 ARG 4.30 0.40 3j_hn_cb 42 ARG 0.20 0.25 3j_hn_co 42 ARG 1.52 0.31 3j_hn_ha 42 ARG 9.81 0.42 3j_ha_co 43 LEU 2.54 0.38 -3j_ha_1hb 43 LEU 9.90 0.40 -3j_ha_2hb 43 LEU 1.50 0.40 +3j_ha_hb2 43 LEU 9.90 0.40 +3j_ha_hb3 43 LEU 1.50 0.40 3j_hn_cb 43 LEU 0.99 0.25 3j_hn_co 43 LEU 0.25 0.31 3j_hn_ha 43 LEU 9.66 0.42 @@ -233,8 +233,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 44 ILE 10.27 0.42 3j_n_cg2 44 ILE 1.62 0.25 3j_ha_co 45 PHE 2.57 0.38 -3j_ha_1hb 45 PHE 3.50 0.40 -3j_ha_2hb 45 PHE 9.80 0.40 +3j_ha_hb2 45 PHE 3.50 0.40 +3j_ha_hb3 45 PHE 9.80 0.40 3j_hn_cb 45 PHE 0.04 0.25 3j_hn_co 45 PHE 1.67 0.31 3j_hn_ha 45 PHE 8.73 0.42 @@ -252,26 +252,26 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_co 49 GLN 0.05 0.31 3j_hn_ha 49 GLN 6.97 0.42 3j_ha_co 50 LEU 2.02 0.38 -3j_ha_1hb 50 LEU 11.40 0.40 -3j_ha_2hb 50 LEU 3.90 0.40 +3j_ha_hb2 50 LEU 11.40 0.40 +3j_ha_hb3 50 LEU 3.90 0.40 3j_hn_cb 50 LEU 1.89 0.25 3j_hn_co 50 LEU -0.02 0.31 3j_hn_ha 50 LEU 7.11 0.42 3j_ha_co 51 GLU 2.30 0.38 -3j_ha_1hb 51 GLU 9.20 0.40 -3j_ha_2hb 51 GLU 3.20 0.40 +3j_ha_hb2 51 GLU 9.20 0.40 +3j_ha_hb3 51 GLU 3.20 0.40 3j_hn_cb 51 GLU 1.80 0.25 3j_hn_co 51 GLU -0.07 0.31 3j_hn_ha 51 GLU 8.06 0.42 3j_ha_co 52 ASP 0.90 0.38 -3j_ha_1hb 52 ASP 10.00 0.40 -3j_ha_2hb 52 ASP 1.30 0.40 +3j_ha_hb2 52 ASP 10.00 0.40 +3j_ha_hb3 52 ASP 1.30 0.40 3j_hn_cb 52 ASP 2.38 0.25 3j_hn_co 52 ASP 2.92 0.31 3j_hn_ha 52 ASP 2.48 0.42 3j_ha_co 54 ARG 2.13 0.38 -3j_ha_1hb 54 ARG 11.30 0.40 -3j_ha_2hb 54 ARG 1.40 0.40 +3j_ha_hb2 54 ARG 11.30 0.40 +3j_ha_hb3 54 ARG 1.40 0.40 3j_hn_cb 54 ARG 1.39 0.25 3j_hn_co 54 ARG 0.19 0.31 3j_hn_ha 54 ARG 9.59 0.42 @@ -283,8 +283,8 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 55 THR 9.20 0.42 3j_n_cg2 55 THR 0.82 0.21 3j_ha_co 56 LEU 0.56 0.38 -3j_ha_1hb 56 LEU 9.90 0.40 -3j_ha_2hb 56 LEU 2.10 0.40 +3j_ha_hb2 56 LEU 9.90 0.40 +3j_ha_hb3 56 LEU 2.10 0.40 3j_hn_cb 56 LEU 2.25 0.25 3j_hn_co 56 LEU 1.94 0.31 3j_hn_ha 56 LEU 3.70 0.42 @@ -292,20 +292,20 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_co 57 SER 1.88 0.31 3j_hn_ha 57 SER 3.70 0.42 3j_ha_co 58 ASP 1.36 0.38 -3j_ha_1hb 58 ASP 11.40 0.40 -3j_ha_2hb 58 ASP 2.40 0.40 +3j_ha_hb2 58 ASP 11.40 0.40 +3j_ha_hb3 58 ASP 2.40 0.40 3j_hn_cb 58 ASP 2.48 0.25 3j_hn_co 58 ASP 1.56 0.31 3j_hn_ha 58 ASP 4.14 0.42 3j_ha_co 59 TYR 2.41 0.38 -3j_ha_1hb 59 TYR 10.00 0.40 -3j_ha_2hb 59 TYR 1.80 0.40 +3j_ha_hb2 59 TYR 10.00 0.40 +3j_ha_hb3 59 TYR 1.80 0.40 3j_hn_cb 59 TYR 1.49 0.25 3j_hn_co 59 TYR 0.07 0.31 3j_hn_ha 59 TYR 9.45 0.42 3j_ha_co 60 ASN 6.49 0.38 -3j_ha_1hb 60 ASN 6.70 0.40 -3j_ha_2hb 60 ASN 5.50 0.40 +3j_ha_hb2 60 ASN 6.70 0.40 +3j_ha_hb3 60 ASN 5.50 0.40 3j_hn_cb 60 ASN 0.80 0.25 3j_hn_co 60 ASN 2.52 0.31 3j_hn_ha 60 ASN 7.26 0.42 @@ -317,26 +317,26 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_ha 61 ILE 7.34 0.42 3j_n_cg2 61 ILE 2.15 0.25 3j_ha_co 62 GLN 2.79 0.38 -3j_ha_1hb 62 GLN 11.10 0.40 -3j_ha_2hb 62 GLN 3.10 0.40 +3j_ha_hb2 62 GLN 11.10 0.40 +3j_ha_hb3 62 GLN 3.10 0.40 3j_hn_cb 62 GLN 1.01 0.25 3j_hn_co 62 GLN 0.19 0.31 3j_hn_ha 62 GLN 9.01 0.42 3j_ha_co 63 LYS 1.05 0.38 -3j_ha_1hb 63 LYS 3.50 0.40 -3j_ha_2hb 63 LYS 4.40 0.40 +3j_ha_hb2 63 LYS 3.50 0.40 +3j_ha_hb3 63 LYS 4.40 0.40 3j_hn_cb 63 LYS 2.34 0.25 3j_hn_co 63 LYS 2.62 0.31 3j_hn_ha 63 LYS 2.36 0.42 3j_ha_co 64 GLU 7.17 0.38 -3j_ha_1hb 64 GLU 9.90 0.40 -3j_ha_2hb 64 GLU 1.50 0.40 +3j_ha_hb2 64 GLU 9.90 0.40 +3j_ha_hb3 64 GLU 1.50 0.40 3j_hn_cb 64 GLU 1.35 0.25 3j_hn_co 64 GLU 1.63 0.31 3j_hn_ha 64 GLU 7.19 0.42 3j_ha_co 65 SER 1.26 0.38 -3j_ha_1hb 65 SER 8.90 0.40 -3j_ha_2hb 65 SER 4.20 0.40 +3j_ha_hb2 65 SER 8.90 0.40 +3j_ha_hb3 65 SER 4.20 0.40 3j_hn_co 65 SER 0.74 0.31 3j_hn_ha 65 SER 5.63 0.42 3j_ha_co 66 THR 3.07 0.38 @@ -349,14 +349,14 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_co 67 LEU 0.15 0.31 3j_hn_ha 67 LEU 9.88 0.42 3j_ha_co 68 HIS 2.85 0.38 -3j_ha_1hb 68 HIS 10.10 0.40 -3j_ha_2hb 68 HIS 2.00 0.40 +3j_ha_hb2 68 HIS 10.10 0.40 +3j_ha_hb3 68 HIS 2.00 0.40 3j_hn_cb 68 HIS 0.87 0.25 3j_hn_co 68 HIS 0.36 0.31 3j_hn_ha 68 HIS 9.70 0.42 3j_ha_co 69 LEU 2.56 0.38 -3j_ha_1hb 69 LEU 4.70 0.40 -3j_ha_2hb 69 LEU 9.50 0.40 +3j_ha_hb2 69 LEU 4.70 0.40 +3j_ha_hb3 69 LEU 9.50 0.40 3j_hn_cb 69 LEU 1.17 0.25 3j_hn_ha 69 LEU 9.59 0.42 3j_co_cg2 70 VAL 2.43 0.25 @@ -370,11 +370,11 @@ Observable Resid Resname Experiment Uncertainty 3j_hn_co 71 LEU 0.12 0.31 3j_hn_ha 71 LEU 8.30 0.42 3j_ha_co 72 ARG 2.33 0.38 -3j_ha_1hb 72 ARG 6.40 0.40 -3j_ha_2hb 72 ARG 6.60 0.40 +3j_ha_hb2 72 ARG 6.40 0.40 +3j_ha_hb3 72 ARG 6.60 0.40 3j_ha_co 73 LEU 2.11 0.38 -3j_ha_1hb 73 LEU 8.60 0.40 -3j_ha_2hb 73 LEU 4.50 0.40 +3j_ha_hb2 73 LEU 8.60 0.40 +3j_ha_hb3 73 LEU 4.50 0.40 3j_hn_cb 73 LEU 1.39 0.25 3j_hn_ha 73 LEU 7.52 0.42 3j_ha_co 74 ARG 2.44 0.38 diff --git a/proteinbenchmark/force_fields.py b/proteinbenchmark/force_fields.py index 66d71a5..5938510 100644 --- a/proteinbenchmark/force_fields.py +++ b/proteinbenchmark/force_fields.py @@ -8,10 +8,26 @@ # List of force fields with force field XML file, water model, and water model # XML file force_fields = { + "espaloma-0.3.2-opc": { + "force_field_file": Path(ff_directory, "espaloma-0.3.2.pt"), + "water_model": "opc", + }, + "espaloma-0.3.2-opc3": { + "force_field_file": Path(ff_directory, "espaloma-0.3.2.pt"), + "water_model": "opc3", + }, "espaloma-0.3.2-tip3p": { "force_field_file": Path(ff_directory, "espaloma-0.3.2.pt"), "water_model": "tip3p", }, + "espaloma-0.3.2-tip3p-fb": { + "force_field_file": Path(ff_directory, "espaloma-0.3.2.pt"), + "water_model": "tip3p-fb", + }, + "espaloma-0.3.2-tip4p-fb": { + "force_field_file": Path(ff_directory, "espaloma-0.3.2.pt"), + "water_model": "tip4p-fb", + }, "ff14sb-opc": { "force_field_file": Path( ff_directory, "nerenberg_ff14sb_c0ala_c0gly_c0val.xml" @@ -87,13 +103,6 @@ "water_model": "tip3p-fb", "water_model_file": Path(ff_directory, "tip3p_fb-1.1.0.offxml"), }, - "null-0.0.2-nmr-1.259-tip3p-fb": { - "force_field_file": Path( - ff_directory, "Protein-Null-0.0.2-TIP3P-FB-1.259.offxml" - ), - "water_model": "tip3p-fb", - "water_model_file": Path(ff_directory, "tip3p_fb-1.1.0.offxml"), - }, "null-0.0.2-opc": { "force_field_file": Path(ff_directory, "Protein-Null-0.0.2-NH2.offxml"), "water_model": "opc", @@ -149,13 +158,6 @@ "water_model": "opc3", "water_model_file": Path(ff_directory, "opc3-1.0.0.offxml"), }, - "specific-0.0.2-nmr-1.259-opc3": { - "force_field_file": Path( - ff_directory, "Protein-Specific-0.0.2-OPC3-1.259.offxml" - ), - "water_model": "opc3", - "water_model_file": Path(ff_directory, "opc3-1.0.0.offxml"), - }, "specific-0.0.2-nmr-tip3p-fb": { "force_field_file": Path( ff_directory, "Protein-Specific-0.0.2-TIP3P-FB.offxml" diff --git a/proteinbenchmark/protein_system.py b/proteinbenchmark/protein_system.py index 1c191f6..7b198fd 100644 --- a/proteinbenchmark/protein_system.py +++ b/proteinbenchmark/protein_system.py @@ -471,7 +471,7 @@ def run_simulations(self, replica: int = 1): # Resume from a previous production checkpoint production_simulation.resume_from_checkpoint() - def analyze_observables(self, replica: int = 1): + def analyze_observables(self, replica: int = 1, time_series_analysis: bool = False): """Process trajectories and estimate observables.""" analysis_dir = Path(self.base_path, "analysis") @@ -566,12 +566,21 @@ def analyze_observables(self, replica: int = 1): ): print(f"Computing scalar couplings for system {self.system_name}") - data = target_observables["scalar_couplings"]["observable_path"] + experimental_observables = target_observables["scalar_couplings"][ + "observable_path" + ] + + time_series_output_path = ( + f"{analysis_prefix}-scalar-couplings-time-series.dat" + if time_series_analysis + else None + ) compute_scalar_couplings( - observable_path=data, + observable_path=experimental_observables, dihedrals_path=dihedrals, output_path=scalar_couplings, + time_series_output_path=time_series_output_path, ) # Hydrogen bond interresidue scalar couplings @@ -586,12 +595,21 @@ def analyze_observables(self, replica: int = 1): f"{self.system_name}" ) - data = target_observables["h_bond_scalar_couplings"]["observable_path"] + experimental_observables = target_observables["h_bond_scalar_couplings"][ + "observable_path" + ] + + time_series_output_path = ( + f"{analysis_prefix}-h-bond-scalar-couplings-time-series.dat" + if time_series_analysis + else None + ) compute_h_bond_scalar_couplings( - observable_path=data, + observable_path=experimental_observables, h_bond_geometries_path=h_bond_geometries, output_path=h_bond_scalar_couplings, + time_series_output_path=time_series_output_path, ) # Fraction helix diff --git a/proteinbenchmark/system_setup.py b/proteinbenchmark/system_setup.py index 334d385..90e8086 100644 --- a/proteinbenchmark/system_setup.py +++ b/proteinbenchmark/system_setup.py @@ -268,9 +268,11 @@ def solvate( if water_model in {"opc3", "tip3p", "tip3p-fb"}: water_has_virtual_sites = False + modeller_force_field = "ff14sb-tip3p" modeller_water_model = "tip3p" elif water_model in {"opc", "tip4p-fb"}: water_has_virtual_sites = True + modeller_force_field = "ff14sb-opc" modeller_water_model = "tip4pew" else: raise ValueError( @@ -280,8 +282,8 @@ def solvate( # Use Amber ff14SB as a reference for building solvent coordinates force_field = app.ForceField( - force_fields["ff14sb-tip3p"]["force_field_file"], - force_fields["ff14sb-tip3p"]["water_model_file"], + force_fields[modeller_force_field]["force_field_file"], + force_fields[modeller_force_field]["water_model_file"], ) # Set up solute topology and positions