public SpectralQuantity Randomize(double constPart, double relPart)
        {
            var randomizedSpectralQuantity = new SpectralQuantity($"{Name} - randomized");

            foreach (var value in spectralValues)
            {
                double r1       = RandomUtil.GetUniformNoise(relPart);
                double r2       = RandomUtil.GetUniformNoise(constPart);
                double newValue = value.Value * (1.0 + r1) + r2;
                if (newValue < 0)
                {
                    newValue = 0.0;
                }
                randomizedSpectralQuantity.AddValue(value.Lambda, newValue);
            }
            return(randomizedSpectralQuantity);
        }
        public static SpectralQuantity LoadFromCsv(string filename)
        {
            SpectralQuantity spectrum = new SpectralQuantity(Path.GetFileNameWithoutExtension(filename));
            var reader = new StreamReader(File.OpenRead(filename));

            while (!reader.EndOfStream)
            {
                var line   = reader.ReadLine();
                var tokens = line.Split(',');
                if (tokens.Length == 2)
                {
                    double x = MyParse(tokens[0]);
                    double y = MyParse(tokens[1]);
                    if (!double.IsNaN(x) && !double.IsNaN(y))
                    {
                        spectrum.AddValue(new SpectralQuantityValue(x, y));
                    }
                }
            }
            reader.Close();
            return(spectrum);
        }