电脑
痕迹: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)。具体步骤如下:
读取 CSV 文件:
使用read.csv
函数将longest_orfs_output.csv
文件的内容读入到数据框(data frame)df
中。检查列名:
使用print(names(df))
查看数据框df
中的列名。这是为了确认 CSV 文件中各列的确切名称,以便正确引用这些列名。导入 dplyr 包:
使用library(dplyr)
载入dplyr
包。dplyr
是一个流行的数据处理包,提供了许多方便的函数来处理数据框。处理数据:
使用dplyr
的管道操作符(%>%
)和以下函数处理数据:group_by(transcript_id)
:按照transcript_id
列对数据进行分组。每个transcript_id
代表一个转录组。slice(which.max(length))
:在每个转录组内,找出length
列(即 ORF 长度)最大值对应的行。这会选出每个转录组中最长的 ORF。ungroup()
:去除分组效果,得到一个普通的数据框。
打印结果:
使用print(result)
打印处理后的数据。这将显示每个转录组中最长的 ORF 及其长度。
这个代码的目的是从一组 ORF 数据中提取出每个转录组中最长的 ORF,这通常在基因组学和分子生物学的数据分析中很有用。这个过程假设您的 CSV 文件中至少包含两列:一列是转录组的 ID(假定列名为 transcript_id
),另一列是相应 ORF 的长度(假定列名为 length
)。如果您的数据列名与此不同,请相应地调整脚本中的列名。
e