【问题标题】:Read FASTA into a dataframe and extract subsequences of FASTA file将 FASTA 读入数据帧并提取 FASTA 文件的子序列
【发布时间】:2014-01-21 16:23:32
【问题描述】:

我有一个小的 fasta DNA 序列文件,如下所示:

>NM_000016 700 200 234
ACATATTGGAGGCCGAAACAATGAGGCGTGATCAACTCAGTATATCAC

>NM_000775 700 124 236
CTAACCTCTCCCAGTGTGGAACCTCTATCTCATGAGAAAGCTGGGATGAG

>NM_003820 700 111 222
ATTTCCTCCTGCTGCCCGGGAGGTAACACCCTGGACCCCTGGAGTCTGCA

问题:

1) 我如何将这个 fasta 文件作为数据帧读入 R,其中每一行是一个序列记录,第一列是 refseqID,第二列是序列。

2)如何在(开始,结束)位置提取子序列?

NM_000016 1  3 #"ACA"
NM_000775 2  6 #"TAACC"
NM_003820 3  5 #"TTC"

【问题讨论】:

    标签: r subset bioinformatics fasta


    【解决方案1】:

    你应该看看Biostrings 包。

    library("Biostrings")
    
    s = readDNAStringSet("nm.fasta")
    subseq(s, start=c(1, 2, 3), end=c(3, 6, 5))
    

    【讨论】:

    • 这个函数会屏蔽重复。我们如何防止这种情况发生?
    • 你能举个小例子吗?可能在support.bioconductor.org 上询问具体用例。
    • 哦,谢谢 :) 我使用 Python 解决了这个问题。只是将它们视为字符串。我想删除那些有重复的序列。所以,我用 string.isupper() 来检查。
    • 我对屏蔽有同样的疑问:DNAString("TATCAAATACTCAAGCACtaaggaaacaggaaaatct") 将返回 37-letter "DNAString" instance seq: TATCAAATACTCAAGCACTAAGGAAACAGGAAAATCT 为什么aaggaaacaggaaaatct 不保留小写字母?
    【解决方案2】:
    library("Biostrings")
    
    fastaFile <- readDNAStringSet("my.fasta")
    seq_name = names(fastaFile)
    sequence = paste(fastaFile)
    df <- data.frame(seq_name, sequence)
    

    【讨论】:

    • 你能解释一下你的答案吗
    【解决方案3】:

    受上面sgibb的回答启发,我对第一个问题的回答如下:

    #read fasta file into R as a dataframe: 1st column as "RefSeqID", 2nd column as "seq"
    
    library("Biostrings")
    fasta2dataframe=function(fastaFile){
    s = readDNAStringSet(fastaFile)
    RefSeqID = names(s)
    RefSeqID = sub(" .*", "", RefSeqID) 
    #erase all characters after the first space: regular expression matches a space followed by any sequence of characters and sub replaces that with a string having zero  characters 
    
    for (i in 1:length(s)){
    seq[i]=toString(s[i])
    }
    
    RefSeqID_seq=data.frame(RefSeqID,seq)
    return(RefSeqID_seq)
    }
    

    例子:

    mydf = fasta2dataframe(myFastaFile.fasta)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      相关资源
      最近更新 更多