Skip to content

Commit 3f6cbf1

Browse files
committed
Ensured ordering of sampling design parameters
1 parent f067ee8 commit 3f6cbf1

23 files changed

+133
-133
lines changed

Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<Company>HSE</Company>
44
<Product>RVis</Product>
55
<Copyright>Copyright © HSE 2020</Copyright>
6-
<AssemblyVersion>0.9.11068.1</AssemblyVersion>
7-
<FileVersion>0.9.11068.1</FileVersion>
6+
<AssemblyVersion>0.9.11068.2</AssemblyVersion>
7+
<FileVersion>0.9.11068.2</FileVersion>
88
</PropertyGroup>
99
</Project>

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
# RVis
2-
[![Build Status](https://dev.azure.com/GMPtk/RVis/_apis/build/status/GMPtk.RVis?branchName=master)](https://dev.azure.com/GMPtk/RVis/_build/latest?definitionId=1&branchName=master) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
1+
# RVis [![Build Status](https://dev.azure.com/GMPtk/RVis/_apis/build/status/GMPtk.RVis?branchName=master)](https://dev.azure.com/GMPtk/RVis/_build/latest?definitionId=1&branchName=master)
32

43
![RVis](https://repository-images.githubusercontent.com/217533905/edffd200-f72f-11e9-9750-0cdb2c75dadf "RVis")
54

RVis.Base/Check.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,20 @@ public static void RequireUniqueElements<T, U>(IEnumerable<T> enumerable, Func<T
584584
throw new ArgumentException(message, nameof(enumerable));
585585
}
586586

587+
[DebuggerStepThrough]
588+
public static void RequireOrdered<T, U>(IEnumerable<T> enumerable, Func<T, U> keySelector) =>
589+
RequireOrdered(enumerable, keySelector, $"Expecting ordered sequence of {typeof(T).Name}");
590+
591+
[DebuggerStepThrough]
592+
public static void RequireOrdered<T, U>(IEnumerable<T> enumerable, Func<T, U> keySelector, [Localizable(false)] string message)
593+
{
594+
var ordered = enumerable.OrderBy(keySelector);
595+
596+
if (enumerable.SequenceEqual(ordered)) return;
597+
598+
throw new ArgumentException(message, nameof(enumerable));
599+
}
600+
587601
#endregion
588602

589603
#region Defaults

UI/Module/Sampling/Model/DistributionSampleGenerator.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ private DataTable GetSamples()
3434

3535
var parameterSamples = selectedParameters
3636
.Filter(ps => ps.DistributionType != DistributionType.Invariant)
37-
.OrderBy(ps => ps.Name.ToUpperInvariant())
3837
.Select(ps => (ParameterState: ps, Samples: new double[_nSamples]))
3938
.ToArr();
4039

UI/Module/Sampling/Model/Impl/RCPersist.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal static RankCorrelationDesign FromDTO(this _RankCorrelationDesignDTO dto
2424

2525
var correlations = dto.Correlations
2626
.Select(kvp => (Parameter: kvp.Key, Correlations: kvp.Value.ToArr()))
27-
.OrderBy(t => t.Parameter)
27+
.OrderBy(t => t.Parameter.ToUpperInvariant())
2828
.ToArr();
2929

3030
var nCorrelations = correlations.Count;

UI/Module/Sampling/Model/Impl/SamplingDesign.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ internal static SamplingDesign LoadSamplingDesign(string pathToSamplingDesignsDi
9999
Distribution.DeserializeDistribution(dp.Distribution).AssertSome()
100100
)
101101
)
102+
.OrderBy(dp => dp.Name.ToUpperInvariant())
102103
.ToArr() ?? default;
103104
latinHypercubeDesign = dto.LatinHypercubeDesign.FromDTO();
104105
rankCorrelationDesign = dto.RankCorrelationDesign.FromDTO();
@@ -156,6 +157,7 @@ string pathToSamplingDesignDirectory
156157
)
157158
{
158159
RequireDirectory(pathToSamplingDesignDirectory);
160+
RequireOrdered(designParameters, dp => dp.Name.ToUpperInvariant());
159161

160162
var dto = new _SamplingDesignDTO
161163
{
@@ -186,6 +188,10 @@ string pathToSamplingDesignDirectory
186188
internal static void SaveSamples(DataTable samples, string pathToSamplingDesignDirectory)
187189
{
188190
RequireDirectory(pathToSamplingDesignDirectory);
191+
RequireOrdered(
192+
samples.Columns.Cast<DataColumn>(),
193+
dc => dc.ColumnName.ToUpperInvariant()
194+
);
189195

190196
var pathToDesignSamples = Combine(pathToSamplingDesignDirectory, DESIGN_SAMPLES_FILE_NAME);
191197

UI/Module/Sampling/Model/ModelExt.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ internal static bool IsValidCorrelations(
5959
{
6060
var parameters = correlations.Map(c => c.Parameter);
6161

62-
var isInAscendingOrder = parameters.SequenceEqual(parameters.OrderBy(n => n));
62+
var isInAscendingOrder = parameters.SequenceEqual(parameters.OrderBy(n => n.ToUpperInvariant()));
6363
if (!isInAscendingOrder) return false;
6464

6565
var hasExpectedArrayLengths = correlations
@@ -141,7 +141,7 @@ string parameter
141141
RequireFalse(correlations.Exists(c => c.Parameter == parameter));
142142

143143
var parameters = correlations.Map(c => c.Parameter) + parameter;
144-
parameters = parameters.OrderBy(n => n).ToArr();
144+
parameters = parameters.OrderBy(n => n.ToUpperInvariant()).ToArr();
145145

146146
var nParameters = parameters.Count;
147147
var indexInserted = parameters.IndexOf(parameter);

UI/Module/Sampling/Model/SampleGeneratorBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ internal SampleGeneratorBase(
2424
IRVisServerPool serverPool
2525
)
2626
{
27+
RequireOrdered(parameterStates, ps => ps.Name.ToUpperInvariant());
28+
2729
_parameterStates = parameterStates;
2830
_rankCorrelationDesign = rankCorrelationDesign;
2931
_nSamples = nSamples;

UI/Module/Sampling/State/Impl/ModuleState.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ internal static void Save(ModuleState instance, Simulation simulation)
8585
DistributionStates = Distribution.SerializeDistributions(ps.Distributions),
8686
IsSelected = ps.IsSelected
8787
})
88+
.OrderBy(ps => ps.Name.ToUpperInvariant())
8889
.ToArray(),
8990

9091
SamplingDesign = instance.SamplingDesign?.CreatedOn.ToDirectoryName(),

UI/Module/Sampling/ViewModel.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,10 @@ private void LoadSamplingDesign(DateTime createdOn)
563563
return parameterState;
564564
});
565565

566-
_moduleState.ParameterStates = existingParameterStates + newParameterStates;
566+
var parameterStates = existingParameterStates + newParameterStates;
567+
_moduleState.ParameterStates = parameterStates
568+
.OrderBy(ps => ps.Name.ToUpperInvariant())
569+
.ToArr();
567570

568571
UnloadDesign();
569572

0 commit comments

Comments
 (0)