public List <Tuple <int, string, List <IonLight>, List <int> > > AlignChromatograms(List <Tuple <int, string, List <IonLight>, List <int> > > theData)
        {
            List <Tuple <int, string, List <IonLight>, List <int> > > alignedData = new List <Tuple <int, string, List <IonLight>, List <int> > >();

            Tuple <double, double>[] massCenter = new Tuple <double, double> [theData.Count];

            //First we obtaine a weighted sum to find the center of each chromatogram
            for (int i = 0; i < theData.Count; i++)
            {
                double w       = theData[i].Item3.Sum(a => a.Intensity);
                double wCenter = theData[i].Item3.Sum(a => a.RetentionTime * a.Intensity) / w;
                massCenter[i] = new Tuple <double, double>(wCenter, w);
            }

            //Now we determine the center of alignment
            double retentionCenter = massCenter.Sum(a => a.Item1 * a.Item2) / massCenter.Sum(a => a.Item2);

            //And now we shift everyone to this center
            for (int i = 0; i < massCenter.Length; i++)
            {
                //This delta
                double thisDelta = retentionCenter - massCenter[i].Item1;

                List <IonLight> alignedIons = (from ion in theData[i].Item3
                                               select new IonLight(ion.MZ, ion.Intensity, ion.RetentionTime + thisDelta, ion.ScanNumber)).ToList();

                alignedData.Add(new Tuple <int, string, List <IonLight>, List <int> >(theData[i].Item1, theData[i].Item2, alignedIons, theData[i].Item4));
            }

            return(alignedData);
        }
示例#2
0
 public void DoubleSumOnTwoTuple()
 {
     var sut = new Tuple<double, double>(1, 2);
       double expected = sut.AsEnumerable().Cast<double>().Sum();
       double actual = sut.Sum(x => (double) x);
       Assert.AreEqual(expected, actual);
 }
示例#3
0
 public void ShortSumOnTwoTuple()
 {
     var sut = new Tuple<short, short>(1, 2);
       short expected = sut.AsEnumerable().Cast<short>().Sum();
       short actual = sut.Sum(x => (short) x);
       Assert.AreEqual(expected, actual);
 }
示例#4
0
 public TableRenderer(string title, Tuple<string, int>[] headers)
 {
     _title = title;
     _headers = headers;
     _totalWidth = _headers.Sum(h => h.Item2) + (_headers.Count() - 1) * 3;
     _rowTemplate = "| " + String.Join(" | ", _headers.Select((h, i) => "{" + i + ",-" + h.Item2 + "}").ToArray()) + " |";
 }
示例#5
0
 public void IntegerSumOnTwoTuple()
 {
     var sut = new Tuple<int, int>(1, 2);
       int expected = sut.AsEnumerable().Cast<int>().Sum();
       int actual = sut.Sum(x => (int) x);
       Assert.AreEqual(expected, actual);
 }
示例#6
0
 public void ShortSumOnSevenTuple()
 {
   var sut = new Tuple<short, short, short, short, short, short, short>(1, 2, 3, 4, 5, 6, 7);
   short expected = sut.AsEnumerable().Cast<short>().Sum();
   short actual = sut.Sum(x => (short) x);
   Assert.AreEqual(expected, actual);
 }
示例#7
0
 public void LongSumOnTwoTuple()
 {
     var sut = new Tuple<long, long>(1, 2);
       long expected = sut.AsEnumerable().Cast<long>().Sum();
       long actual = sut.Sum(x => (long) x);
       Assert.AreEqual(expected, actual);
 }
示例#8
0
 public void ShortSumOnOneTuple()
 {
   var sut = new Tuple<short>(1);
   short expected = sut.AsEnumerable().Cast<short>().Sum();
   short actual = sut.Sum(x => (short) x);
   Assert.AreEqual(expected, actual);
 }
示例#9
0
 public void DecimalSumOnTwoTuple()
 {
     var sut = new Tuple<decimal, decimal>(1, 2);
       decimal expected = sut.AsEnumerable().Cast<decimal>().Sum();
       decimal actual = sut.Sum(x => (decimal) x);
       Assert.AreEqual(expected, actual);
 }
示例#10
0
    public static double Average <T1, T2>(this Tuple <T1, T2> value, Func <object, double> func)
    {
        Contract.Requires <ArgumentNullException>(value != null);
        Contract.Requires <ArgumentNullException>(func != null);
        double average = value.Sum(func) / value.Count();

        return(average);
    }
示例#11
0
        public void DecimalSumOnOneTuple()
        {
            var     sut      = new Tuple <decimal>(1);
            decimal expected = sut.AsEnumerable().Cast <decimal>().Sum();
            decimal actual   = sut.Sum(x => (decimal)x);

            Assert.AreEqual(expected, actual);
        }
示例#12
0
        public void LongSumOnOneTuple()
        {
            var  sut      = new Tuple <long>(1);
            long expected = sut.AsEnumerable().Cast <long>().Sum();
            long actual   = sut.Sum(x => (long)x);

            Assert.AreEqual(expected, actual);
        }
示例#13
0
        public void LongSumOnSevenTuple()
        {
            var  sut      = new Tuple <long, long, long, long, long, long, long>(1, 2, 3, 4, 5, 6, 7);
            long expected = sut.AsEnumerable().Cast <long>().Sum();
            long actual   = sut.Sum(x => (long)x);

            Assert.AreEqual(expected, actual);
        }
示例#14
0
        public void DoubleSumOnOneTuple()
        {
            var    sut      = new Tuple <double>(1);
            double expected = sut.AsEnumerable().Cast <double>().Sum();
            double actual   = sut.Sum(x => (double)x);

            Assert.AreEqual(expected, actual);
        }
示例#15
0
        public void DoubleSumOnSevenTuple()
        {
            var    sut      = new Tuple <double, double, double, double, double, double, double>(1, 2, 3, 4, 5, 6, 7);
            double expected = sut.AsEnumerable().Cast <double>().Sum();
            double actual   = sut.Sum(x => (double)x);

            Assert.AreEqual(expected, actual);
        }
示例#16
0
        public void IntegerSumOnOneTuple()
        {
            var sut      = new Tuple <int>(1);
            int expected = sut.AsEnumerable().Cast <int>().Sum();
            int actual   = sut.Sum(x => (int)x);

            Assert.AreEqual(expected, actual);
        }
示例#17
0
    public static double?Average <T1, T2, T3, T4>(this Tuple <T1, T2, T3, T4> value, Func <object, short?> func)
    {
        Contract.Requires <ArgumentNullException>(value != null);
        Contract.Requires <ArgumentNullException>(func != null);

        double?average = value.Sum(func) / (double?)value.Count();

        return(average);
    }
示例#18
0
    public static decimal?Average <T1, T2, T3, T4, T5>(this Tuple <T1, T2, T3, T4, T5> value, Func <object, decimal?> func)
    {
        Contract.Requires <ArgumentNullException>(value != null);
        Contract.Requires <ArgumentNullException>(func != null);

        decimal?average = value.Sum(func) / value.Count();

        return(average);
    }
示例#19
0
    public static double Average <T1, T2, T3, T4, T5, T6, T7>(this Tuple <T1, T2, T3, T4, T5, T6, T7> value,
                                                              Func <object, long> func)
    {
        Contract.Requires <ArgumentNullException>(value != null);
        Contract.Requires <ArgumentNullException>(func != null);

        double average = value.Sum(func) / (double)value.Count();

        return(average);
    }
示例#20
0
        private int InsertGuids(Tuple<Position, int>[] selections)
        {
            var sumChanges = selections.Sum(x =>
            {
                scintilla.DeleteRange(x.Item1, x.Item2);
                scintilla.InsertText(x.Item1, Guid.NewGuid().ToString());

                return GuidHelperConstants.Regexlength - x.Item2;
            });
            return sumChanges;
        }
示例#21
0
        static void Main(string[] args)
        {
            // 入力の取得
            const int DishCount        = 5;
            var       timeWithPaddings = new Tuple <int, int> [DishCount];

            for (var i = 0; i < DishCount; i++)
            {
                var cookingTime = int.Parse(Console.ReadLine());
                var padding     = cookingTime % 10 == 0 ? 0 : 10 - cookingTime % 10;
                timeWithPaddings[i] = Tuple.Create(cookingTime, padding);
            }

            // 一番 PaddingTime の長い料理を最後に注文することで最短時間となる
            var maxPadding = timeWithPaddings.Max(t => t.Item2);
            var sum        = timeWithPaddings.Sum(t => t.Item1 + t.Item2) - maxPadding;

            // 解答の出力
            Console.WriteLine(sum);
        }
示例#22
0
            /// <summary>
            /// This tacks on from-to percent
            /// </summary>
            private static Tuple<FlagColorCategory[], int, double, double>[] BuildMaxPerFlag(Tuple<FlagColorCategory[], int>[] groups)
            {
                double sumEnumValues = groups.Sum(o => o.Item1.Length);

                double sumPercent = 0;
                var retVal = new Tuple<FlagColorCategory[], int, double, double>[groups.Length];
                for (int cntr = 0; cntr < retVal.Length; cntr++)
                {
                    double percent = groups[cntr].Item1.Length / sumEnumValues;

                    retVal[cntr] = Tuple.Create(groups[cntr].Item1, groups[cntr].Item2, sumPercent, sumPercent + percent);

                    sumPercent += percent;
                }

                return retVal;
            }
示例#23
0
 /// <summary>
 /// Sum
 /// </summary>
 public static decimal sum <T1, T2>(Tuple <decimal, decimal> self) =>
 self.Sum();
示例#24
0
 /// <summary>
 /// Sum
 /// </summary>
 public static float sum <T1, T2>(Tuple <float, float> self) =>
 self.Sum();
示例#25
0
 /// <summary>
 /// Sum
 /// </summary>
 public static double sum <T1, T2>(Tuple <double, double> self) =>
 self.Sum();
示例#26
0
 /// <summary>
 /// Sum
 /// </summary>
 public static int sum <T1, T2>(Tuple <int, int> self) =>
 self.Sum();
示例#27
0
        public static double Avg(Tuple<double, double>[] weightedValues)
        {
            if (weightedValues == null || weightedValues.Length == 0)
            {
                return 0;
            }

            double totalWeight = weightedValues.Sum(o => o.Item2);
            if (Math1D.IsNearZero(totalWeight))
            {
                return weightedValues.Average(o => o.Item1);
            }

            double sum = weightedValues.Sum(o => o.Item1 * o.Item2);

            return sum / totalWeight;
        }