Ejemplo n.º 1
0
    //! 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);
    }
Ejemplo n.º 2
0
    /*!
     * \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);
    }
Ejemplo n.º 3
0
    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();
    }
Ejemplo n.º 4
0
    // 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);
    }
Ejemplo n.º 5
0
    //! 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);
    }