/// <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); }
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; }
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)); }
/// <summary> /// Initializes a new instance of the <see cref="CustomSequenceCalculationController"/> class. /// </summary> public CustomSequenceCalculationController() : base(TaskType.CustomSequenceCalculation) { characteristicTypeLinkRepository = FullCharacteristicRepository.Instance; }
/// <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; }