我正试图从由基准帧中的坐标指定的基因组中获得序列。
我需要获取开始坐标和停止坐标,使用坐标来获取字符串中的序列,并将该序列附加到列表中。
这是我的df和字符串看起来像
# Import pandas library
import pandas as pd
# initialize list of lists
data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]
# Create the pandas DataFrame
df = pd.DataFrame(data, columns = ['Name', 'Start', 'Stop'])
# print dataframe.
df
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"
我想遍历数据帧中的开始和停止坐标,并使用这些坐标来分隔序列的部分,并将该部分附加到新的列表中
我已经做到了:
subseq = []
a = sequence[df.iloc[1,1]:df.iloc[1,2]]
subseq.append(a)
我该如何做到这一点以自动循环通过数据帧(idealsl然而,我会逐个列名(
我正在使用python
我认为您不需要数据帧。
我会循环浏览你的原始数据:
data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"
output = []
for d in data:
output.append(sequence[d[1]:d[2]])
更简洁地说:
data = [['x', 3, 13], ['y', 5, 15], ['z', 7, 17]]
sequence = "ATGTCGCCGCTGCTGCTGTGTCGTAGTCAGC"
output = [sequence[d[1]:d[2]] for d in data]
这两种输出:
['TCGCCGCTGC', 'GCCGCTGCTG', 'CGCTGCTGCT']
您可以使用列表理解:
[sequence[a:b] for a,b in zip(df['Start'], df['Stop'])]
输出:
['TCGCCGCTGC', 'GCCGCTGCTG', 'CGCTGCTGCT']
您也可以将其添加到您的数据帧中:
df['sub'] = [sequence[a:b] for a,b in zip(df['Start'], df['Stop'])]
输出:
Name Start Stop sub
0 x 3 13 TCGCCGCTGC
1 y 5 15 GCCGCTGCTG
2 z 7 17 CGCTGCTGCT