Exemple #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SubsequencesSimilarityController"/> class.
 /// </summary>
 public SubsequencesSimilarityController() : base(TaskType.SubsequencesSimilarity)
 {
     db = new LibiadaWebEntities();
     subsequenceExtractor             = new SubsequenceExtractor(db);
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
     sequenceAttributeRepository      = new SequenceAttributeRepository(db);
 }
Exemple #2
0
        public ActionResult Index(long[] matterIds, short[] characteristicLinkIds, Feature[] features)
        {
            return(CreateTask(() =>
            {
                var sequencesData = new SequenceData[matterIds.Length];

                long[] parentSequenceIds;
                var matterNames = new string[matterIds.Length];
                var remoteIds = new string[matterIds.Length];
                var subsequencesCharacteristicsNames = new string[characteristicLinkIds.Length];
                var subsequencesCharacteristicsList = new SelectListItem[characteristicLinkIds.Length];

                using (var db = new LibiadaWebEntities())
                {
                    var parentSequences = db.DnaSequence.Include(s => s.Matter)
                                          .Where(s => s.Notation == Notation.Nucleotides && matterIds.Contains(s.MatterId))
                                          .Select(s => new { s.Id, MatterName = s.Matter.Name, s.RemoteId })
                                          .ToDictionary(s => s.Id);
                    parentSequenceIds = parentSequences.Keys.ToArray();

                    for (int n = 0; n < parentSequenceIds.Length; n++)
                    {
                        matterNames[n] = parentSequences[parentSequenceIds[n]].MatterName;
                        remoteIds[n] = parentSequences[parentSequenceIds[n]].RemoteId;
                    }
                }

                FullCharacteristicRepository characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
                for (int k = 0; k < characteristicLinkIds.Length; k++)
                {
                    subsequencesCharacteristicsNames[k] = characteristicTypeLinkRepository.GetCharacteristicName(characteristicLinkIds[k]);
                    subsequencesCharacteristicsList[k] = new SelectListItem
                    {
                        Value = k.ToString(),
                        Text = subsequencesCharacteristicsNames[k],
                        Selected = false
                    };
                }

                // TODO: Maybe AttributesValueCache should be created in the Subsequences calculator
                var attributeValuesCache = new AttributeValueCacheManager();

                for (int i = 0; i < parentSequenceIds.Length; i++)
                {
                    var subsequencesData = CalculateSubsequencesCharacteristics(characteristicLinkIds, features, parentSequenceIds[i]);

                    attributeValuesCache.FillAttributeValues(subsequencesData);

                    sequencesData[i] = new SequenceData(matterIds[i], matterNames[i], remoteIds[i], default, subsequencesData);
 /// <summary>
 /// Initializes a new instance of the <see cref="ClusterizationController"/> class.
 /// </summary>
 public ClusterizationController() : base(TaskType.Clusterization)
 {
     db = new LibiadaWebEntities();
     commonSequenceRepository         = new CommonSequenceRepository(db);
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="OrderCalculationController"/> class.
 /// </summary>
 public OrderCalculationController() : base(TaskType.OrderCalculation)
 {
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
 }
Exemple #5
0
        public ActionResult Index(
            long[] matterIds,
            short characteristicLinkId,
            short subsequencesCharacteristicLinkId,
            Feature[] features,
            string maxPercentageDifference,
            string[] filters)
        {
            return(CreateTask(() =>
            {
                double percentageDifference = double.Parse(maxPercentageDifference, CultureInfo.InvariantCulture) / 100;

                var attributeValuesCache = new AttributeValueCacheManager();
                var characteristics = new SubsequenceData[matterIds.Length][];

                long[] parentSequenceIds;
                var matterNames = new string[matterIds.Length];

                int mattersCount = matterIds.Length;
                Dictionary <string, object> characteristicsTypesData;

                using (var db = new LibiadaWebEntities())
                {
                    // Sequences characteristic
                    var geneticSequenceRepository = new GeneticSequenceRepository(db);
                    long[] chains = geneticSequenceRepository.GetNucleotideSequenceIds(matterIds);

                    // Sequences characteristic
                    matterIds = OrderMatterIds(matterIds, characteristicLinkId, chains);

                    // Subsequences characteristics
                    var parentSequences = db.DnaSequence.Include(s => s.Matter)
                                          .Where(s => s.Notation == Notation.Nucleotides && matterIds.Contains(s.MatterId))
                                          .Select(s => new { s.Id, s.MatterId, MatterName = s.Matter.Name })
                                          .ToDictionary(s => s.Id);

                    parentSequenceIds = parentSequences
                                        .OrderBy(ps => Array.IndexOf(matterIds, ps.Value.MatterId))
                                        .Select(ps => ps.Key)
                                        .ToArray();

                    for (int n = 0; n < parentSequenceIds.Length; n++)
                    {
                        matterNames[n] = parentSequences[parentSequenceIds[n]].MatterName;
                    }

                    var viewDataHelper = new ViewDataHelper(db);
                    characteristicsTypesData = viewDataHelper.GetCharacteristicsData(CharacteristicCategory.Full);
                }

                FullCharacteristicRepository fullCharacteristicRepository = FullCharacteristicRepository.Instance;
                string sequenceCharacteristicName = fullCharacteristicRepository.GetCharacteristicName(characteristicLinkId);
                string characteristicName = fullCharacteristicRepository.GetCharacteristicName(subsequencesCharacteristicLinkId);

                var characteristicValueSubsequences = new Dictionary <double, List <(int matterIndex, int subsequenceIndex)> >();

                // cycle through matters
                for (int i = 0; i < mattersCount; i++)
                {
                    SubsequenceData[] subsequencesData = CalculateSubsequencesCharacteristics(
                        new[] { subsequencesCharacteristicLinkId },
                        features,
                        parentSequenceIds[i],
                        filters);

                    characteristics[i] = subsequencesData;
                    attributeValuesCache.FillAttributeValues(subsequencesData);

                    for (int j = 0; j < subsequencesData.Length; j++)
                    {
                        double value = subsequencesData[j].CharacteristicsValues[0];
                        if (characteristicValueSubsequences.TryGetValue(value, out List <(int matterIndex, int subsequenceIndex)> matterAndSubsequenceIdsList))
                        {
                            matterAndSubsequenceIdsList.Add((i, j));
                        }
Exemple #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CustomSequenceCalculationController"/> class.
 /// </summary>
 public CustomSequenceCalculationController() : base(TaskType.CustomSequenceCalculation)
 {
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
 }
Exemple #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SequencesAlignmentController"/> class.
 /// </summary>
 public SequencesAlignmentController() : base(TaskType.SequencesAlignment)
 {
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="IntervalsCharacteristicsDistributionController"/> class.
 /// </summary>
 public IntervalsCharacteristicsDistributionController() : base(TaskType.IntervalsCharacteristicsDistribution)
 {
     characteristicTypeLinkRepository = FullCharacteristicRepository.Instance;
 }