示例#1
0
def test_visualization_omit_empty_datasets(
        data_file_Fujita_nanData,
        condition_file_Fujita
):
    observable_num_list = [[0, 1]]
    plot_data_and_simulation(data_file_Fujita_nanData, condition_file_Fujita,
                             observable_num_list=observable_num_list)
示例#2
0
def test_save_plots_to_file(data_file_Isensee, condition_file_Isensee,
                            vis_spec_file_Isensee, simulation_file_Isensee):
    with TemporaryDirectory() as temp_dir:
        plot_data_and_simulation(data_file_Isensee,
                                 condition_file_Isensee,
                                 vis_spec_file_Isensee,
                                 simulation_file_Isensee,
                                 subplot_file_path=temp_dir)
示例#3
0
def test_visualization_empty_visu_file(data_file_Fujita, condition_file_Fujita,
                                       visu_file_Fujita_empty):
    """
    Test: Empty visualization spezification file should default to routine
    for no file at all
    """
    plot_data_and_simulation(data_file_Fujita, condition_file_Fujita,
                             visu_file_Fujita_empty)
示例#4
0
def test_visualization_with_vis(
        data_file_Isensee,
        condition_file_Isensee,
        vis_spec_file_Isensee
):
    plot_data_and_simulation(data_file_Isensee,
                             condition_file_Isensee,
                             vis_spec_file_Isensee)
示例#5
0
def test_visualization_minimal_data_file(data_file_Fujita_minimal,
                                         condition_file_Fujita,
                                         visu_file_Fujita_small):
    """
    Test visualization, with the case: data file only with mandatory columns
    (optional columns are optional)
    """
    plot_data_and_simulation(data_file_Fujita_minimal, condition_file_Fujita,
                             visu_file_Fujita_small)
示例#6
0
def test_visualization_minimal_visu_file(data_file_Fujita,
                                         condition_file_Fujita,
                                         visu_file_Fujita_minimal):
    """
    Test: visualization spezification file only with mandatory column plotId
    (optional columns are optional)
    """
    plot_data_and_simulation(data_file_Fujita, condition_file_Fujita,
                             visu_file_Fujita_minimal)
示例#7
0
def test_visualization_small_visu_file_w_datasetid(data_file_Fujita,
                                                   condition_file_Fujita,
                                                   visu_file_Fujita_small):
    """
    Test: visualization spezification file only with few columns in
    particular datasetId
    (optional columns are optional)
    """
    plot_data_and_simulation(data_file_Fujita, condition_file_Fujita,
                             visu_file_Fujita_small)
示例#8
0
def test_visualization_with_dataset_list(data_file_Isensee,
                                         condition_file_Isensee):
    datasets = [[
        'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_ctrl',
        'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_Fsk'
    ],
                [
                    'JI09_160201_Drg453-452_CycNuc__ctrl',
                    'JI09_160201_Drg453-452_CycNuc__Fsk',
                    'JI09_160201_Drg453-452_CycNuc__Sp8_Br_cAMPS_AM'
                ]]
    plot_data_and_simulation(data_file_Isensee,
                             condition_file_Isensee,
                             dataset_id_list=datasets)
示例#9
0
def test_visualization_warnings(data_file_Isensee, condition_file_Isensee):
    datasets = [[
        'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_ctrl',
        'JI09_150302_Drg345_343_CycNuc__4_ABnOH_and_Fsk'
    ],
                [
                    'JI09_160201_Drg453-452_CycNuc__ctrl',
                    'JI09_160201_Drg453-452_CycNuc__Fsk',
                    'JI09_160201_Drg453-452_CycNuc__Sp8_Br_cAMPS_AM'
                ]]
    sim_cond_num_list = [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5]]
    observable_num_list = [[0], [1], [2], [0, 2], [1, 2]]

    # close open figures to avoid runtime warnings
    plt.close("all")

    with warnings.catch_warnings(record=True) as warnMsg:
        # Cause all warnings to always be triggered.
        warnings.simplefilter("always")
        # plotting with datasetIds and sim conditions should issue a warning
        plot_data_and_simulation(data_file_Isensee,
                                 condition_file_Isensee,
                                 dataset_id_list=datasets,
                                 sim_cond_num_list=sim_cond_num_list)

        # plotting with datasetIds and observables should issue a warning
        plot_data_and_simulation(data_file_Isensee,
                                 condition_file_Isensee,
                                 dataset_id_list=datasets,
                                 observable_num_list=observable_num_list)

        # plotting with datasetIds and observables and sim conditions should
        # issue a warning
        plot_data_and_simulation(data_file_Isensee,
                                 condition_file_Isensee,
                                 dataset_id_list=datasets,
                                 observable_num_list=observable_num_list,
                                 sim_cond_num_list=sim_cond_num_list)

        # plotting grouped by something else than datasetIds should issue a
        # warning if datasetsIDs would have been available
        plot_data_and_simulation(data_file_Isensee,
                                 condition_file_Isensee,
                                 sim_cond_num_list=sim_cond_num_list)

        # test correct number of warnings
        assert len(warnMsg) == 4

        # test that all warnings were indeed UserWarnings
        for i_warn in warnMsg:
            assert issubclass(i_warn.category, UserWarning)
示例#10
0
def test_visualization_without_datasets(data_file_Fujita,
                                        condition_file_Fujita):
    sim_cond_num_list = [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5]]
    sim_cond_id_list = [['model1_data1'], ['model1_data2', 'model1_data3'],
                        ['model1_data4', 'model1_data5'], ['model1_data6']]
    observable_num_list = [[0], [1], [2], [0, 2], [1, 2]]
    observable_id_list = [['pS6_tot'], ['pEGFR_tot'], ['pAkt_tot']]

    plot_data_and_simulation(data_file_Fujita,
                             condition_file_Fujita,
                             sim_cond_num_list=sim_cond_num_list,
                             plotted_noise='provided')
    plot_data_and_simulation(data_file_Fujita,
                             condition_file_Fujita,
                             sim_cond_id_list=sim_cond_id_list)
    plot_data_and_simulation(data_file_Fujita,
                             condition_file_Fujita,
                             observable_num_list=observable_num_list)
    plot_data_and_simulation(data_file_Fujita,
                             condition_file_Fujita,
                             observable_id_list=observable_id_list,
                             plotted_noise='provided')
示例#11
0
def test_visualization_raises(data_file_Fujita, condition_file_Fujita,
                              data_file_Fujita_wrongNoise):
    sim_cond_num_list = [[0, 1, 2], [0, 2, 3], [0, 3, 4], [0, 4, 5]]
    sim_cond_id_list = [['model1_data1'], ['model1_data2', 'model1_data3'],
                        ['model1_data4', 'model1_data5'], ['model1_data6']]
    observable_num_list = [[0], [1], [2], [0, 2], [1, 2]]
    observable_id_list = [['pS6_tot'], ['pEGFR_tot'], ['pAkt_tot']]
    error_counter = 0

    # Combining simulation condition numbers and IDs should not be allowed
    try:
        plot_data_and_simulation(data_file_Fujita,
                                 condition_file_Fujita,
                                 sim_cond_num_list=sim_cond_num_list,
                                 sim_cond_id_list=sim_cond_id_list)
    except NotImplementedError as ErrMsg:
        assert (ErrMsg.args[0] == 'Either specify a list of simulation '
                'condition IDs or a list of simulation '
                'condition numbers, but not both. '
                'Stopping.')
        error_counter += 1
    assert (error_counter == 1)

    # Combining observable numbers and IDs should not be allowed
    try:
        plot_data_and_simulation(data_file_Fujita,
                                 condition_file_Fujita,
                                 observable_num_list=observable_num_list,
                                 observable_id_list=observable_id_list)
    except NotImplementedError as ErrMsg:
        assert (ErrMsg.args[0] == 'Either specify a list of observable IDs or '
                'a list of observable numbers, but not both. '
                'Stopping.')
        error_counter += 1
    assert (error_counter == 2)

    # Combining observable and simulation conditions numbers or IDs should not
    # be allowed
    try:
        plot_data_and_simulation(data_file_Fujita,
                                 condition_file_Fujita,
                                 sim_cond_num_list=observable_num_list,
                                 observable_num_list=observable_num_list)
    except NotImplementedError as ErrMsg:
        assert (
            ErrMsg.args[0] == 'Plotting without visualization specification'
            ' file and datasetId can be performed via '
            'grouping by simulation conditions OR '
            'observables, but not both. Stopping.')
        error_counter += 1
    assert (error_counter == 3)
    try:
        plot_data_and_simulation(data_file_Fujita,
                                 condition_file_Fujita,
                                 sim_cond_id_list=observable_id_list,
                                 observable_id_list=observable_id_list)
    except NotImplementedError as ErrMsg:
        assert (
            ErrMsg.args[0] == 'Plotting without visualization specification'
            ' file and datasetId can be performed via '
            'grouping by simulation conditions OR '
            'observables, but not both. Stopping.')
        error_counter += 1
    assert (error_counter == 4)

    # If no numerical noise is provided, it should not work to plot it
    try:
        plot_measurements_by_observable(data_file_Fujita_wrongNoise,
                                        condition_file_Fujita,
                                        plotted_noise='provided')
    except NotImplementedError as ErrMsg:
        assert (ErrMsg.args[0] == "No numerical noise values provided in the "
                "measurement table. Stopping.")
        error_counter += 1

    assert (error_counter == 5)
示例#12
0
        'time', 'time', 'time', 'time', 'concentration', 'concentration',
        'concentration', 'concentration'
    ],
    'xScale': ['lin', 'lin', 'lin', 'lin', 'log10', 'log10', 'log10', 'log10'],
    'xLabel': [
        'time [h]', 'time [h]', 'time [h]', 'time [h]',
        r'concentration [$\mu$M]', r'concentration [$\mu$M]',
        r'concentration [$\mu$M]', r'concentration [$\mu$M]'
    ],
    'yValues': [
        'D_obs', 'S_obs', 'G1_obs', 'G2_plus_M_obs', 'D_obs', 'S_obs',
        'G1_obs', 'G2_plus_M_obs'
    ],
    'yLabel': [
        'cell count', 'cell count', 'cell count', 'cell count', 'cell count',
        'cell count', 'cell count', 'cell count'
    ],
    'yScale':
    ['log10', 'log10', 'log10', 'log10', 'log10', 'log10', 'log10', 'log10'],
    'legendEntry': ['D', 'S', 'G1', 'G2_plus_M', 'D', 'S', 'G1', 'G2_plus_M'],
    'xOffset': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
})

plot_data_and_simulation(
    exp_data=petab_problem.measurement_df,
    exp_conditions=petab_problem.condition_df,
    sim_data=simu_meas_df,
    vis_spec=vis_spec,
)
plt.savefig(os.path.join(resultdir, f'simulation_and_data__{setting}.pdf'))