/// <summary> /// Extracts joined subsequence without complement flag. /// </summary> /// <param name="sourceSequence"> /// The complete sequence. /// </param> /// <param name="subsequence"> /// The subsequence. /// </param> /// <returns> /// The <see cref="Chain"/>. /// </returns> private Chain ExtractJoinedSubsequenceWithoutComplement(Sequence sourceSequence, Subsequence subsequence) { var joinedSequence = sourceSequence.GetSubSequence(subsequence.Start, subsequence.Length).ConvertToString(); var position = subsequence.Position.ToArray(); for (int j = 0; j < position.Length; j++) { joinedSequence += sourceSequence.GetSubSequence(position[j].Start, position[j].Length).ConvertToString(); } return new Chain(joinedSequence); }
/// <summary> /// Extracts subsequence without joins (additional positions). /// </summary> /// <param name="sourceSequence"> /// The complete sequence. /// </param> /// <param name="subsequence"> /// The subsequence. /// </param> /// <returns> /// The <see cref="Chain"/>. /// </returns> private Chain ExtractSimpleSubsequence(Sequence sourceSequence, Subsequence subsequence) { ISequence bioSequence = sourceSequence.GetSubSequence(subsequence.Start, subsequence.Length); if (subsequence.SequenceAttribute.Any(sa => sa.Attribute == LibiadaWeb.Attribute.Complement)) { bioSequence = bioSequence.GetReverseComplementedSequence(); } return new Chain(bioSequence.ConvertToString()); }
/// <summary> /// Extracts joined subsequence with complement flag. /// </summary> /// <param name="sourceSequence"> /// The complete sequence. /// </param> /// <param name="subsequence"> /// The subsequence. /// </param> /// <returns> /// The <see cref="Chain"/>. /// </returns> private Chain ExtractJoinedSubsequenceWithComplement(Sequence sourceSequence, Subsequence subsequence) { var bioSequence = sourceSequence.GetSubSequence(subsequence.Start, subsequence.Length); var position = subsequence.Position.ToArray(); string resultSequence; if (subsequence.SequenceAttribute.Any(sa => sa.Attribute == Attribute.ComplementJoin)) { var joinedSequence = bioSequence.ConvertToString(); for (int j = 0; j < position.Length; j++) { joinedSequence += sourceSequence.GetSubSequence(position[j].Start, position[j].Length).ConvertToString(); } resultSequence = new Sequence(Alphabets.DNA, joinedSequence).GetReverseComplementedSequence().ConvertToString(); } else { resultSequence = bioSequence.GetReverseComplementedSequence().ConvertToString(); for (int j = 0; j < position.Length; j++) { resultSequence += sourceSequence.GetSubSequence(position[j].Start, position[j].Length).GetReverseComplementedSequence().ConvertToString(); } } return new Chain(resultSequence); }