Source code for pycif.plugins.models.chimere.perturb_model

import copy


[docs]def perturb_model(self, nsamples, transf_mapper): if hasattr(self, "reactions"): raise Exception("There are reactions in your chemical scheme. " "This is not yet implemented!!") # Perturb active species in the chemical scheme list_acspecies = copy.deepcopy(self.chemistry.acspecies.attributes[:]) self.perturbed_species = {} for spec in list_acspecies: for i in range(nsamples): spec_sample = "{}{:03d}".format(spec, i) spec_plg = getattr(self.chemistry.acspecies, spec) setattr(self.chemistry.acspecies, spec_sample, spec_plg) self.chemistry.acspecies.attributes.append(spec_sample) self.perturbed_species[spec_sample] = spec delattr(self.chemistry.acspecies, spec) self.chemistry.acspecies.attributes.remove(spec) # Perturb output species in the chemical scheme list_outspecies = copy.deepcopy(self.chemistry.outspecies.attributes[:]) for spec in list_outspecies: for i in range(nsamples): spec_sample = "{}{:03d}".format(spec, i) spec_plg = getattr(self.chemistry.outspecies, spec) setattr(self.chemistry.outspecies, spec_sample, spec_plg) self.chemistry.outspecies.attributes.append(spec_sample) delattr(self.chemistry.outspecies, spec) self.chemistry.outspecies.attributes.remove(spec) # Perturb emis species in the chemical scheme list_emispecies = copy.deepcopy(self.chemistry.emis_species.attributes[:]) for spec in list_emispecies: for i in range(nsamples): spec_sample = "{}{:03d}".format(spec, i) spec_plg = getattr(self.chemistry.emis_species, spec) setattr(self.chemistry.emis_species, spec_sample, spec_plg) self.chemistry.emis_species.attributes.append(spec_sample) delattr(self.chemistry.emis_species, spec) self.chemistry.emis_species.attributes.remove(spec) # Perturb bio species in the chemical scheme list_biospecies = copy.deepcopy(self.chemistry.bio_species.attributes[:]) for spec in list_biospecies: for i in range(nsamples): spec_sample = "{}{:03d}".format(spec, i) spec_plg = getattr(self.chemistry.bio_species, spec) setattr(self.chemistry.bio_species, spec_sample, spec_plg) self.chemistry.bio_species.attributes.append(spec_sample) delattr(self.chemistry.bio_species, spec) self.chemistry.bio_species.attributes.remove(spec) # Dump updated chemical scheme as text files for CHIMERE executable self.chemistry.create_chemicalscheme()