ORFfinder教程


电脑
痕迹:H:\lncRNA挖掘\论文整理\找mRNA和lncRNA的ord长度
服务器
/home/data1/Ghl/orfFINDER

cd /home/data1/Ghl/orfFINDER

下载

(base) dell@dell:/home/data1/Ghl/orfFINDER$ wget https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/ORFfinder/linux-i64/ORFfinder.gz

–2024-01-09 13:59:37– https://ftp.ncbi.nlm.nih.gov/genomes/TOOLS/ORFfinder/linux-i64/ORFfinder.gz
正在解析主机 ftp.ncbi.nlm.nih.gov (ftp.ncbi.nlm.nih.gov)… 130.14.250.12, 130.14.250.11, 2607:f220:41e:250::12, …
正在连接 ftp.ncbi.nlm.nih.gov (ftp.ncbi.nlm.nih.gov)|130.14.250.12|:443… 已连接。
已发出 HTTP 请求,正在等待回应… 200 OK
长度:8386303 (8.0M) [application/x-gzip]
正在保存至: “ORFfinder.gz”

ORFfinder.gz 100%[=====================================================================>] 8.00M 1.79MB/s 用时 4.5s

2024-01-09 13:59:44 (1.79 MB/s) - 已保存 “ORFfinder.gz” [8386303/8386303])

解压

(base) dell@dell:/home/data1/Ghl/orfFINDER$ gunzip ORFfinder.gz

给权限

(base) dell@dell:/home/data1/Ghl/orfFINDER$ chmod a+x ORFfinder

运行最小orf限制为100

(base) dell@dell:/home/data1/Ghl/orfFINDER$ ./ORFfinder -in mRNA.fa -out orf_output.txt -ml 100
Input file error: Couldn’t read the file ‘mRNA.fa’
(base) dell@dell:/home/data1/Ghl/orfFINDER$ ./ORFfinder -in 4853mRNA.fa -out orf_output.txt -ml 100
Error (ENSGALT00000028521) : No ORFs found for the specified parameters
Error (ENSGALT00000042553) : No ORFs found for the specified parameters

运行全部的

(base) dell@dell:/home/data1/Ghl/orfFINDER$ ./ORFfinder -in 4853mRNA.fa -out orf_output_all.txt
Error (ENSGALT00000028521) : No ORFs found for the specified parameters
(base) dell@dell:/home/data1/Ghl/orfFINDER$

得到:orf_output_all.txt里面的大概内容:

lcl|ORF1_ENSGALT00000010717:489:704 unnamed protein product
MCKDKSVHDFHVNVYVMSLLLGRIIAIRCDILLFFEELLLHLMNIPVVLMFLNGTSFFILEKKMHFLLLY
K
lcl|ORF2_ENSGALT00000010717:19:375 unnamed protein product
MEGFAARSYGTGGPDNRPLFGETSARDRIINLVVGSLTSLLLVVTLISAFVFPQLPPKPVNVFFAVCIFL
CCVSAGILIYWYRQGDLEPKFRNLIYYVLFSIVMLCICANLYFHEVGK
lcl|ORF3_ENSGALT00000010717:200:301 unnamed protein product
MYFLLSASSCVAFLPAYLSTGIDRETWNLNSGT
lcl|ORF4_ENSGALT00000010717:308:448 unnamed protein product
MYYSLSSCYVYVPTCTSMKWVNDRHWEYPAVMLLYQTAFSSALGST
lcl|ORF5_ENSGALT00000010717:248:42 unnamed protein product
MPAETQHKKMQTAKNTFTGFGGSCGKTKALIRVTTSSRDVRLPTTRLMILSLAEVSPNSGRLSGPPVP
lcl|ORF6_ENSGALT00000010717:748:518 unnamed protein product
MPFIYTATDPCNAAVYLYNNKKCIFFSKMKKLVPFRNISTTGMFIKCNSSSSKKSRMSHLMAIILPNKRD
ITYTFT

读取 ORFfinder 输出文件

orf_data <- readLines(“orf_output_all.txt”)

解析每个 ORF,并返回一个包含转录组 ID 和 ORF 长度的数据框

parse_orfs <- function(orf_lines) {
orf_info <- data.frame(transcript_id = character(), length = numeric(), stringsAsFactors = FALSE)
for (line in orf_lines) {
if (grepl(“^>lcl\|”, line)) {
parts <- strsplit(line, split=”[:| ]”)[[1]]
transcript_id <- parts[2]
start_position <- as.numeric(parts[3])
end_position <- as.numeric(parts[4])
orf_length <- abs(end_position - start_position) + 1
orf_info <- rbind(orf_info, data.frame(transcript_id, length = orf_length))
}
}
return(orf_info)
}

找到每个转录组中最长的 ORF

find_longest_orf_per_transcript <- function(orf_info) {
aggregate(length ~ transcript_id, data = orf_info, max)
}

执行函数

parsed_orfs <- parse_orfs(orf_data)
longest_orfs <- find_longest_orf_per_transcript(parsed_orfs)

将结果保存到文件

output_file <- “longest_orfs_output.csv”
write.table(longest_orfs, file = output_file, sep = “,”, row.names = FALSE, quote = FALSE)

打印输出文件的路径

print(paste(“结果已保存到文件:”, output_file))

得到的:

ORF1_ENSGALT00000000305 105
ORF1_ENSGALT00000000313 132
ORF1_ENSGALT00000000320 714
ORF1_ENSGALT00000000321 117
ORF1_ENSGALT00000000328 651
ORF1_ENSGALT00000000384 4425
ORF1_ENSGALT00000000386 165
ORF1_ENSGALT00000000423 2577
ORF1_ENSGALT00000000452 180
ORF1_ENSGALT00000000481 1320
ORF1_ENSGALT00000000491 4401

OK,但是似乎提取这个ORF1就行,基本是最大的。

读取 CSV 文件

df <- read.csv(“longest_orfs_output.csv”)

检查列名

print(names(df))

使用 dplyr 处理数据

library(dplyr)

result <- df %>%
group_by(transcript_id) %>%
slice(which.max(length)) %>%
ungroup()

查看结果

print(result)

如果需要,可以将结果写入CSV文件

write.csv(result, “filtered_data.csv”, row.names = FALSE)

这段 R 代码的作用是读取一个名为 longest_orfs_output.csv 的 CSV 文件,然后使用 dplyr 包中的函数对数据进行处理,以找到每个转录组(transcript_id)中长度最长的开放阅读框(ORF)。具体步骤如下:

  1. 读取 CSV 文件
    使用 read.csv 函数将 longest_orfs_output.csv 文件的内容读入到数据框(data frame)df 中。

  2. 检查列名
    使用 print(names(df)) 查看数据框 df 中的列名。这是为了确认 CSV 文件中各列的确切名称,以便正确引用这些列名。

  3. 导入 dplyr 包
    使用 library(dplyr) 载入 dplyr 包。dplyr 是一个流行的数据处理包,提供了许多方便的函数来处理数据框。

  4. 处理数据
    使用 dplyr 的管道操作符(%>%)和以下函数处理数据:

    • group_by(transcript_id):按照 transcript_id 列对数据进行分组。每个 transcript_id 代表一个转录组。
    • slice(which.max(length)):在每个转录组内,找出 length 列(即 ORF 长度)最大值对应的行。这会选出每个转录组中最长的 ORF。
    • ungroup():去除分组效果,得到一个普通的数据框。
  5. 打印结果
    使用 print(result) 打印处理后的数据。这将显示每个转录组中最长的 ORF 及其长度。

这个代码的目的是从一组 ORF 数据中提取出每个转录组中最长的 ORF,这通常在基因组学和分子生物学的数据分析中很有用。这个过程假设您的 CSV 文件中至少包含两列:一列是转录组的 ID(假定列名为 transcript_id),另一列是相应 ORF 的长度(假定列名为 length)。如果您的数据列名与此不同,请相应地调整脚本中的列名。

e


文章作者: 花粱
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 花粱 !
  目录