private void LoadFromFile(DataGroupItem dataGroup, DataSourceItem sourceItem) { FileCentralDataSource ds = sourceItem.SourceInformation as FileCentralDataSource; TimeSeries[] allTS = (TimeSeries[])NonInteractiveIO.Load(ds.Filename); if (allTS == null) { return; } for (var i = 0; i < allTS.Length; i++) { var ts = allTS[i]; DataDetailsItem dataItem = new DataDetailsItem { Data = new TimeSeriesPersistent { TimeSeries = ts }, DataInformation = new FileDataDetails { Name = ts.name, ReloadOnRun = ReloadOnRun, Column = i #if V3 || V4_0 || V4_1 || V4_2 #else , StartDate = ts.Start #endif } }; sourceItem.Data.Add(dataItem); var gdd = new GenericDataDetails { Name = ts.name }; gdd.AssociatedData.Add(dataItem); dataGroup.DataDetails.Add(gdd); } }
//public static string FindMemberFromAka(Type t, string aka) //{ // foreach (MemberInfo memberInfo in t.GetMembers()) // { // if (AkaAttribute.FindAka(memberInfo).ToLower() == aka.ToLower()) // return memberInfo.Name; // } // return null; //} public static void AssignTimeSeries(RiverSystemScenario scenario, object target, string element, string dataGroupName, string dataItem, int column = 0) { var ri = GetReflectedItem(target, element); var dm = scenario.Network.DataManager; dm.RemoveUsage(ri); var dataGroup = dm.DataGroups.Where(dg => dg.Name == dataGroupName).FirstOrDefault(); if (dataGroup == null) { dataGroup = DataGroupItem.CreateGroup <GeneratedCentralDataSource>(scenario.Network.DefaultInputSet); dataGroup.Name = dataGroupName; dm.DataGroups.Add(dataGroup); } var dataGroupItem = dataGroup.DataDetails.Where(dgi => dgi.Name == dataItem).FirstOrDefault(); if (dataGroupItem == null) { Data[] loaded = NonInteractiveIO.Load(dataItem); TimeSeries ts = loaded[column] as TimeSeries; ts.name = dataItem; dataGroup.CreateUsage <GeneratedDataDetails>(ri, ts); } else { dataGroupItem.Usages.Add(new DataUsage { ReflectedItem = ri }); } }
public static void Run(RunComplexType runSettings, Diagnostics diagnostics, string[] args) { TimeSeries[] results = (TimeSeries[]) NonInteractiveIO.Load(runSettings.workDir + "\\" + runSettings.Property(Keys.OUTPUT_FILE)); diagnostics.Log(3, string.Format("Loaded {0} time series", results.Length)); string forcedTimeStep = runSettings.Property(Keys.FORCED_TIMESTAMP); TimeSeriesCollectionComplexType fewsTimeSeriesCollection = TIMEProxy.FromTimeSeriesCollection(results, runSettings.timeZone, forcedTimeStep); string outputFn = runSettings.outputTimeSeriesFile[0]; FEWSPIProxy.WriteTimeSeriesCollection(outputFn, fewsTimeSeriesCollection); diagnostics.Log(3, string.Format("Written {0} time series to {1}", fewsTimeSeriesCollection.series.Length, outputFn)); diagnostics.Log(3, "All Done"); }
/// <summary> /// Runs a single iteration of the message queue runner. /// This waits until it receives a new message (containing a new parameter set to run), /// deserializes this message, re-parameterises the model definition and runs a single /// model run. The process completes by saving the result before sending a complete message /// back on the queue. /// </summary> /// <returns> /// Returns whether an iteration was successful /// </returns> public bool RunIteration(out ParameterSet resultParameters) { resultParameters = null; //#if DEBUG // Debugger.Launch(); //#endif try { Message receivedMessage = queues.PestToTridentQueue.Receive(new TimeSpan(0, 0, TIMEOUT)); ParameterSet pSet = this.processMessage(receivedMessage); pSet.applyParametersTo(modelRunner.Model); TimeSeries output = new TimeSeries(); modelRunner.record(this.outputTimeSeriesName, output); modelRunner.execute(); NonInteractiveIO.Save(this.outputTimeSeriesFile, output); // save output time series to specified location // send resulting set so we can calculate score on parameters resultParameters = pSet; this.result = pSet; //this.queue.Send("Iteration Complete"); this.queues.TridentToPestQueue.Send(null); } catch (MessageQueueException e) { if (e.MessageQueueErrorCode == MessageQueueErrorCode.IOTimeout) { queues.Close(); // return the last given result resultParameters = this.result; return(false); } else { throw e; } } // iteration ran successfully return(true); }