如何以特定的方式切断一根绳子,保留有用的东西?

2024-10-02 00:20:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的生物学研究做一个计划。你知道吗

我需要按照这个顺序:

NNNNNNNNNNCCNNAGTGNGNACAGACGACGGGCCCTGGCCCCTCGCACACCCTGGACCA
AGTCAATCGCACCCACTTCCCTTTCTTCTCGGATGTCAAGGGCGACCACCGGTTGGTGTT
GAGCGTCGTGGAGACCACCGTTCTGGGGCTCATCTTTGTCGTCTCACTGCTGGGCAACGT
GTGTGCTCTAGTGCTGGTGGCGCGCCGTCGGCGCCGTGGGGCGACAGCCAGCCTGGTGCT
CAACCTCTTCTGCGCGGATTTGCTCTTCACCAGCGCCATCCCTCTAGTGCTCGTCGTGCG
CTGGACTGAGGCCTGGCTGTTGGGGCCCGTCGTCTGCCACCTGCTCTTCTACGTGATGAC
AATGAGCGGCAGCGTCACGATCCTCACACTGGCCGCGGTCAGCCTGGAGCGCATGGTGTG
CATCGTGCGCCTCCGGCGCGGCTTGAGCGGCCCGGGGCGGCGGACTCAGGCGGCACTGCT
GGCTTTCATATGGGGTTACTCGGCGCTCGCCGCGCTGCCCCTCTGCATCTTGTTCCGCGT
GGTCCCGCAGCGCCTTCCCGGCGGGGACCAGGAAATTCCGATTTGCACATTGGATTGGCC
CAACCGCATAGGAGAAATCTCATGGGATGTGTTTTTTGTGACTTTGAACTTCCTGGTGCC
GGGACTGGTCATTGTGATCAGTTACTCCAAAATTTTACAGATCACGAAAGCATCGCGGAA
GAGGCTTACGCTGAGCTTGGCATACTCTGAGAGCCACCAGATCCGAGTGTCCCAACAAGA
CTACCGACTCTTCCGCACGCTCTTCCTGCTCATGGTTTCCTTCTTCATCATGTGGAGTCC
CATCATCATCACCATCCTCNCATCTTGATCCAAAACTTCCGGCAGGACCTGGNCATCTGG
NCATCCCTTTTCTTCTGGGNNGTNNNNNCACGTTGCNACTCTNCCTAAANCCCATACTGT
ANNANATGNCGCTNNNAGGAANGAATGGAGGAANANTTTTTGNNNNNNNNN

…去掉开头最后一个N和结尾第一个N之后的所有内容。换句话说,让它看起来像这样:

ACAGACGACGGGCCCTGGCCCCTCGCACACCCTGGACCA
AGTCAATCGCACCCACTTCCCTTTCTTCTCGGATGTCAAGGGCGACCACCGGTTGGTGTT
GAGCGTCGTGGAGACCACCGTTCTGGGGCTCATCTTTGTCGTCTCACTGCTGGGCAACGT
GTGTGCTCTAGTGCTGGTGGCGCGCCGTCGGCGCCGTGGGGCGACAGCCAGCCTGGTGCT
CAACCTCTTCTGCGCGGATTTGCTCTTCACCAGCGCCATCCCTCTAGTGCTCGTCGTGCG
CTGGACTGAGGCCTGGCTGTTGGGGCCCGTCGTCTGCCACCTGCTCTTCTACGTGATGAC
AATGAGCGGCAGCGTCACGATCCTCACACTGGCCGCGGTCAGCCTGGAGCGCATGGTGTG
CATCGTGCGCCTCCGGCGCGGCTTGAGCGGCCCGGGGCGGCGGACTCAGGCGGCACTGCT
GGCTTTCATATGGGGTTACTCGGCGCTCGCCGCGCTGCCCCTCTGCATCTTGTTCCGCGT
GGTCCCGCAGCGCCTTCCCGGCGGGGACCAGGAAATTCCGATTTGCACATTGGATTGGCC
CAACCGCATAGGAGAAATCTCATGGGATGTGTTTTTTGTGACTTTGAACTTCCTGGTGCC
GGGACTGGTCATTGTGATCAGTTACTCCAAAATTTTACAGATCACGAAAGCATCGCGGAA
GAGGCTTACGCTGAGCTTGGCATACTCTGAGAGCCACCAGATCCGAGTGTCCCAACAAGA
CTACCGACTCTTCCGCACGCTCTTCCTGCTCATGGTTTCCTTCTTCATCATGTGGAGTCC
CATCATCATCACCATCCTC

我该怎么做?你知道吗


Tags: 计划生物学gggactggtcattgtgatcagttactccaaaattttacagatcacgaaagcatcgcggaactggactgaggcctggctgttggggcccgtcgtctgccacctgctcttctacgtgatgacgagcgtcgtggagaccaccgttctggggctcatctttgtcgtctcactgctgggcaacgtgaggcttacgctgagcttggcatactctgagagccaccagatccgagtgtcccaacaagaggctttcatatggggttactcggcgctcgccgcgctgcccctctgcatcttgttccgcgtgtgtgctctagtgctggtggcgcgccgtcggcgccgtggggcgacagccagcctggtgct
2条回答

我想您可能在输入中寻找最长的非N字符序列。你知道吗

否则,就没有规则来区分前缀中的最后一个N和后缀中的第一个N。你想在N之后(在ACAGAC…之前)和下一个N(在CATCCC之前)开始的N没有什么不同,或者,就这一点而言,上一个(在GN之前)除了它挑选出最长的序列之外。事实上,除了开头的10个N和结尾的9个N以外,N的任何一个都没有什么特别之处

最简单的方法就是抓取所有序列并保持最长时间:

max(s.split('N'), key=len)

如果你有一些额外的规则在上面-例如,长度可以被3整除的最长序列(在本例中是相同的东西)-你可以做同样的基本事情:

max((seq for seq in s.split('N') if len(seq) % 3 == 0), key=len)

@abarnert的答案是正确的,但是str.split()返回a list子字符串。意思是内存使用量是O(N)(例如,使用大量内存)。这不是一个问题,当你的输入是短的,但当处理DNA序列,你的输入通常是很长的。为了避免内存开销,您需要使用迭代器。我推荐refinditer。你知道吗

import re

_find_n_free_substrings = re.compile(r'[^N]+', re.MULTILINE).finditer

def longest_n_free_substring(string):
    substrings = (match.group(0) for match in _find_n_free_substrings(string))
    return max(substrings, key=len)

相关问题 更多 >

    热门问题