gpt4 book ai didi

c# - Kmers - 如何连接序列并将子字符串放入数组

转载 作者:太空狗 更新时间:2023-10-30 01:12:45 26 4
gpt4 key购买 nike

我目前正在尝试寻找一种方法来实现一个小型生物信息学库,用于对 DNA 序列进行操作。这些表示为仅包含字符 A、C、G 和 T 的字符串。如何让此方法采用以下参数?

  1. 一个指定 K 的整数
  2. 任意数量的 DNA 序列,每个序列作为单独的参数提供

我需要让它连接这些序列并将每个序列放入自己的数组中。

到目前为止,我已经创建了两个方法:Main() 和 Kmers()。我已经做到了,因此 Kmer 方法会将诸如“AGATCGAGTG”之类的字符串分解为 3-mers,例如:

AGAGATATCTCGCGAGAGAGTGTG

然后我的 Main() 方法打印这些值:

using System;

class Sequence
{

public static void Main(string[] args)
{
foreach (string kmerArray in Kmers(3, "GCATACGAT"))
{
Console.Write(kmerArray);
}
Console.ReadLine();
}

public static Array Kmers(int k, params string[] x)
{
int ArraySize = x.Length;
string[] kmer = new string[ArraySize];

for (int i = 0; i < ArraySize - k + 1; i++)
{
if (i <= ArraySize)
{
kmer[i] = x.Substring(i, k);
}
}

return kmer;
}
}

我的输出应该是这样的:

AGA,GAT,ATC,TCG,CGA,GAG,AGT,GTG

最佳答案

x 必须是 string 而不是 string[]

public static IEnumerable<string> Kmers(int k, string x)
{
for (int i = 0; i < x.Length - k + 1; i++)
yield return x.Substring(i, k);
}

string[] result = Kmers(3, "GCATACGAT").ToArray();

如果你需要一个逗号分隔的字符串:

 string result = string.Join(",", Kmers(3, "GCATACGAT"));

只使用 System 命名空间:

public static string[] Kmers(int k, string x)
{
string[] result = new string[x.Length - k + 1];
for (int i = 0; i < x.Length - k + 1; i++)
result[i] = x.Substring(i, k);
return result;
}

Live Demo

"编辑(考虑评论):

如果您需要一个字符串数组作为参数并且应该返回一个逗号分隔的字符串数组,则 Kmers 函数应该是这样的:

public static string[] Kmers(int k, string[] x)
{
string[] result = new string[x.Length];
for (int j = 0; j < x.Length; j++)
{
string[] itemresult = new string[x[j].Length - k + 1];
for (int i = 0; i < x[j].Length - k + 1; i++)
itemresult[i] = x[j].Substring(i, k);
result[j] = string.Join(",", itemresult);
}
return result;
}

你还应该将 string[] 传递给它:

string[] input = {"GCATACGAT", "GACGAT", "ACGATCATA"};
string[] result = Kmers(3, input);

foreach (string x in result)
Console.WriteLine(x);

结果:

GCA,CAT,ATA,TAC,ACG,CGA,GAT

GAC,ACG,CGA,GAT

ACG,CGA,GAT,ATC,TCA,CAT,ATA

关于c# - Kmers - 如何连接序列并将子字符串放入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com