我在生物信息学方面完成了一些研究工作,我使用了Matlab.Matlab有很多强大的工具,易于使用.我确实考虑过基因组测序和预测代谢途径.我想知道其他人认为最好的是什么?或者可能没有一种特定的语言,只有少数几种能够最好地利用生物信息学的工作,这种工作是数学上很重要并处理大量数据.
在阅读这个问题时,我认为以下问题很简单StringSplit
给定以下字符串,我想在每个"D"的左侧"剪切"它,以便:
我得到一个片段列表(序列不变)
StringJoin@fragments返回原始字符串(但如果我必须重新排序片段以获得此字符串,则无关紧要).也就是说,每个片段中的序列很重要,我不想丢失任何字符.
(我感兴趣的例子是蛋白质序列(字符串),其中每个字符代表一个字母代码中的氨基酸.我想获得通过用已知在"D"之前分裂的酶处理获得的所有片段的理论列表. )
str = "MTPDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN"
Run Code Online (Sandbox Code Playgroud)
我能想到的最好的是在每个"D"之前插入一个空格StringReplace然后使用StringSplit.至少可以说,这似乎很尴尬.
frags1 = StringSplit@StringReplace[str, "D" -> " D"]
Run Code Online (Sandbox Code Playgroud)
作为输出:
{"MTP", "DKPSQY", "DKIEAELQ", "DICN", "DVLELL", "DSKG", "DYFRYLSEVASG", "DN"}
Run Code Online (Sandbox Code Playgroud)
或者,使用StringReplacePart:
frags1alt =
StringSplit@StringReplacePart[str, " D", StringPosition[str, "D"]]
Run Code Online (Sandbox Code Playgroud)
最后(更现实地),如果我想在"D"之前分裂,前提是它前面的残留物不是"P"[即PD,(Pro-Asp)键未被切割],我这样做:
StringSplit@StringReplace[str, (x_ /; x != "P") ~~ "D" -> x ~~ " D"]
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?
速度不一定是个问题.我不太可能处理大于500个字符的字符串.我正在使用Mma 7.
更新
我添加了生物信息学标签,我认为从该领域添加一个例子可能会引起兴趣.
以下使用eutils从NCBI数据库中导入蛋白质序列(牛血清白蛋白,登录号3336842),然后产生(理论上的)胰蛋白酶消化物.假设A2不是"R","K"或"P",我认为当A1是"R"或"K"时,酶tripin在残基A1-A2之间切割.如果有人有任何改进建议,请随时提出修改建议.
使用sakra方法的修改('db ='之后的回车可能需要删除):
StringJoin /@
Split[Characters[#],
And @@ Function[x, …Run Code Online (Sandbox Code Playgroud) 我开始深入研究Perl,但是在编写"Perl-ly"代码时遇到了麻烦,而不是在Perl中编写C语言.如何更改以下代码以使用更多Perl习语,我应该如何学习习语?
只是解释它正在做什么:这个程序是一个模块的一部分,它对齐DNA或氨基酸序列(如果你关心这些事情,使用Needelman-Wunch).它创建了两个2d数组,一个用于存储两个序列中每个位置的分数,另一个用于跟踪路径,因此可以在以后重新创建得分最高的对齐.它工作正常,但我知道我并没有非常简洁明了地做事.
编辑:这是作业.我完成了它,但想要清理一下我的代码.如果您有兴趣,可以在课堂网站上找到有关实施算法的详细信息.
sub create_matrix {
my $self = shift;
#empty array reference
my $matrix = $self->{score_matrix};
#empty array ref
my $path_matrix = $self->{path_matrix};
#$seq1 and $seq2 are strings set previously
my $num_of_rows = length($self->{seq1}) + 1;
my $num_of_columns = length($self->{seq2}) + 1;
#create the 2d array of scores
for (my $i = 0; $i < $num_of_rows; $i++) {
push(@$matrix, []);
push(@$path_matrix, []);
$$matrix[$i][0] = $i * $self->{gap_cost};
$$path_matrix[$i][0] = 1;
}
#fill out the first row …Run Code Online (Sandbox Code Playgroud) (我试过在BioStars上问过这个问题,但是由于文本挖掘的某个人认为有更好的解决方案的可能性很小,我也在这里重新发布)
我想要实现的任务是对齐几个序列.
我没有匹配的基本模式.我所知道的只是"真实"模式的长度应该是"30",并且我在随机点引入了缺失值的序列.
这是一个这样的序列的例子,在左边我们看到了缺失值的真实位置,在右边我们看到了我们能够观察到的序列.
我的目标是仅使用我在右栏中获得的序列重建左列(基于每个位置中的许多字母相同的事实)
Real_sequence The_sequence_we_see
1 CGCAATACTAAC-AGCTGACTTACGCACCG CGCAATACTAACAGCTGACTTACGCACCG
2 CGCAATACTAGC-AGGTGACTTCC-CT-CG CGCAATACTAGCAGGTGACTTCCCTCG
3 CGCAATGATCAC--GGTGGCTCCCGGTGCG CGCAATGATCACGGTGGCTCCCGGTGCG
4 CGCAATACTAACCA-CTAACT--CGCTGCG CGCAATACTAACCACTAACTCGCTGCG
5 CGCACGGGTAAGAACGTGA-TTACGCTCAG CGCACGGGTAAGAACGTGATTACGCTCAG
6 CGCTATACTAACAA-GTG-CTTAGGC-CTG CGCTATACTAACAAGTGCTTAGGCCTG
7 CCCA-C-CTAA-ACGGTGACTTACGCTCCG CCCACCTAAACGGTGACTTACGCTCCG
Run Code Online (Sandbox Code Playgroud)
以下是重现上述示例的示例代码:
ATCG <- c("A","T","C","G")
set.seed(40)
original.seq <- sample(ATCG, 30, T)
seqS <- matrix(original.seq,200,30, T)
change.letters <- function(x, number.of.changes = 15, letters.to.change.with = ATCG)
{
number.of.changes <- sample(seq_len(number.of.changes), 1)
new.letters <- sample(letters.to.change.with , number.of.changes, T)
where.to.change.the.letters <- sample(seq_along(x) , number.of.changes, F)
x[where.to.change.the.letters] <- new.letters
return(x)
}
change.letters(original.seq)
insert.missing.values <- function(x) change.letters(x, …Run Code Online (Sandbox Code Playgroud) 我想下载源自微阵列实验产生的基因表达数据.我不太了解这个主题,但据我所知,行通常对应于基因,列对应于样本.理想情况下,我期待一个基因表达数据矩阵.
我一直在互联网上搜索,虽然看起来有很多地方可以下载这些数据,当我实际上下载数据时,我没有得到基因表达的矩阵.有人可以告诉我,如果有一个地方或如何以我期望的格式下载基因表达数据?
任何帮助表示赞赏.
我正在寻找Relevance Vector Machines的下降实现.
任何人都可以推荐我可以接口的python库或C++实现吗?
EL,提前谢谢你们
假设我有一个DNA序列.我想得到它的补充.我使用了以下代码,但我没有得到它.我究竟做错了什么 ?
s=readline()
ATCTCGGCGCGCATCGCGTACGCTACTAGC
p=unlist(strsplit(s,""))
h=rep("N",nchar(s))
unlist(lapply(p,function(d){
for b in (1:nchar(s)) {
if (p[b]=="A") h[b]="T"
if (p[b]=="T") h[b]="A"
if (p[b]=="G") h[b]="C"
if (p[b]=="C") h[b]="G"
}
Run Code Online (Sandbox Code Playgroud) 我有一个分类问题(预测一个序列是否属于一个类),我决定使用多种分类方法,以帮助过滤掉误报.
(问题在于生物信息学 - 将蛋白质序列分类为神经肽前体序列.如果有人感兴趣,这是原始文章,以及用于生成特征和训练单个预测变量的代码).
现在,分类器具有大致相似的性能指标(在10倍CV的训练集上具有83-94%的准确度/精度/等),因此我的"天真"方法是简单地使用多个分类器(随机森林,ExtraTrees,SVM) (线性内核),SVM(RBF内核)和GRB),并使用简单多数投票.
我的问题是:我如何获得不同分类器和/或投票预测的绩效指标?也就是说,我想看看使用多个分类器是否可以提高我的性能,或者它们的组合是什么.
我的直觉可能是使用ROC分数,但我不知道如何"结合"结果并从分类器的组合中获得结果.(也就是说,要查看单独的每个分类器的ROC曲线[已知],然后使用分类器组合查看ROC曲线或训练数据的AUC).
(我目前使用随机森林和ExtraTrees方法使用"预测概率"过滤预测,然后我任意过滤预测得分低于'0.85'的结果.另外一层过滤是"有多少分类器同意这种蛋白质的正分类").
非常感谢你!!
(网站实施,我们使用多个分类器 - http://neuropid.cs.huji.ac.il/)
整个shebang是使用SciKit learn和python实现的.引文和所有!)
python machine-learning bioinformatics random-forest scikit-learn
我有一个如下所示的出租车列表:
1204725
2162
1300163
420247
Run Code Online (Sandbox Code Playgroud)
我希望从上面的出租车中获取一个带有分类标准的文件:
kingdom_id phylum_id class_id order_id family_id genus_id species_id
Run Code Online (Sandbox Code Playgroud)
我正在使用" ete3 " 包.我使用工具ete-ncbiquery来告诉你上面的id的谱系.(我使用下面的命令从我的linux笔记本电脑上运行它)
ete3 ncbiquery --search 1204725 2162 13000163 420247 --info
Run Code Online (Sandbox Code Playgroud)
结果如下:
# Taxid Sci.Name Rank Named Lineage Taxid Lineage
2162 Methanobacterium formicicum species root,cellular organisms,Archaea,Euryarchaeota,Methanobacteria,Methanobacteriales,Methanobacteriaceae,Methanobacterium,Methanobacterium formicicum 1,131567,2157,28890,183925,2158,2159,2160,2162
1204725 Methanobacterium formicicum DSM 3637 no rank root,cellular organisms,Archaea,Euryarchaeota,Methanobacteria,Methanobacteriales,Methanobacteriaceae,Methanobacterium,Methanobacterium formicicum,Methanobacterium formicicum DSM 3637 1,131567,2157,28890,183925,2158,2159,2160,2162,1204725
420247 Methanobrevibacter smithii ATCC 35061 no rank root,cellular organisms,Archaea,Euryarchaeota,Methanobacteria,Methanobacteriales,Methanobacteriaceae,Methanobrevibacter,Methanobrevibacter smithii,Methanobrevibacter smithii ATCC 350611,131567,2157,28890,183925,2158,2159,2172,2173,420247
Run Code Online (Sandbox Code Playgroud)
我不知道哪些项目(IDS)对应于我要找的东西(如果有的话)
如果给出一个外群,我如何为一组物种生成所有可能的Newick树排列?
对于那些不知道Newick树格式的人,可以在以下网址找到一个很好的描述:https: //en.wikipedia.org/wiki/Newick_format
我想在给出一个外群的情况下为一组物种创建所有可能的Newick树排列.我期望处理的叶节点的数量很可能是4,5或6个叶节点.
允许"软"和"硬"多面体. https://en.wikipedia.org/wiki/Polytomy#Soft_polytomies_vs._hard_polytomies https://biology.stackexchange.com/questions/23667/evidence-discussions-of-hard-polytomy
下面显示的是理想输出,"E"设置为outgroup
理想输出:
((("A","B","C"),("D"),("E"));
((("A","B","D"),("C"),("E"));
((("A","C","D"),("B"),("E"));
((("B","C","D"),("A"),("E"));
((("A","B")("C","D"),("E"));
((("A","C")("B","D"),("E"));
((("B","C")("A","D"),("E"));
(("A","B","C","D"),("E"));
(((("A","B"),"C"),"D"),("E"));
Run Code Online (Sandbox Code Playgroud)
但是,我使用itertools带来的任何可能的解决方案,特别是itertools.permutations,都遇到了等效输出的问题.我想出的最后一个想法涉及下面显示的等效输出.
等效输出:
((("C","B","A"),("D"),("E"));
((("C","A","B"),("D"),("E"));
((("A","C","B"),("D"),("E"));
Run Code Online (Sandbox Code Playgroud)
这是我的解决方案的开始.但是,除了itertools之外,我现在还不确定该怎么回事.
import itertools
def Newick_Permutation_Generator(list_of_species, name_of_outgroup)
permutations_list =(list(itertools.permutations(["A","B","C","D","E"])))
for given_permutation in permutations_list:
process(given_permutation)
Newick_Permutation_Generator(["A","B","C","D","E"], "E")
Run Code Online (Sandbox Code Playgroud) bioinformatics ×10
python ×3
r ×2
alignment ×1
complement ×1
download ×1
etetoolkit ×1
genetics ×1
genome ×1
iterator ×1
loops ×1
matlab ×1
ncbi ×1
perl ×1
permutation ×1
phylogeny ×1
replace ×1
scikit-learn ×1
sequence ×1
string ×1
taxonomy ×1