//! Load the diffusion reactions from an array of files and a Medium list /*! * \param files Array of files which contain information about diffusion reaction. * \param mediums The list of all the mediums. * * This function loads the diffusion reactions based on Fick model. It takes an Array of file paths * and a list of Medium that should contain all the mediums of the simulation. * This function creates the list of all the reactions between all Medium which exist and initialize their parameters to 0. * Only the reactions explicitly defined in files are initialized to the values explicited in files. * If a parameter of a fick reaction is not specified in files then this parameter will be equal to 0. */ public void loadFicksReactionsFromFiles(string[] files, LinkedList <Medium> mediums) { Logger.Log("Fick::loadFicksReactionsFromFiles(" + Logger.EnumerableToString <string> (files) + ") starts" , Logger.Level.INFO); LinkedList <FickProperties> propsList = new LinkedList <FickProperties> (); LinkedList <FickProperties> newPropList; foreach (string file in files) { newPropList = loadObjectsFromFile <FickProperties> (file, "ficks"); if (newPropList != null) { LinkedListExtensions.AppendRange <FickProperties> (propsList, newPropList); } } _reactions = FickReaction.getFickReactionsFromMediumList(mediums); finalizeFickReactionFromProps(propsList, _reactions); Logger.Log("Fick::loadFicksReactionsFromFiles(" + Logger.EnumerableToString <string> (files) + ") starts" , Logger.Level.INFO); }
/*! * \brief Load all the properties from multiple files * \param files All the files * \return A list of all the properties */ public LinkedList <ActiveTransportProperties> getActiveTransportPropertiesFromFiles(IEnumerable <string> files) { Logger.Log("ActiveTransport::getActiveTransportPropertiesFromFiles(" + Logger.EnumerableToString <string>(files) + ") starts" , Logger.Level.DEBUG); LinkedList <ActiveTransportProperties> propsList = new LinkedList <ActiveTransportProperties>(); LinkedList <ActiveTransportProperties> newPropList; foreach (string file in files) { newPropList = loadObjectsFromFile <ActiveTransportProperties>(file, "activeTransports"); if (null != newPropList) { LinkedListExtensions.AppendRange <ActiveTransportProperties>(propsList, newPropList); } } Logger.Log("ActiveTransport::getActiveTransportPropertiesFromFiles(" + Logger.EnumerableToString <string>(files) + ") returns " + Logger.ToString <ActiveTransportProperties>(propsList) , Logger.Level.DEBUG); return(propsList); }
private void updateDisplayedBioBricks() { Logger.Log("AvailableBioBricksManager::updateDisplayedBioBricks", Logger.Level.DEBUG); LinkedList <BioBrick> availablePromoters = new LinkedList <BioBrick>(); LinkedListExtensions.AppendRange <BioBrick>(availablePromoters, getAvailableBioBricksOfType(BioBrick.Type.PROMOTER)); LinkedList <BioBrick> availableRBS = new LinkedList <BioBrick>(); LinkedListExtensions.AppendRange <BioBrick>(availableRBS, getAvailableBioBricksOfType(BioBrick.Type.RBS)); LinkedList <BioBrick> availableGenes = new LinkedList <BioBrick>(); LinkedListExtensions.AppendRange <BioBrick>(availableGenes, getAvailableBioBricksOfType(BioBrick.Type.GENE)); LinkedList <BioBrick> availableTerminators = new LinkedList <BioBrick>(); LinkedListExtensions.AppendRange <BioBrick>(availableTerminators, getAvailableBioBricksOfType(BioBrick.Type.TERMINATOR)); _displayableAvailablePromoters = getDisplayableAvailableBioBricks( availablePromoters , getDisplayableAvailableBioBrick ); _displayableAvailableRBS = getDisplayableAvailableBioBricks( availableRBS , getDisplayableAvailableBioBrick ); _displayableAvailableGenes = getDisplayableAvailableBioBricks( availableGenes , getDisplayableAvailableBioBrick ); _displayableAvailableTerminators = getDisplayableAvailableBioBricks( availableTerminators , getDisplayableAvailableBioBrick ); Logger.Log("AvailableBioBricksManager::updateDisplayedBioBricks" + "\n\navailablePromoters=" + Logger.ToString <BioBrick>(availablePromoters) + ",\n\navailableRBS=" + Logger.ToString <BioBrick>(availableRBS) + ",\n\navailableGenes=" + Logger.ToString <BioBrick>(availableGenes) + ",\n\navailableTerminators=" + Logger.ToString <BioBrick>(availableTerminators) + ",\n\n_displayableAvailablePromoters=" + Logger.ToString <AvailableDisplayedBioBrick>(_displayableAvailablePromoters) + ",\n\n_displayableAvailableRBS=" + Logger.ToString <AvailableDisplayedBioBrick>(_displayableAvailableRBS) + ",\n\n_displayableAvailableGenes=" + Logger.ToString <AvailableDisplayedBioBrick>(_displayableAvailableGenes) + ",\n\n_displayableAvailableTerminators=" + Logger.ToString <AvailableDisplayedBioBrick>(_displayableAvailableTerminators) , Logger.Level.TRACE); displayPromoters(); }
// Warning: inputFiles is an array of names of files inside 'biobrickFilesPathPrefix' private void loadBioBricks(string[] inputFiles, LinkedList <BioBrick> destination) { Logger.Log("AvailableBioBricksManager::loadBioBricks", Logger.Level.INFO); //load biobricks from xml BioBrickLoader bLoader = new BioBrickLoader(); //_availableBioBricks = new LinkedList<BioBrick>(); string files = ""; foreach (string file in inputFiles) { string fullPath = biobrickFilesPathPrefix + file; Logger.Log("AvailableBioBricksManager::loadBioBricks loads biobrick file " + fullPath, Logger.Level.DEBUG); LinkedList <BioBrick> bb = bLoader.loadBioBricksFromFile(fullPath); Logger.Log("AvailableBioBricksManager::loadBioBricks appended bb=" + bb.Count.ToString() + " from file " + fullPath, Logger.Level.DEBUG); LinkedListExtensions.AppendRange <BioBrick>(destination, bb); if (!string.IsNullOrEmpty(files)) { files += ", "; } files += fullPath; } Logger.Log("AvailableBioBricksManager::loadBioBricks loaded " + files + " so that destination=" + destination.Count, Logger.Level.DEBUG); }
//! This function is called at the initialisation of the simulation (like a Constructor) void Awake() { _instance = this; FileLoader fileLoader = new FileLoader(); _reactionsSets = new LinkedList <ReactionSet>(); _moleculesSets = new LinkedList <MoleculeSet>(); _mediums = new LinkedList <Medium>(); //TODO there is only one file in _moleculesFiles and in _reactionsFiles foreach (string file in _reactionsFiles) { LinkedList <ReactionSet> lr = fileLoader.loadObjectsFromFile <ReactionSet>(file, "reactions"); if (null != lr) { LinkedListExtensions.AppendRange <ReactionSet>(_reactionsSets, lr); } } foreach (string file in _moleculesFiles) { Logger.Log("ReactionEngine::Awake() loading molecules from file", Logger.Level.DEBUG); LinkedList <MoleculeSet> lm = fileLoader.loadObjectsFromFile <MoleculeSet>(file, "molecules"); if (null != lm) { LinkedListExtensions.AppendRange <MoleculeSet>(_moleculesSets, lm); } Logger.Log("ReactionEngine::Awake() loading molecules from file done" + ": _moleculesSets=" + Logger.ToString <MoleculeSet>(_moleculesSets) , Logger.Level.DEBUG); } foreach (string file in _mediumsFiles) { LinkedList <Medium> lmed = fileLoader.loadObjectsFromFile <Medium>(file, "Medium"); if (null != lmed) { LinkedListExtensions.AppendRange <Medium>(_mediums, lmed); } } foreach (Medium medium in _mediums) { medium.Init(_reactionsSets, _moleculesSets); medium.enableSequential(enableSequential); medium.enableNoise(enableNoise); medium.enableEnergy(enableEnergy); medium.enableShufflingReactionOrder = enableShufflingReactionOrder; } Logger.Log("ReactionEngine::Awake() FickReactions starting", Logger.Level.INFO); _fick = new Fick(); _fick.loadFicksReactionsFromFiles(_fickFiles, _mediums); Logger.Log("ReactionEngine::Awake() activeTransport starting", Logger.Level.INFO); _activeTransport = new ActiveTransport(); _activeTransport.loadActiveTransportReactionsFromFiles(_activeTransportFiles, _mediums); Logger.Log("ReactionEngine::Awake() done", Logger.Level.INFO); }