标签: bioinformatics

酶促切割是否存在正则表达式?

(理论上)蛋白质序列的胰蛋白酶切割是否存在正则表达式?胰蛋白酶的切割规则是:在R或K之后,但在P之前不是.

例:

切割序列VGTKCCTKPESERMPCTEDYLSLILNR应该导致这3个序列( s):

 VGTK
 CCTKPESER
 MPCTEDYLSLILNR
Run Code Online (Sandbox Code Playgroud)

注意,在第二肽中K后没有切割(因为P在K之后).

在Perl中(它也可以在C#,Python或Ruby中):

  my $seq = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  my @peptides = split /someRegularExpression/, $seq;
Run Code Online (Sandbox Code Playgroud)

我已经使用过这种解决方法(切割标记= =首先插入序列中,如果P紧接在切割制造者之后再次移除):

  my $seq      = 'VGTRCCTKPESERMPCTEDYLSLILNR';
  $seq         =~ s/([RK])/$1=/g; #Main cut rule.
  $seq         =~ s/=P/P/g;       #The exception.
  my @peptides = split( /=/, $seq);
Run Code Online (Sandbox Code Playgroud)

但这需要修改一个可能很长的字符串,并且可能有数百万个序列.有没有一种方法可以将正则表达式与split一起使用?如果是,那么正则表达式是什么?


测试平台:Windows XP 64位.ActivePerl 64位.从perl -v:v5.10.0为MSWin32-x64-multi-thread构建.

regex perl bioinformatics

8
推荐指数
2
解决办法
1371
查看次数

C++ - 输出给定长度的所有可能的DNA kmers

"kmer"是长度为K的DNA序列.有效的DNA序列(为了我的目的)只能含有以下4个碱基:A,C,T,G.我正在寻找一种C++算法,它只是按字母顺序将这些碱基的所有可能组合输出到字符串数组中.例如,如果K = 2,程序应该生成以下数组:

kmers[0]  = AA
kmers[1]  = AC
kmers[2]  = AG
kmers[3]  = AT
kmers[4]  = CA
kmers[5]  = CC
kmers[6]  = CG
kmers[7]  = CT
kmers[8]  = GA
kmers[9]  = GC
kmers[10] = GG
kmers[11] = GT
kmers[12] = TA
kmers[13] = TC
kmers[14] = TG
kmers[15] = TT
Run Code Online (Sandbox Code Playgroud)

如果我正确地考虑这个问题,那么问题实际上就会分解为将十进制整数转换为基数4然后替换相应的基数.我以为我可以使用itoa,但itoa不是C标准,我的编译器不支持它.我欢迎任何聪明的想法.这是我的示例代码:

#include <iostream>
#include <string>
#include <math.h>

#define K 3

using namespace std;

int main() {

  int num_kmers = pow(4,K);
  string* kmers = NULL;

  /* Allocate memory …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm bioinformatics

8
推荐指数
1
解决办法
4210
查看次数

正则表达式蛋白质消化

所以,我正在用酶(为了你的好奇心,Asp-N)消化蛋白质序列,它在单字母编码序列中由B或D编码的蛋白质之前切割.我的实际分析String#scan用于捕获.我想弄清楚为什么以下正则表达式不能正确消化它...

(\w*?)(?=[BD])|(.*\b)
Run Code Online (Sandbox Code Playgroud)

(.*\b)存在先行词以捕获序列的结尾.对于:

MTMDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN
Run Code Online (Sandbox Code Playgroud)

这应该给出类似的东西:[MTM, DKPSQY, DKIEAELQ, DICN, DVLELL, DSKG, ... ]但是错过序列中的每个D.

我一直在使用http://www.rubular.com进行故障排除,运行在1.8.7上虽然我也在1.9.2上测试了这个REGEX但无济于事.据我所知,在两个版本的ruby中都支持零宽度前瞻断言.我的正则表达式做错了什么?

ruby regex bioinformatics

8
推荐指数
2
解决办法
283
查看次数

补充DNA序列

假设我有一个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)

replace r bioinformatics complement genetics

8
推荐指数
5
解决办法
7028
查看次数

如何优化运行4**k次的python脚本?

编程语言:Python 3.4

我已经为Coursera的生物信息学1课程编写了一个程序.该程序工作正常,但对于大型数据集来说速度非常慢.我想,这是因为循环运行了4**k次,其中k是传递给函数的子字符串的长度.输入:字符串文本模式以及整数d.输出:所有起始位置,其中Pattern显示为Text的子字符串,最多d个不匹配.

这是我的代码:

def MotifCount(string1, substring, d):
    k = 4 ** (len(substring))
    codeArray = list(itertools.product(['A', 'C', 'G', 'T'], repeat=len(substring)))
    for i in range(k):
        codeArray2 = ''.join(list(codeArray[i]))
        HammingValue = HammingDistance(codeArray2, substring)
        if HammingValue <= d:
            for j in range(len(string1)):
                if(string1.find(codeArray2, j) == j):
                    print(j)



def HammingDistance(string_1, string_2):
    length_1 = len(string_1)
    length_2 = len(string_2)
    count = 0
    for i in range(length_1):
        if string_1[i] != string_2[i]:
            count += 1
    return …
Run Code Online (Sandbox Code Playgroud)

python bioinformatics python-3.x

8
推荐指数
1
解决办法
162
查看次数

如何在python中减去字符串

基本上,如果我有一个字符串'AJ'和另一个字符串'AJYF',我希望能够写'AJYF'-'AJ'和得到'YF'.

我试过这个但是语法错误了.

只是在旁注中,减法器总是比从中减去的字符串短.此外,减法器将始终类似于从中减去的字符串.例如,如果我有'GTYF'并且我想从中减去一个长度为3的字符串,那么该字符串必须是'GTY'.

如果可能的话,我想要做的全部功能是根据列表中每个项目的长度将字符串转换为列表.有没有办法做到这一点?

python string bioinformatics python-3.x

8
推荐指数
3
解决办法
2万
查看次数

如果给出一个外群,我如何为一组物种生成所有可能的Newick树排列?

如果给出一个外群,我如何为一组物种生成所有可能的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)

python iterator loops permutation bioinformatics

8
推荐指数
1
解决办法
799
查看次数

FASTA算法解释

我试图理解FASTA算法在数据库中搜索查询序列的类似序列的基本步骤.这些是算法的步骤:

  1. 识别I和J之间的常见k字
  2. 使用k字匹配对角线进行评分,确定10个最佳对角线
  3. 使用替换分数矩阵重新构造初始区域
  4. 使用间隙加入初始区域,惩罚差距
  5. 执行动态编程以查找最终对齐

我对使用PAM250评分矩阵的第3步和第4步以及如何"加入使用差距"感到困惑.

有人可以"尽可能具体地"为我解释这两个步骤.谢谢

bioinformatics fasta

7
推荐指数
1
解决办法
2794
查看次数

从仅包含0或仅包含0的数据框中删除行

我正在尝试在R中创建一个函数,它允许我根据行是否包含一个零的单个列来过滤我的数据集.此外,有时我只想删除所有列中为零的行.

而且,这是它变得有趣的地方; 并非所有列都包含数字,列数可能会有所不同.

我试图将我的一些数据粘贴到我想要获得的结果中.

unfiltered:
    ID  GeneName    DU145small  DU145total  PC3small    PC3total
    1   MIR22HG     33221.5     1224.55     2156.43     573.315
    2   MIRLET7E    87566.1     7737.99     25039.3     16415.6
    3   MIR612      0           0           530.068     0
    4   MIR218-1    0           0           1166.88     701.253
    5   MIR181B2    70723.2     3958.01     6209.85     1399.34
    6   MIR218-2    0           0           0           0
    7   MIR10B      787.516     330.556     0           20336.4
    8   MIR3176     0           0           0           0

any rows with containing a zero removed:
    ID  GeneName    DU145small  DU145total  PC3small    PC3total
    1   MIR22HG     33221.5     1224.55     2156.43     573.315
    2   MIRLET7E …
Run Code Online (Sandbox Code Playgroud)

filtering r bioinformatics data-processing

7
推荐指数
2
解决办法
2万
查看次数

如何着色绘图子区域并使用ggrepel标记数据点的子集?

我制作了这个火山阴谋,并希望改进它如下:

制作了这个火山的情节

  1. 用蓝色数据点完全遮蔽该区域:使用我当前的代码,我无法将阴影扩展到您所看到的范围之外.我希望它一直到剧情区域限制.

  2. geom_text让我来标记数据点的子集,但做起来ggrepel应该添加有标签从而提高标签的清晰度连接数据点的线.如何重用现有geom_text代码ggrepel来实现这一目标?

这是我的代码:

ggplot(vol.new, aes(x = log2.fold.change, y = X.NAME., fill = Color)) + # Define data frame to be used for plotting; define data for x and y axes; crate a scatterplot object.

  geom_point(size = 2, shape = 21, colour = "black") + # Define data point style.

  ggtitle(main.title, subtitle = "Just a little subtitle") + # Define title and subtitle.

  labs(x = x.lab, y = y.lab) + # Define labels …
Run Code Online (Sandbox Code Playgroud)

r bioinformatics ggplot2 ggrepel

7
推荐指数
1
解决办法
450
查看次数