/// <summary> /// Creates a new instance of the <see cref="BiasingBehavior"/> class. /// </summary> /// <param name="name">The name of the behavior.</param> public BiasingBehavior(string name, ComponentBindingContext context) : base(name) { if (context == null) { throw new ArgumentNullException(nameof(context)); } // Get our resistor parameters (we want our A and B parameter values) _bp = context.GetParameterSet <BaseParameters>(); // Get the simulation parameters (we want to use Gmin) _baseConfig = context.GetSimulationParameterSet <BiasingParameters>(); // Request the node variables var state = context.GetState <IBiasingSimulationState>(); _nodeA = state.GetSharedVariable(context.Nodes[0]); _nodeB = state.GetSharedVariable(context.Nodes[1]); // We need 4 matrix elements and 2 RHS vector elements var indexA = state.Map[_nodeA]; var indexB = state.Map[_nodeB]; _elements = new ElementSet <double>(state.Solver, new[] { new MatrixLocation(indexA, indexA), new MatrixLocation(indexA, indexB), new MatrixLocation(indexB, indexA), new MatrixLocation(indexB, indexB) }, new[] { indexA, indexB }); }
public sdwSSA(ModelInfo modelinfo, double duration, int repeats, int samples) : base(modelinfo, duration, repeats, samples) { Configuration config = Configuration.CurrentConfiguration; _reactions = new StateDependentReactionSet(model.Reactions, _gammaSize); _trajectoryCounter = 0; _runningMean = 0.0; _runningVariance = 0.0; _crossEntropyRuns = config.GetParameterWithDefault("sdwSSA.crossEntropyRuns", 100000); _crossEntropyThreshold = config.GetParameterWithDefault("sdwSSA.crossEntropyThreshold", 0.01); _crossEntropyMinDataSize = config.GetParameterWithDefault("sdwSSA.crossEntropyMinDataSize", 200); _reExpressionName = config.GetParameterWithDefault("sdwSSA.reExpressionName", "reExpression"); _reValName = config.GetParameterWithDefault("sdwSSA.reValName", "reVal"); _gammaSize = config.GetParameterWithDefault("sdwSSA.gammaSize", 15); _binCountThreshold = config.GetParameterWithDefault("sdwSSA.binCount", 20); _reExpression = model.Expressions.FirstOrDefault(e => e.Name == _reExpressionName); _rareEventValue = 0.0; _rareEventTest = new EqualTo(_reExpression, new ConstantValue(_rareEventValue)); _gamma = new List <double[]>(); _propensityCutoff = new List <double[]>(); _gammaIndex = new int[_reactions.NumReactions]; _binIndex = new int[_reactions.NumReactions]; _biasingParametersFileName = config.GetParameterWithDefault("sdwSSA.biasingParametersFileName", modelinfo.Name + "_biasingParameters.json"); _biasingParametersFlag = (String.CompareOrdinal(_biasingParametersFileName, modelinfo.Name + "_biasingParameters.json") == 0); _biasingParameters = _biasingParametersFlag ? new BiasingParameters() : BiasingParametersDeserializer.ReadParametersFromJsonFile(_biasingParametersFileName); _outputFileName = config.GetParameterWithDefault("sdwSSA.outputFileName", modelInfo.Name + "_sdwSSA_1e" + Math.Log(SamplingParams.RealizationCount, 10) + ".txt"); }
public void BiasingParametersLoadParametersFromNull() { // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(null); // ReSharper restore UnusedVariable Assert.Fail("LoadParametersFromJson(null) should throw an ArgumentNullException."); }
public void BiasingParametersJsonFileBinCountNotCutoffSize() { const string inputFile = "resources\\biasing_sample_BIN_COUNT_not_CUTOFF_array_size.json"; // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(inputFile); // ReSharper restore UnusedVariable Assert.Fail("BiasingParametersJsonFileBinCountNotCutoffSize() should throw a System.ArgumentException."); }
public void BiasingParametersJsonFileIreCountNotRareEventInfoSize() { const string inputFile = "resources\\biasing_sample_IRE_COUNT_not_RARE_EVENT_INFO_array_size.json"; // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(inputFile); // ReSharper restore UnusedVariable Assert.Fail("BiasingParametersJsonFileIreCountNotRareEventInfoSize() should throw a System.ArgumentException."); }
public void BiasingParametersJsonFileReactionCountLessThanReactionArraySize() { const string inputFile = "resources\\biasing_sample_REACTION_COUNT_less_than_REACTION_array_size.json"; // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(inputFile); // ReSharper restore UnusedVariable Assert.Fail("BiasingParametersJsonFileReactionCountLessThanReactionArraySize() should throw a System.ArgumentException."); }
public void BiasingParametersJsonFileMissingIreCountParameter() { const string inputFile = "resources\\biasing_sample_IRE_COUNT_missing.json"; // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(inputFile); // ReSharper restore UnusedVariable Assert.Fail("BiasingParametersJsonFileMissingIreCountParameter() should throw a System.ArgumentException."); }
public void BiasingParametersLoadParametersFromInvalidJson() { const string jsonFilename = "resources\\invalid.json"; // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(jsonFilename); // ReSharper restore UnusedVariable Assert.Fail("LoadParametersFromInvalidJson({0}) should throw an ArgumentException.", jsonFilename); }
public void BiasingParametersConstructor() { var parameters = new BiasingParameters(); Assert.AreEqual(string.Empty, parameters.RareEvent.ExpressionLocale); Assert.AreEqual(string.Empty, parameters.RareEvent.ExpressionName); Assert.AreEqual(0, parameters.RareEvent.IntermediateRareEventCount); Assert.IsEmpty(parameters.RareEvent.Thresholds); Assert.IsEmpty(parameters.Locales); }
public void BiasingParametersLoadParametersFromMissingFile() { string tempFileName = Path.GetTempFileName(); File.Delete(tempFileName); // ReSharper disable UnusedVariable var parameters = BiasingParameters.LoadParametersFromJson(tempFileName); // ReSharper restore UnusedVariable Assert.Fail("LoadParametersFromMissingFile(tempFileName) should throw an IO.FileNotFoundException."); }
/// <summary> /// Initializes a new instance of the <see cref="Biasing"/> class. /// </summary> /// <param name="context">The binding context.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception> public Biasing(IComponentBindingContext context) : base(context) { var state = context.GetState <IBiasingSimulationState>(); _config = context.GetSimulationParameterSet <BiasingParameters>(); _iteration = context.GetState <IIterationSimulationState>(); _args = new MosfetContributionEventArgs(_contributions); context.TryGetState(out _time); context.TryGetState(out _method); _variables = new MosfetVariables <double>(context, state); // Get matrix pointers _elements = new ElementSet <double>(state.Solver, _variables.GetMatrixLocations(state.Map), _variables.GetRhsIndices(state.Map)); }
public void BiasingParametersLoadParametersFromJson() { const string filename = "resources\\biasing_sample.json"; var parameters = BiasingParameters.LoadParametersFromJson(filename); // Verify rare event spec Assert.AreEqual("site_1", parameters.RareEvent.ExpressionLocale); Assert.AreEqual("reExpression", parameters.RareEvent.ExpressionName); Assert.AreEqual(2, parameters.RareEvent.IntermediateRareEventCount); Assert.AreEqual(24, parameters.RareEvent.Thresholds[0]); Assert.AreEqual(32, parameters.RareEvent.Thresholds[1]); // Verify locale[s] Assert.AreEqual(1, parameters.Locales.Count); var localeInfo = parameters.Locales[0]; Assert.AreEqual("site_1", localeInfo.Name); Assert.AreEqual(8, localeInfo.ReactionCount); Assert.AreEqual(8, localeInfo.Reactions.Count); // Verify first reaction var reactionInfo = localeInfo.Reactions[0]; Assert.AreEqual("R1", reactionInfo.Name); Assert.AreEqual(2, reactionInfo.RareEvents.Count); var rareEventInfo = reactionInfo.RareEvents[0]; Assert.AreEqual(2, rareEventInfo.BinCount); Assert.AreEqual(2, rareEventInfo.Gammas.Length); Assert.AreEqual(1, rareEventInfo.Thresholds.Length); Assert.AreEqual(1.06863, rareEventInfo.Gammas[0]); Assert.AreEqual(1.56882, rareEventInfo.Gammas[1]); Assert.AreEqual(0.00031386, rareEventInfo.Thresholds[0]); // Verify last reaction reactionInfo = localeInfo.Reactions[localeInfo.ReactionCount - 1]; Assert.AreEqual("R8", reactionInfo.Name); Assert.AreEqual(2, reactionInfo.RareEvents.Count); rareEventInfo = reactionInfo.RareEvents[1]; Assert.AreEqual(7, rareEventInfo.BinCount); Assert.AreEqual(7, rareEventInfo.Gammas.Length); Assert.AreEqual(6, rareEventInfo.Thresholds.Length); Assert.AreEqual(2.37130, rareEventInfo.Gammas[0]); Assert.AreEqual(2.191004, rareEventInfo.Gammas[6]); Assert.AreEqual(0.3935499, rareEventInfo.Thresholds[5]); }
/// <summary> /// Initializes a new instance of the <see cref="Biasing"/> class. /// </summary> /// <param name="context">The binding context.</param> /// <exception cref="ArgumentNullException">Thrown if <paramref name="context"/> is <c>null</c>.</exception> public Biasing(IComponentBindingContext context) : base(context) { var state = context.GetState <IBiasingSimulationState>(); _config = context.GetSimulationParameterSet <BiasingParameters>(); _iteration = context.GetState <IIterationSimulationState>(); _args = new MosfetContributionEventArgs(_contributions); context.TryGetState(out _time); context.TryGetState(out _method); _variables = new MosfetVariables <double>(Name, state, context.Nodes, !ModelParameters.DrainResistance.Equals(0.0) || !ModelParameters.SheetResistance.Equals(0.0) && Parameters.DrainSquares > 0, !ModelParameters.SourceResistance.Equals(0.0) || !ModelParameters.SheetResistance.Equals(0.0) && Parameters.SourceSquares > 0); // Get matrix pointers _elements = new ElementSet <double>(state.Solver, _variables.GetMatrixLocations(state.Map), _variables.GetRhsIndices(state.Map)); }
public void BiasingParametersWriteParametersToJson() { const string inputFile = "resources\\biasing_sample.json"; var parameters = BiasingParameters.LoadParametersFromJson(inputFile); string outputFile = Path.GetTempFileName(); bool areSame = false; try { Console.WriteLine("Writing biasing parameters to '{0}'...", outputFile); parameters.WriteParametersToJsonFile(outputFile); FileAssert.AreEqual(inputFile, outputFile); areSame = true; } finally { if (areSame) { File.Delete(outputFile); } } }