本文整理汇总了C#中ISequence.IndexOfNonGap方法的典型用法代码示例。如果您正苦于以下问题:C# ISequence.IndexOfNonGap方法的具体用法?C# ISequence.IndexOfNonGap怎么用?C# ISequence.IndexOfNonGap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ISequence
的用法示例。
在下文中一共展示了ISequence.IndexOfNonGap方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessGaps
//.........这里部分代码省略.........
sequence,
sequenceResult1,
sequenceResult2,
consensusResult,
new Match() { Length = 0 }, // Here the first MUM does not exist
mum1,
out gapInsertions);
insertions[0] += gapInsertions[0];
insertions[1] += gapInsertions[1];
// Run the alignment for all the gaps between MUM
for (int index = 1; index < mums.Count; index++)
{
mum2 = mums[index];
alignedSequence.Score += this.AlignGap(
referenceSequence,
sequence,
sequenceResult1,
sequenceResult2,
consensusResult,
mum1,
mum2,
out gapInsertions);
insertions[0] += gapInsertions[0];
insertions[1] += gapInsertions[1];
mum1 = mum2;
}
// Run the alignment for gap after last MUM
alignedSequence.Score += this.AlignGap(
referenceSequence,
sequence,
sequenceResult1,
sequenceResult2,
consensusResult,
mum1,
new Match() { Length = 0 },
out gapInsertions);
insertions[0] += gapInsertions[0];
insertions[1] += gapInsertions[1];
byte[] result1 = sequenceResult1.ToArray();
IAlphabet alphabet = Alphabets.AutoDetectAlphabet(result1, 0, result1.GetLongLength(), referenceSequence.Alphabet);
alignedSequence.FirstSequence = new Sequence(
alphabet,
result1)
{
ID = referenceSequence.ID,
// Do not shallow copy dictionary
//Metadata = referenceSequence.Metadata
};
byte[] result2 = sequenceResult2.ToArray();
alphabet = Alphabets.AutoDetectAlphabet(result2, 0, result2.GetLongLength(), sequence.Alphabet);
alignedSequence.SecondSequence = new Sequence(
alphabet,
result2)
{
ID = sequence.ID,
// Do not shallow copy dictionary
//Metadata = sequence.Metadata
};
byte[] consensus = consensusResult.ToArray();
alphabet = Alphabets.AutoDetectAlphabet(consensus, 0, consensus.GetLongLength(), referenceSequence.Alphabet);
alignedSequence.Consensus = new Sequence(
alphabet,
consensus);
// Offset is not required as Smith Waterman will fragmented alignment.
// Offset is the starting position of alignment of sequence1 with respect to sequence2.
if (this.PairWiseAlgorithm is NeedlemanWunschAligner)
{
alignedSequence.FirstOffset = alignedSequence.FirstSequence.IndexOfNonGap() -
referenceSequence.IndexOfNonGap();
alignedSequence.SecondOffset = alignedSequence.SecondSequence.IndexOfNonGap() -
sequence.IndexOfNonGap();
}
List<long> startOffsets = new List<long>(2);
List<long> endOffsets = new List<long>(2);
startOffsets.Add(0);
startOffsets.Add(0);
endOffsets.Add(referenceSequence.Count - 1);
endOffsets.Add(sequence.Count - 1);
alignedSequence.Metadata["StartOffsets"] = startOffsets;
alignedSequence.Metadata["EndOffsets"] = endOffsets;
alignedSequence.Metadata["Insertions"] = insertions;
// return the aligned sequence
return alignedSequence;
}