Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使两个或两个以上的特定字母组合?_Python_List_Iterator_Combinations_Itertools - Fatal编程技术网

Python 如何使两个或两个以上的特定字母组合?

Python 如何使两个或两个以上的特定字母组合?,python,list,iterator,combinations,itertools,Python,List,Iterator,Combinations,Itertools,我是python的新手,上个星期我一直在努力解决这个问题,有人能帮我解决这个问题吗?这对完成我的项目非常有帮助 我尝试根据给定序列的用户输入进行单突变及其2,3组合: 2C PrAwCEL PrACCgL PEAwCgL 3C PrAwCgL 输入顺序:>PEACCEL 用户输入文件: E2R C4W E6G 这是我程序的一部分,我将2,4,6中的R,W,G替换为E,C,E,然后将替换的字母存储到变量R中,该变量包含如下三行:- PrACCEL PEAwCEL

我是python的新手,上个星期我一直在努力解决这个问题,有人能帮我解决这个问题吗?这对完成我的项目非常有帮助

我尝试根据给定序列的用户输入进行单突变及其2,3组合:

2C
   PrAwCEL 
   PrACCgL 
   PEAwCgL 
3C
   PrAwCgL 
输入顺序:>PEACCEL

用户输入文件: E2R C4W E6G

这是我程序的一部分,我将2,4,6中的R,W,G替换为E,C,E,然后将替换的字母存储到变量R中,该变量包含如下三行:-

PrACCEL
PEAwCEL
PEACCgL
现在,我想把这三个单突变组合成2和3。 这就像一行中两个突变和一行中三个突变的组合

样本和预期输出如下所示:

2C
   PrAwCEL 
   PrACCgL 
   PEAwCgL 
3C
   PrAwCgL 
算法

他的是我代码的一部分,所以我将解释我的算法

1.我读了突变文件,其中有三个字符是eg E2R,其中Eis氨基酸字母是输入序列PEACCEL的2个位置,第三个字母R是E2将是R

2.所以首先我从用户突变文件中提取位置和第三个变量,并将它们存储到变量SecNum和mutateSidueThirdChar中

3.然后,我使用循环按索引读取sequencePEACCEL,然后选择与SecNUmE2,4,6匹配的索引,我将这些序列替换为带有突变残基的序列,突变残基是突变文件2R,4W,6G中的第三个字符


4.最后,我通过这行代码将突变的残基索引和其他残基连接起来:new=序列[:index]+AfterMutate+序列[index+1:]

提前谢谢

from itertools import combinations,chain
from collections import Counter


def Mutation(SEQUENCES,conA):
    
    #mutations=map(lambda x:x.strip(),open('a.txt','r').readlines())
    
    mutation_combinations= chain.from_iterable([list(combinations(conA,i))for i in range(1,4)])
    #[('E2R',), ('C4W',), ('E6G',), ('E2R', 'C4W'), ('E2R', 'E6G'), ('C4W', 'E6G'), ('E2R', 'C4W', 'E6G')]
    
    for i in mutation_combinations:
        print "combination :"+'_'.join(i)
        c=Counter({})
        temp_string=SEQUENCES
        for j in i:
            c[j[1]]=j[2].lower()
        for index,letter in c.items():
            temp_string=temp_string[:int(index)-1]+letter+temp_string[int(index):]
        print temp_string
输出 我遵循的算法是:

阅读突变序列,如E2R。。。。从使用mutations=maplambda x:x.strip的文件中,打开'a.txt','r'

使突变的组合变为突变组合=链。从_iterable[ListCombinationsStations,ifor i in range 1,4]如果有4个突变,则希望所有4个突变都将范围值更改为5

所以对于每个组合,我都用指定的字符替换它们

for j in i:
    c[j[1]]=j[2].lower()

我使用上面的计数器跟踪在变异组合过程中要替换的字符

感谢您的快速回复:这是我代码的一部分,因此我将解释我的算法1。我读取了突变文件,其中有三个字符用于eg E2R,其中Eis氨基酸字母是输入序列PEACCEL的2个位置,第三个字母R是E2将是R。因此,首先我从用户突变文件中提取位置和第三个变量,并将其存储到变量SecNum和mutateSiduethirdchar中。然后,我使用循环按索引读取序列PEACCEL,然后选择与SecNUmE2,4,6匹配的索引,我将这些序列替换为带有突变残基的序列,突变残基是突变文件2R,4W,6G中的第三个字符。最后,我通过这行将突变残基索引与其他残基连接起来:new=序列[:索引]+AfterMutate+序列[index+1:]对不起,亲爱的朋友sundar natarajСааааа,因为我正在编辑,所以上次看不到您的回复。这是通知你们,我的主要目标是从一个突变文件中做出2,3个组合,它有三行请接受问题,我的联系人是iamsundar04@gmail.comI我得到的组合是这样的:组合:E组合:2组合:R组合:组合:C组合:4组合:W组合:组合:E组合组合:6我想这是因为我们需要将这个conA列表更改为字符串对吗?@user3805057是的conA应该像['E2R','C4W','E6G']我更改了一些修改str=.joinconA-->mut=str.split\n-->mutation\u compositions=chain.from_iterable[listcombinationsmut,I->for I in range 1,4]->对于突变组合中的i:->print>+'''''''''''''''''''''''.joini,我得到的结果如下>E2R>C4W>E6G>E2R\U C4W>E2R\U E6G>C4W_E6G@user3805057您能否只打印conA值,您的方法最终输出中的获取值和序列值如下:>E2R PrACCEL>C4W PEAwCEL>E6G PEACCgL>E2R_C4W PrACCELPrACCEL PrACCEL>E2R_E6G PrACCEL PrACCEL PrACCEL>C4W_E6G Peaccel Peaccel Peaccel>E2R_C4W_E6G PrACCEL PrACCEL PrACCEL PrACCEL PrACCEL PrACCEL PrACCEL>E2R_C4W_E6; PrACCEL PrACCEL PrACCEL PrACCEL PrACCEL>E2R_E6G PrACCEL PrACCEL>C4W_E6G峰值>E2R_C4W_E6G峰值
for j in i:
    c[j[1]]=j[2].lower()