xskdjsaf 2022-09-03 21:10 采纳率: 0%
浏览 780
已结题

程序代码处理文本文件 最好是perl程序 其次Python

代码程序处理,第一列连续 1-6个位点数值在30以上,其他位点小于30,认为该位点是候选位点;而且两个候选位点的距离是在400bp以上;输入文件就两列,第一列是位点位置,第二列是具体数值。
输入文件格式:
4560233 6
4560234 9
4560235 23
4560236 45
4560237 25
4560238 18
4560239 12
4560240 23
4560241 5
是这样两列,上述4560236位点符合要求。前后位点都小于30

再比如:如下4560224和4560225 两个位点符合要求,需要输出。
4560223 1
4560224 39
4560225 50
4560226 1
4560227 1
4560228 1
4560229 1

再比如,如下 4560218,4560219,4560220,4560221四个位点符合要求,需要输出
4560215 4
4560216 4
4560217 8
4560218 60
4560219 70
4560220 30
4560221 40
4560222 23
4560223 1
4560224 1
4560225 1
4560226 1

总之连续 1-6个位点数值在30以上,其他位点小于30的位点要输出,且输出的位点还要满足他们直接的距离在400bp以上。
补充:注意,第一列位点数字未必是完全+1递增的,会有某些位点缺失。但是从小到大排序是确定的。两列数据之间是制表符,不是空格。这个其实是一个滑窗分析问题,1-6个连续位点的窗口滑动检测。

  • 写回答

4条回答 默认 最新

  • starlight_2007 2022-09-03 22:03
    关注

    希望对您有帮助。
    Python:

    src_file = input('请输入文件名:')
    pop = []
    val = []
    with open(src_file,'r') as f:
        txt = f.readlines()
    for i in txt:
        if i == '\n':
            txt.remove(i)
    for i in range(len(txt)):
        txt[i] = txt[i].replace('\n','')
        if int(txt[i].split('\t')[1]) >= 30:
            pop.append(txt[i].split('\t')[0])
            val.append(txt[i].split('\t')[1])
    print('所需位点为:')
    for i in pop:
        print(i)
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月10日
  • 修改了问题 9月4日
  • 赞助了问题酬金100元 9月3日
  • 修改了问题 9月3日
  • 展开全部

悬赏问题

  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度