CovertLab / wcEcoli

Whole Cell Model of E. coli
Other
18 stars 4 forks source link

runParca --debug-parca raises KeyError: 'FNR-4FE-4S-CPLX__FNR-4FE-4S-CPLX__active' #1165

Open 1fish2 opened 3 years ago

1fish2 commented 3 years ago

runParca.py --debug-parca raises KeyError: 'FNR-4FE-4S-CPLX__FNR-4FE-4S-CPLX__active'.

This might depend on which transcription factor condition it randomly selects.

It's also possible that I introduced a bug in the compose-variants branch, which has code to run parca for {monocistronic, polycistronic, both, none} operons, where the operon choice currently just overrides variable_elongation_transcription as a placeholder.

/usr/local/var/pyenv/versions/wcEcoli3/bin/python3 "/Users/jerry/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/212.4746.96/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py" --multiproc --qt-support=auto --client 127.0.0.1 --port 65326 --file /Users/jerry/dev/wcEcoli/runscripts/manual/runParca.py operon_none --operons none --debug-parca
Connected to pydev debugger (build 212.4746.96)
Tue Aug 31 17:19:21 2021: RunParca at /Users/jerry/dev/wcEcoli/out/operon_none
{'Arguments': {'cpus': 1,
               'debug_parca': True,
               'description': 'operon_none',
               'intermediates_directory': None,
               'load_intermediate': None,
               'operons': 'none',
               'ribosome_fitting': True,
               'rnapoly_fitting': True,
               'save_intermediates': False,
               'sim_outdir': 'operon_none',
               'sim_path': '/Users/jerry/dev/wcEcoli/out/operon_none',
               'time': '20210831.171921',
               'timestamp': False,
               'variable_elongation_transcription': True,
               'variable_elongation_translation': False,
               'verbose': False}}
DEBUG Parca
Tue Aug 31 17:19:21 2021: Instantiating raw_data
Tue Aug 31 17:19:27 2021: Saving raw_data
Tue Aug 31 17:19:27 2021: Calculating '' sim_data parameters
fitSimData_1 kwargs={'cpus': 1, 'debug': True, 'load_intermediate': None, 'save_intermediates': False, 'intermediates_directory': '/Users/jerry/dev/wcEcoli/out/operon_none/kb', 'variable_elongation_transcription': True, 'variable_elongation_translation': False, 'disable_ribosome_capacity_fitting': False, 'disable_rnapoly_capacity_fitting': False, 'operon': ''}
Ran initialize in 35 s
Warning: Running the Parca in debug mode - not all conditions will be fit
Ran input_adjustments in 0 s
Fitting RNA synthesis probabilities.
Max derivative (counts) = 0.000000
Max derivative (concentration) = 328748701.579900
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{mul}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{true_div}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{mul}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{true_div}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{mul}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/aesara/graph/fg.py:525: UserWarning: Variable Elemwise{true_div}.0 cannot be replaced; it isn't in the FunctionGraph
  warnings.warn(
Running non-linear optimization to compute /Users/jerry/dev/wcEcoli/cache/parca-km-2593196816.cPickle
Convergence (Jacobian) = 0% (<K> = 2454.60347)
Convergence (Jacobian_aux) = 91% (<K> = 0.98493)
Ran basal_specs in 125 s
Fitting RNA synthesis probabilities.
Fitting RNA synthesis probabilities.
Fitting RNA synthesis probabilities.
Fitting RNA synthesis probabilities.
Fitting RNA synthesis probabilities.
Fitting RNA synthesis probabilities.
Ran tf_condition_specs in 6 s
Fitting condition CPLX-125__active
/usr/local/var/pyenv/versions/wcEcoli3/lib/python3.8/site-packages/scipy/integrate/odepack.py:247: ODEintWarning: Excess work done on this call (perhaps wrong Dfun type). Run with full_output = 1 to get quantitative information.
  warnings.warn(warning_msg, ODEintWarning)
Fitting condition CPLX-125__inactive
Fitting condition acetate
Fitting condition basal
Fitting condition no_oxygen
Fitting condition succinate
Fitting condition with_aa
Ran fit_condition in 120 s
Fitting promoter binding
Traceback (most recent call last):
  File "/Users/jerry/dev/wcEcoli/wholecell/utils/scriptBase.py", line 626, in cli
    self.run(args)
  File "/Users/jerry/dev/wcEcoli/runscripts/manual/runParca.py", line 95, in run
    task.run_task({})
  File "/Users/jerry/dev/wcEcoli/wholecell/fireworks/firetasks/parca.py", line 85, in run_task
    task.run_task(fw_spec)
  File "/Users/jerry/dev/wcEcoli/wholecell/fireworks/firetasks/fitSimData.py", line 140, in run_task
    pool.apply_async(_run_parca_variant, kwds=variant_kwargs)
  File "/Users/jerry/dev/wcEcoli/wholecell/utils/parallelization.py", line 130, in apply_async
    result = func(*args, **kwds)
  File "/Users/jerry/dev/wcEcoli/wholecell/fireworks/firetasks/fitSimData.py", line 64, in _run_parca_variant
    sim_data = fitSimData_1(raw_data, **kwargs)
  File "/Users/jerry/dev/wcEcoli/reconstruction/ecoli/fit_sim_data_1.py", line 111, in fitSimData_1
    sim_data, cell_specs = promoter_binding(sim_data, cell_specs, **kwargs)
  File "/Users/jerry/dev/wcEcoli/reconstruction/ecoli/fit_sim_data_1.py", line 154, in wrapper
    sim_data, cell_specs = func(*args, **kwargs)
  File "/Users/jerry/dev/wcEcoli/reconstruction/ecoli/fit_sim_data_1.py", line 298, in promoter_binding
    fitPromoterBoundProbability(sim_data, cell_specs)
  File "/Users/jerry/dev/wcEcoli/reconstruction/ecoli/fit_sim_data_1.py", line 2862, in fitPromoterBoundProbability
    H, pInit, pAlphaIdxs, pNotAlphaIdxs, fixedTFIdxs, pPromoterBoundIdxs, H_col_name_to_index = build_matrix_H(
  File "/Users/jerry/dev/wcEcoli/reconstruction/ecoli/fit_sim_data_1.py", line 2662, in build_matrix_H
    pPromoterBoundIdxs[condition][tf] = H_col_name_to_index[col_name]
KeyError: 'FNR-4FE-4S-CPLX__FNR-4FE-4S-CPLX__active'
python-BaseException
1fish2 commented 3 years ago

It throws the same exception in master.

ggsun commented 3 years ago

It looks like PR #1128 would have led to this issue. For the debug mode I think this block of code that's throwing the error can be entirely skipped but I might be missing something here... @tahorst?

tahorst commented 2 years ago

You're right - I don't think running those blocks is needed for the debug mode but we could also check if the tf is in sim_data.tf_to_active_inactive_conditions like above (not sure why the check uses sort). I think because the debug mode removes most TFs from tf_to_active_inactive_conditions but not condition_active_tfs or condition_inactive_tfs we get a mismatch. I haven't run it with that change so there might be other mismatches elsewhere that could also raise an exception but I think it should fix this issue.