public static Tuple <List <double>, List <List <double> > > Calculate(DataSetLoader loader) { var signers = loader.EnumerateSigners().ToList(); var resampler = new ReSamplingFeatureExtraction() { InputButton = FusionFeatures.Button, InputX = FusionFeatures.X, InputY = FusionFeatures.Y }; var results = resampler.Calculate(signers); TxtHelper.Save(TxtHelper.ReSamplingResultsToLines(results), "resamplingdataset"); return(results); }
public Tuple <List <double>, List <List <double> > > Calculate(Signer signer) { var resList = new List <double>(); var dataLists = new List <List <double> >(); Parallel.ForEach(signer.Signatures, sig => { if (sig.Origin == Origin.Genuine) { var newRes = Calculate(sig); List <double> newResList = newRes.Item1; List <List <double> > newDataLists = newRes.Item2; lock (o) { resList.AddRange(newResList); if (dataLists.Count == 0) { for (int i = 0; i < newDataLists.Count; i++) { dataLists.Add(new List <double>()); } } if (dataLists.Count != newDataLists.Count) { throw new Exception(); } for (int i = 0; i < dataLists.Count; i++) { dataLists[i].AddRange(newDataLists[i]); } } } } ); Check(resList, dataLists); var res = new Tuple <List <double>, List <List <double> > >(resList, dataLists); TxtHelper.Save(TxtHelper.ReSamplingResultsToLines(res), "resamplingdata" + signer.ID); return(res); }