Пример #1
0
        internal static SamplingAlgorithm DeserializeSamplingAlgorithm(JsonElement element)
        {
            if (element.TryGetProperty("samplingAlgorithmType", out JsonElement discriminator))
            {
                switch (discriminator.GetString())
                {
                case "Bayesian": return(BayesianSamplingAlgorithm.DeserializeBayesianSamplingAlgorithm(element));

                case "Grid": return(GridSamplingAlgorithm.DeserializeGridSamplingAlgorithm(element));

                case "Random": return(RandomSamplingAlgorithm.DeserializeRandomSamplingAlgorithm(element));
                }
            }
            SamplingAlgorithmType samplingAlgorithmType = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("samplingAlgorithmType"))
                {
                    samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString());
                    continue;
                }
            }
            return(new SamplingAlgorithm(samplingAlgorithmType));
        }
Пример #2
0
        internal static ImageSweepSettings DeserializeImageSweepSettings(JsonElement element)
        {
            Optional <EarlyTerminationPolicy> earlyTermination  = default;
            ImageSweepLimitSettings           limits            = default;
            SamplingAlgorithmType             samplingAlgorithm = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("earlyTermination"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        earlyTermination = null;
                        continue;
                    }
                    earlyTermination = EarlyTerminationPolicy.DeserializeEarlyTerminationPolicy(property.Value);
                    continue;
                }
                if (property.NameEquals("limits"))
                {
                    limits = ImageSweepLimitSettings.DeserializeImageSweepLimitSettings(property.Value);
                    continue;
                }
                if (property.NameEquals("samplingAlgorithm"))
                {
                    samplingAlgorithm = new SamplingAlgorithmType(property.Value.GetString());
                    continue;
                }
            }
            return(new ImageSweepSettings(earlyTermination.Value, limits, samplingAlgorithm));
        }
Пример #3
0
 void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
 {
     writer.WriteStartObject();
     writer.WritePropertyName("samplingAlgorithmType");
     writer.WriteStringValue(SamplingAlgorithmType.ToString());
     writer.WriteEndObject();
 }
Пример #4
0
        public ImageSweepSettings(ImageSweepLimitSettings limits, SamplingAlgorithmType samplingAlgorithm)
        {
            if (limits == null)
            {
                throw new ArgumentNullException(nameof(limits));
            }

            Limits            = limits;
            SamplingAlgorithm = samplingAlgorithm;
        }
Пример #5
0
        internal static GridSamplingAlgorithm DeserializeGridSamplingAlgorithm(JsonElement element)
        {
            SamplingAlgorithmType samplingAlgorithmType = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("samplingAlgorithmType"))
                {
                    samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString());
                    continue;
                }
            }
            return(new GridSamplingAlgorithm(samplingAlgorithmType));
        }
Пример #6
0
        internal static RandomSamplingAlgorithm DeserializeRandomSamplingAlgorithm(JsonElement element)
        {
            Optional <RandomSamplingAlgorithmRule> rule = default;
            Optional <int?>       seed = default;
            SamplingAlgorithmType samplingAlgorithmType = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("rule"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    rule = new RandomSamplingAlgorithmRule(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("seed"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        seed = null;
                        continue;
                    }
                    seed = property.Value.GetInt32();
                    continue;
                }
                if (property.NameEquals("samplingAlgorithmType"))
                {
                    samplingAlgorithmType = new SamplingAlgorithmType(property.Value.GetString());
                    continue;
                }
            }
            return(new RandomSamplingAlgorithm(samplingAlgorithmType, Optional.ToNullable(rule), Optional.ToNullable(seed)));
        }
Пример #7
0
 void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
 {
     writer.WriteStartObject();
     if (Optional.IsDefined(Rule))
     {
         writer.WritePropertyName("rule");
         writer.WriteStringValue(Rule.Value.ToString());
     }
     if (Optional.IsDefined(Seed))
     {
         if (Seed != null)
         {
             writer.WritePropertyName("seed");
             writer.WriteNumberValue(Seed.Value);
         }
         else
         {
             writer.WriteNull("seed");
         }
     }
     writer.WritePropertyName("samplingAlgorithmType");
     writer.WriteStringValue(SamplingAlgorithmType.ToString());
     writer.WriteEndObject();
 }
Пример #8
0
 internal ImageSweepSettings(EarlyTerminationPolicy earlyTermination, ImageSweepLimitSettings limits, SamplingAlgorithmType samplingAlgorithm)
 {
     EarlyTermination  = earlyTermination;
     Limits            = limits;
     SamplingAlgorithm = samplingAlgorithm;
 }