You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Arkane PES-explorer path added in #179 rejects every network file RMG writes. Not an edge case — the whole feature path, for real RMG output.
The rule, and where it is enforced
write_arkane_explorer_input_file requires every bath-gas label to resolve to a species() block carrying a literal reactive=False (t3/pdep/explorer/input_file.py:703-745, ~line 748):
Bath gas label '{label}' is a species() block that does not carry a literal 'reactive=False' keyword.
The intent is correct. Arkane identifies the bath gas as the unreactive species, and a bath-gas species left reactive makes Arkane try to generate statmech for it (arkane/input.py:207-217, whose own error text says "If it is a bath gas, set reactive = False to avoid generating…").
Why no RMG file can satisfy it
arkane/pdep.py:654PressureDependenceJob.save_input_file() — the function RMG calls at rmgpy/rmg/pdep.py:869 to write pdep/network<i>_<n>.py — writes species blocks containing exactly: label, structure, E0, modes, spinMultiplicity, opticalIsomers, molecularWeight, collisionModel, energyTransferModel, thermo.
reactive is never written, for any species. There is no code path in that writer that emits it.
Confirmed on this repo's own real fixture: in tests/data/pdep_network/iteration_1/RMG/pdep/network4_2.py, He (line 225) and Ne (line 237) are named as bathGas in the network(...) block (line 438) while their species() blocks carry no reactive keyword at all. tests/test_pdep/test_explorer_input_file.py:11-14 already concedes the fixture "cannot exercise the bath-gas-refusal … paths" — the tests pass because they use hand-built strings that real RMG never produces.
The information is present, in the other block
The same save_input_filedoes write the bath gas, into network(...):
populated upstream from rmgpy/rmg/pdep.py:856-858:
bath_gas= [specforspecinreaction_model.core.speciesifnotspec.reactive]
assertlen(bath_gas) >0, 'No unreactive species to identify as bath gas'
So the bath-gas identity is authoritative and always present — in network(...), which T3's writer deliberately drops.
Suggested direction
Treat the source's network(...)bathGas as the authoritative declaration, and emit reactive=False on those species in the file T3 generates. That is a faithful translation between two encodings of the same fact in a T3-authored file, not a rewrite of user input. It would also let bath_gas default sensibly instead of the current trap where PDepExplorerConfig(bath_gas=None) passes construction-time validation (config.py:202-213) and only raises at write time (input_file.py:703-707), after the run directory has been claimed.
Design questions worth settling before implementing: whether to default config.bath_gas from the network block, inject reactive=False on write, or both; and what should happen when a source species carries an explicit reactive=True while being named as bath gas (conflict → refuse, presumably).
Related
run_arkane_job has no timeout and no kill path (t3/pdep/explorer/arkane.py:381-399, noted in a comment there); a hung Arkane hangs the campaign.
Separately: RMG's assert len(bath_gas) > 0 means a pdep run with no declared inert dies deep inside network generation. A T3 schema validator refusing that at input time is worth adding — this was the one surviving idea from the now-closed Pdep fixes #60.
The Arkane PES-explorer path added in #179 rejects every network file RMG writes. Not an edge case — the whole feature path, for real RMG output.
The rule, and where it is enforced
write_arkane_explorer_input_filerequires every bath-gas label to resolve to aspecies()block carrying a literalreactive=False(t3/pdep/explorer/input_file.py:703-745, ~line 748):The intent is correct. Arkane identifies the bath gas as the unreactive species, and a bath-gas species left reactive makes Arkane try to generate statmech for it (
arkane/input.py:207-217, whose own error text says "If it is a bath gas, set reactive = False to avoid generating…").Why no RMG file can satisfy it
arkane/pdep.py:654PressureDependenceJob.save_input_file()— the function RMG calls atrmgpy/rmg/pdep.py:869to writepdep/network<i>_<n>.py— writes species blocks containing exactly:label,structure,E0,modes,spinMultiplicity,opticalIsomers,molecularWeight,collisionModel,energyTransferModel,thermo.reactiveis never written, for any species. There is no code path in that writer that emits it.Confirmed on this repo's own real fixture: in
tests/data/pdep_network/iteration_1/RMG/pdep/network4_2.py,He(line 225) andNe(line 237) are named asbathGasin thenetwork(...)block (line 438) while theirspecies()blocks carry noreactivekeyword at all.tests/test_pdep/test_explorer_input_file.py:11-14already concedes the fixture "cannot exercise the bath-gas-refusal … paths" — the tests pass because they use hand-built strings that real RMG never produces.The information is present, in the other block
The same
save_input_filedoes write the bath gas, intonetwork(...):populated upstream from
rmgpy/rmg/pdep.py:856-858:So the bath-gas identity is authoritative and always present — in
network(...), which T3's writer deliberately drops.Suggested direction
Treat the source's
network(...)bathGasas the authoritative declaration, and emitreactive=Falseon those species in the file T3 generates. That is a faithful translation between two encodings of the same fact in a T3-authored file, not a rewrite of user input. It would also letbath_gasdefault sensibly instead of the current trap wherePDepExplorerConfig(bath_gas=None)passes construction-time validation (config.py:202-213) and only raises at write time (input_file.py:703-707), after the run directory has been claimed.Design questions worth settling before implementing: whether to default
config.bath_gasfrom the network block, injectreactive=Falseon write, or both; and what should happen when a source species carries an explicitreactive=Truewhile being named as bath gas (conflict → refuse, presumably).Related
run_arkane_jobhas no timeout and no kill path (t3/pdep/explorer/arkane.py:381-399, noted in a comment there); a hung Arkane hangs the campaign.assert len(bath_gas) > 0means a pdep run with no declared inert dies deep inside network generation. A T3 schema validator refusing that at input time is worth adding — this was the one surviving idea from the now-closed Pdep fixes #60.