Function _parse_raw_units in openfecli/commands/gather.py only processed first ProtocolUnit repeat and then _write_raw did not distinguish between repeats if there were any. _write_dg_raw is left unchanged because it seems to be unused.
Example output (openfe gather --report raw ) before fix for a RBFE protocol with 3 PU repeats for the solvent legs, and 1 repeat for the complex legs:
leg
ligand_i
ligand_j
DG(i->j) (kcal/mol)
MBAR uncertainty (kcal/mol)
complex
lig_ejm_31
lig_ejm_42
-14.47
0.04
solvent
lig_ejm_31
lig_ejm_42
-14.89
0.03
complex
lig_ejm_31
lig_ejm_46
-33.90
0.05
solvent
lig_ejm_31
lig_ejm_46
-32.75
0.04
complex
lig_ejm_31
lig_ejm_47
-20.77
0.07
solvent
lig_ejm_31
lig_ejm_47
-20.72
0.05
complex
lig_ejm_31
lig_ejm_48
-14.19
0.07
solvent
lig_ejm_31
lig_ejm_48
-14.48
0.06
complex
lig_ejm_31
lig_ejm_50
-49.55
0.04
solvent
lig_ejm_31
lig_ejm_50
-50.07
0.04
complex
lig_ejm_42
lig_ejm_43
-11.47
0.05
solvent
lig_ejm_42
lig_ejm_43
-12.95
0.03
complex
lig_ejm_46
lig_jmc_23
8.96
0.02
solvent
lig_ejm_46
lig_jmc_23
9.37
0.02
complex
lig_ejm_46
lig_jmc_27
10.54
0.03
solvent
lig_ejm_46
lig_jmc_27
11.03
0.03
complex
lig_ejm_46
lig_jmc_28
16.03
0.03
solvent
lig_ejm_46
lig_jmc_28
16.16
0.03
Example output after fix:
leg
repeat
ligand_i
ligand_j
DG(i->j) (kcal/mol)
MBAR uncertainty (kcal/mol)
complex
1
lig_ejm_31
lig_ejm_42
-14.47
0.04
solvent
1
lig_ejm_31
lig_ejm_42
-14.89
0.03
solvent
2
lig_ejm_31
lig_ejm_42
-14.91
0.03
solvent
3
lig_ejm_31
lig_ejm_42
-14.90
0.03
complex
1
lig_ejm_31
lig_ejm_46
-33.90
0.05
solvent
1
lig_ejm_31
lig_ejm_46
-32.75
0.04
solvent
2
lig_ejm_31
lig_ejm_46
-32.75
0.05
solvent
3
lig_ejm_31
lig_ejm_46
-32.78
0.04
complex
1
lig_ejm_31
lig_ejm_47
-20.77
0.07
solvent
1
lig_ejm_31
lig_ejm_47
-20.72
0.05
solvent
2
lig_ejm_31
lig_ejm_47
-20.78
0.05
solvent
3
lig_ejm_31
lig_ejm_47
-20.75
0.05
complex
1
lig_ejm_31
lig_ejm_48
-14.19
0.07
solvent
1
lig_ejm_31
lig_ejm_48
-14.48
0.06
solvent
2
lig_ejm_31
lig_ejm_48
-14.51
0.06
solvent
3
lig_ejm_31
lig_ejm_48
-14.50
0.06
complex
1
lig_ejm_31
lig_ejm_50
-49.55
0.04
solvent
1
lig_ejm_31
lig_ejm_50
-50.07
0.04
solvent
2
lig_ejm_31
lig_ejm_50
-49.97
0.04
solvent
3
lig_ejm_31
lig_ejm_50
-50.08
0.04
complex
1
lig_ejm_42
lig_ejm_43
-11.47
0.05
solvent
1
lig_ejm_42
lig_ejm_43
-12.95
0.03
solvent
2
lig_ejm_42
lig_ejm_43
-13.03
0.03
solvent
3
lig_ejm_42
lig_ejm_43
-13.01
0.03
complex
1
lig_ejm_46
lig_jmc_23
8.96
0.02
solvent
1
lig_ejm_46
lig_jmc_23
9.37
0.02
solvent
2
lig_ejm_46
lig_jmc_23
9.35
0.02
solvent
3
lig_ejm_46
lig_jmc_23
9.37
0.02
complex
1
lig_ejm_46
lig_jmc_27
10.54
0.03
solvent
1
lig_ejm_46
lig_jmc_27
11.03
0.03
solvent
2
lig_ejm_46
lig_jmc_27
11.09
0.03
solvent
3
lig_ejm_46
lig_jmc_27
11.08
0.03
complex
1
lig_ejm_46
lig_jmc_28
16.03
0.03
solvent
1
lig_ejm_46
lig_jmc_28
16.16
0.03
solvent
2
lig_ejm_46
lig_jmc_28
16.17
0.04
solvent
3
lig_ejm_46
lig_jmc_28
16.20
0.03
Checklist
[ ] Added a news entry
Developers certificate of origin
[x] I certify that this contribution is covered by the MIT License here and the Developer Certificate of Origin at https://developercertificate.org/.
I did the zero-indexed repeats thing and updated the test_gather.py. I ran pytest -k test_gather and got: 23 passed, 3 skipped, 840 deselected, 1 xfailed, 2 xpassed, 25 warnings
Function
_parse_raw_units
in openfecli/commands/gather.py only processed first ProtocolUnit repeat and then_write_raw
did not distinguish between repeats if there were any._write_dg_raw
is left unchanged because it seems to be unused.Example output (openfe gather --report raw) before fix for a RBFE protocol with 3 PU repeats for the solvent legs, and 1 repeat for the complex legs:
Example output after fix:
Checklist
news
entryDevelopers certificate of origin