def run_task(self, fw_spec):

        print "%s: Creating/Fitting sim_data (Level %d)" % (time.ctime(),
                                                            self["fit_level"])

        if self["fit_level"] == 1:
            if self["cached"]:
                try:
                    shutil.copyfile(self["cached_data"], self["output_data"])
                    mod_time = time.ctime(os.path.getctime(
                        self["cached_data"]))
                    print "Copied sim data from cache (modified %s)" % (
                        mod_time, )
                    return
                except Exception as exc:
                    print(
                        "Warning: could not copy cached sim data due to"
                        " exception (%s), running fitter") % (exc, )

            if self["cpus"] > 1:
                print(
                    "Warning: running fitter in parallel with %i processes -"
                    " ensure there are enough cpus_per_task allocated" %
                    (self["cpus"], ))

            with open(self["input_data"], "rb") as f:
                raw_data = cPickle.load(f)

            sim_data = fitSimData_1(
                raw_data,
                cpus=self["cpus"],
                debug=self["debug"],
                disable_ribosome_capacity_fitting=self[
                    'disable_ribosome_capacity_fitting'],
                disable_rnapoly_capacity_fitting=self[
                    'disable_rnapoly_capacity_fitting'],
                adjust_rna_and_protein_parameters=self[
                    'adjust_rna_and_protein_parameters'],
            )

            sys.setrecursionlimit(4000)  #limit found manually
            with open(self["output_data"], "wb") as f:
                cPickle.dump(sim_data, f, protocol=cPickle.HIGHEST_PROTOCOL)

        # TODO: Get rid of this if not used
        if self["fit_level"] == 2:
            with open(self["input_data"], "rb") as f:
                sim_data = cPickle.load(f)

            fitSimData_2(sim_data, self["sim_out_dir"])

            with open(self["output_data"], "wb") as f:
                cPickle.dump(sim_data, f, protocol=cPickle.HIGHEST_PROTOCOL)
Beispiel #2
0
def getExpectedComposition(doubling_time):
	# return np.ones(6), 100. * units.fg
	raw_data = KnowledgeBaseEcoli()

	sim_data = fitSimData_1(raw_data)  # obsolete: doubling_time=doubling_time

	subMasses = sim_data.mass.avgCellSubMass
	proteinMass = subMasses['proteinMass'].asNumber(units.fg) / sim_data.mass.avgCellToInitialCellConvFactor
	rnaMass = subMasses['rnaMass'].asNumber(units.fg) / sim_data.mass.avgCellToInitialCellConvFactor

	initialMass = sim_data.mass.avgCellDryMassInit.asNumber(units.fg)

	return proteinMass, rnaMass, initialMass
def load_sim_data(path, raw_data):
	"""
	Loads sim_data from an existing file, otherwise recalculates it.

	Args:
		path (str): path to sim_data cPickle file to load
		raw_data (KnowledgeBaseEcoli object): raw data for simulations
	"""

	if os.path.exists(path):
		print('Loading sim_data from {}...'.format(path))
		with open(path, 'rb') as f:
			sim_data = cPickle.load(f)
	else:
		print('Calculating sim_data...')
		sim_data = fitSimData_1(raw_data)

	return sim_data
Beispiel #4
0
def getExpectedComposition(doubling_time):
    if doubling_time < 24. * units.min or doubling_time > 100. * units.min:
        return np.zeros(2), 0 * units.fg

    raw_data = KnowledgeBaseEcoli()

    sim_data = fitSimData_1(raw_data)  # obsolete: doubling_time=doubling_time

    subMasses = sim_data.mass.avgCellSubMass
    protein = subMasses['proteinMass'].asNumber(units.fg)
    tRNA = subMasses['tRnaMass'].asNumber(units.fg)
    rRnaMass = (subMasses['rRna23SMass'] + subMasses['rRna5SMass'] +
                subMasses['rRna16SMass']).asNumber(units.fg)
    mRnaMass = subMasses['mRnaMass'].asNumber(units.fg)
    dnaMass = subMasses['dnaMass'].asNumber(units.fg)
    smallMolecules = sim_data.mass.fitAvgSolubleTargetMolMass.asNumber(
        units.fg)

    masses = np.array([protein, rRnaMass + tRNA + mRnaMass
                       ]) / sim_data.mass.avgCellToInitialCellConvFactor

    initialMass = sim_data.mass.avgCellDryMassInit

    return masses, initialMass
    def run_task(self, fw_spec):

        print "%s: Creating/Fitting sim_data (Level %d)" % (time.ctime(),
                                                            self["fit_level"])

        if self["fit_level"] == 1:
            if self["cached"]:
                try:
                    shutil.copyfile(self["cached_data"], self["output_data"])
                    mod_time = time.ctime(os.path.getctime(
                        self["cached_data"]))
                    print "Copied sim data from cache (modified %s)" % (
                        mod_time, )
                    return
                except Exception as exc:
                    print(
                        "Warning: could not copy cached sim data due to"
                        " exception (%s), running fitter") % (exc, )

            if self["cpus"] > 1:
                print(
                    "Warning: running fitter in parallel with %i processes -"
                    " ensure there are enough cpus_per_task allocated" %
                    (self["cpus"], ))

            with open(self["input_data"], "rb") as f:
                raw_data = cPickle.load(f)

            options = dict(
                cpus=self["cpus"],
                debug=self["debug"],
                disable_ribosome_capacity_fitting=self[
                    'disable_ribosome_capacity_fitting'],
                disable_rnapoly_capacity_fitting=self[
                    'disable_rnapoly_capacity_fitting'],
                flat_elongation_transcription=not self[
                    'variable_elongation_transcription'],
                flat_elongation_translation=not self[
                    'variable_elongation_translation'],
                rnapoly_activity_fitting=self['rnapoly_activity_fitting'],
                mrna_half_life_fitting=self['mrna_half_life_fitting'],
                max_rnap_activity=self['max_rnap_activity'],
                adjust_rna_and_protein_parameters=self[
                    'adjust_rna_and_protein_parameters'],
                adjust_rnase_expression=self['adjust_rnase_expression'],
                disable_measured_protein_deg=self[
                    'disable_measured_protein_deg'],
                alternate_mass_fraction_protein=self[
                    'alternate_mass_fraction_protein'],
                alternate_mass_fraction_rna=self[
                    'alternate_mass_fraction_rna'],
                alternate_mass_fraction_mrna=self[
                    'alternate_mass_fraction_mrna'],
                alternate_r_protein_degradation=self[
                    'alternate_r_protein_degradation'],
                alternate_rna_seq=self['alternate_rna_seq'],
                alternate_rna_half_life=self['alternate_rna_half_life'],
                alternate_translation_efficiency=self[
                    'alternate_translation_efficiency'],
                alternate_ribosome_activity=self[
                    'alternate_ribosome_activity'],
                disable_rnap_fraction_increase=self[
                    'disable_rnap_fraction_increase'],
                disable_ribosome_activity_fix=self[
                    'disable_ribosome_activity_fix'],
                write_translation_efficiencies=self[
                    'write_translation_efficiencies'])

            sim_data, cell_specs = fitSimData_1(raw_data, options)

            sys.setrecursionlimit(4000)  #limit found manually
            with open(self["output_data"], "wb") as f:
                cPickle.dump(sim_data, f, protocol=cPickle.HIGHEST_PROTOCOL)

            if self["save_cell_specs"]:
                with open(self["cell_specs_file"], "wb") as f:
                    cPickle.dump(cell_specs,
                                 f,
                                 protocol=cPickle.HIGHEST_PROTOCOL)

        # TODO: Get rid of this if not used
        if self["fit_level"] == 2:
            with open(self["input_data"], "rb") as f:
                sim_data = cPickle.load(f)

            fitSimData_2(sim_data, self["sim_out_dir"])

            with open(self["output_data"], "wb") as f:
                cPickle.dump(sim_data, f, protocol=cPickle.HIGHEST_PROTOCOL)