Skip to content

Commit 326b855

Browse files
Merge pull request #37 from camilogarciabotero/rbs
Ribosome Binding Sites motifs
2 parents 4beee1c + ff2ddd3 commit 326b855

File tree

9 files changed

+570
-62
lines changed

9 files changed

+570
-62
lines changed

docs/Manifest.toml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is machine-generated - editing it directly is not advised
22

3-
julia_version = "1.11.1"
3+
julia_version = "1.11.2"
44
manifest_format = "2.0"
55
project_hash = "a737ae23847074aa3f8c65ffa51f2732c1aeb154"
66

@@ -107,9 +107,9 @@ version = "0.9.3"
107107

108108
[[deps.Documenter]]
109109
deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"]
110-
git-tree-sha1 = "5a1ee886566f2fa9318df1273d8b778b9d42712d"
110+
git-tree-sha1 = "d0ea2c044963ed6f37703cead7e29f70cba13d7e"
111111
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
112-
version = "1.7.0"
112+
version = "1.8.0"
113113

114114
[[deps.DocumenterVitepress]]
115115
deps = ["ANSIColoredPrinters", "Base64", "DocStringExtensions", "Documenter", "IOCapture", "Markdown", "NodeJS_20_jll", "REPL"]
@@ -130,15 +130,15 @@ version = "1.6.0"
130130

131131
[[deps.ExceptionUnwrapping]]
132132
deps = ["Test"]
133-
git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a"
133+
git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a"
134134
uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4"
135-
version = "0.1.10"
135+
version = "0.1.11"
136136

137137
[[deps.Expat_jll]]
138138
deps = ["Artifacts", "JLLWrappers", "Libdl"]
139-
git-tree-sha1 = "1c6317308b9dc757616f0b5cb379db10494443a7"
139+
git-tree-sha1 = "e51db81749b0777b2147fbe7b783ee79045b8e99"
140140
uuid = "2e619515-83b5-522b-bb60-26c02a35a201"
141-
version = "2.6.2+0"
141+
version = "2.6.4+1"
142142

143143
[[deps.FileWatching]]
144144
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
@@ -164,15 +164,15 @@ version = "1.3.1"
164164

165165
[[deps.Git_jll]]
166166
deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"]
167-
git-tree-sha1 = "ea372033d09e4552a04fd38361cd019f9003f4f4"
167+
git-tree-sha1 = "399f4a308c804b446ae4c91eeafadb2fe2c54ff9"
168168
uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb"
169-
version = "2.46.2+0"
169+
version = "2.47.1+0"
170170

171171
[[deps.HTTP]]
172-
deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
173-
git-tree-sha1 = "bc3f416a965ae61968c20d0ad867556367f2817d"
172+
deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"]
173+
git-tree-sha1 = "6c22309e9a356ac1ebc5c8a217045f9bae6f8d9a"
174174
uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
175-
version = "1.10.9"
175+
version = "1.10.13"
176176

177177
[[deps.IOCapture]]
178178
deps = ["Logging", "Random"]
@@ -208,9 +208,9 @@ uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
208208
version = "0.21.4"
209209

210210
[[deps.LazilyInitializedFields]]
211-
git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612"
211+
git-tree-sha1 = "0f2da712350b020bc3957f269c9caad516383ee0"
212212
uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf"
213-
version = "1.2.2"
213+
version = "1.3.0"
214214

215215
[[deps.LibCURL]]
216216
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
@@ -321,9 +321,9 @@ uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95"
321321
version = "3.0.15+1"
322322

323323
[[deps.OrderedCollections]]
324-
git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5"
324+
git-tree-sha1 = "12f1439c4f986bb868acda6ea33ebc78e19b95ad"
325325
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
326-
version = "1.6.3"
326+
version = "1.7.0"
327327

328328
[[deps.PCRE2_jll]]
329329
deps = ["Artifacts", "Libdl"]

docs/make.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ pgs = [
1818
"The ORF type" => "orftype.md",
1919
"Scoring ORFs" => "features.md",
2020
"A Simple Coding Rule" => "simplecodingrule.md",
21+
"Ribosome Binding Sites" => "rbs.md",
2122
"Writing ORFs In Files" => "iodocs.md",
2223
],
2324
"API" => "api.md",

docs/src/rbs.md

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
## Ribosome Binding Site (RBS) Motifs
2+
3+
This document provides information on Ribosome Binding Site (RBS) motifs based on the Prodigal paper. The RBS motifs are categorized by spacer ranges, which indicate the number of base pairs (bp) between the RBS and the start codon.
4+
5+
### Spacer Ranges and Representative RBS Motifs
6+
7+
Example sequence with RBS motif:
8+
9+
Spacer Range | Representative RBS Motif(s)
10+
------------ | ---------------------------
11+
3-4 bp | GGA, GAG, AGG, AGxAG, AGGAG
12+
5-10 bp | GGAG, GAGG, GGxGG, AGGAGG
13+
11-12 bp | GGA, GAG, AGG, AGxAG, AGGAG
14+
13-15 bp | GGA, GAG, AGG, AGGA, AGGAG
15+
16+
### Window Checking Ranges
17+
18+
Three different window checking ranges are defined to identify potential RBS motifs relative to the start codon (ATG):
19+
20+
- Window Checking A:
21+
```
22+
-10 -3 |-> start codon
23+
...|......|..ATG...
24+
```
25+
26+
- Window Checking B:
27+
```
28+
-16 -5 |-> start codon
29+
...|..........|....ATG...
30+
```
31+
32+
- Window Checking C:
33+
```
34+
-20 -11 |-> start codon
35+
.|........|..........ATG...
36+
```
37+
38+
### RBS Motif Scoring
39+
40+
The RBS motif scoring is based on the Prodigal paper, which uses a scoring system to identify potential RBS motifs. The scoring system is as follows:
41+
42+
43+
44+
### Example
45+
46+
An example of an exact search query for an RBS motif is provided:
47+
48+
- **ExactSearchQuery(dna"ATACG", iscompatible)** returns 5, indicating the position of the motif.
49+
50+
```
51+
-20 -15 -10 -5 |-> start codon
52+
|....|....|....|....ATG...
53+
GGAGGACCCCATGACACACACAACAC
54+
|----|:RBS(dna"GGAGGA", 1:5, :A, 27, STRAND_POS)
55+
```
56+
57+
To inspect the RBS motifs of a given ORF, we can use the `_findrbs` function. This function returns the RBS motifs of a given ORF:
58+
59+
```julia
60+
61+
phi = dna"GTGTGAGGTTATAACGCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGCTTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTATATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTGTCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTGAATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGCCGGGCAATAACGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCTGGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGACCAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGATACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCGTCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGAATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGGGACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGATGAATGCAATGCGACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCATTTCCATGCGGTGCACTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTCGTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCATCGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGCAGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACCTGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCAGAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTTCGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTACGGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTACGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAGTGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTACTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACAACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAACCTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTTGATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGATTATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGT ACCGTTTATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGA"
62+
63+
orf = findorfs(phi)[3]
64+
65+
GeneFinder._findrbs(orf)
66+
67+
6-element Vector{RBS}:
68+
RBS(GAG, 90:92, :A, 13, STRAND_POS)
69+
RBS(GGAG, 89:92, :B, 16, STRAND_POS)
70+
RBS(AGG, 88:90, :B, 13, STRAND_POS)
71+
RBS(GGA, 89:91, :B, 13, STRAND_POS)
72+
RBS(GAG, 90:92, :B, 13, STRAND_POS)
73+
RBS(AGGA, 88:91, :B, 16, STRAND_POS)
74+
75+
```
76+
77+
Now, following the scoring scheme mentioned above, we can calculate the RBS score for each motif. This criteria is implemented in the `orf_rbs_score` or simply aliased to `orbs` function:
78+
79+
```julia
80+
orf_rbs_score(orf)
81+
29
82+
```

src/GeneFinder.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ using BioSequences:
2121
reverse_complement,
2222
randdnaseq,
2323
ncbi_trans_table,
24-
translate
24+
translate,
25+
26+
ExactSearchQuery,
27+
iscompatible
2528

2629
using BioMarkovChains: BioMarkovChain, ECOLICDS, ECOLINOCDS, log_odds_ratio_score
2730
using IterTools: takewhile, iterated
@@ -31,19 +34,21 @@ using GenomicFeatures: GenomicFeatures, AbstractGenomicInterval, Strand, summary
3134
include("algorithms/naivefinder.jl")
3235
include("algorithms/naivecollector.jl")
3336

34-
# Coding Criteria
35-
include("criteria/lordr.jl")
36-
3737
# Main functions
3838
include("types.jl")
3939
include("findorfs.jl")
40-
include("iscoding.jl")
4140
include("io.jl")
4241

4342
# Utils and extended functions
4443
include("utils.jl")
4544
include("extended.jl")
4645

46+
# RBS Scoring
47+
include("rbs.jl")
48+
49+
# Coding Criteria
50+
include("criteria.jl")
51+
4752
# Precompiled workloads
4853
include("workload.jl")
4954

Lines changed: 70 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,38 @@
1-
export log_odds_ratio_decision_rule, lordr #lors
1+
export iscoding,
2+
log_odds_ratio_decision_rule, lordr,
3+
ribsome_binding_site_decision_rule, rbsdr
4+
5+
6+
@doc raw"""
7+
iscoding(orf::ORFI{N,F}; criteria::Function = lordr, kwargs...) -> Bool
8+
9+
Check if the given DNA sequence of an ORF is likely to be coding based on a scoring scheme/function.
10+
11+
## Scoring Criteria/Functions
12+
- `lordr`: Log-Odds Ratio Decision Rule
13+
- `rbsdr`: Ribosome Binding Site Decision Rule
14+
15+
```
16+
phi = dna"GTGTGAGGTTATAACGCCGAAGCGGTAAAAATTTTAAT...AGTGTTTCCAGTCCGTTCAGTTAATAGTCAGGTTAAAGATAAAAGATTGA"
17+
orfs = findorfs(phi)
18+
19+
orf = orfs[2]
20+
ORFI{NaiveFinder}(94:126, '-', 1)
21+
22+
iscoding(orf) # Returns: true
23+
```
24+
"""
25+
function iscoding(
26+
orf::ORFI{N,F};
27+
criteria::Function = lordr, #rbsdr
28+
kwargs...
29+
) where {N,F<:GeneFinderMethod}
30+
return criteria(orf; kwargs...)
31+
end
32+
33+
### Actual criteria functions ###
34+
35+
## Log-Odds Ratio Decision Rule
236

337
@doc raw"""
438
log_odds_ratio_decision_rule(
@@ -41,15 +75,15 @@ iscoding(sequence) # Returns: true or false
4175
```
4276
"""
4377
function lordr( #log_odds_ratio_decision, also lordr/cudr/kfdr/aadr
44-
sequence::NucleicSeqOrView{DNAAlphabet{N}};
78+
orf::ORFI{N,F};
4579
modela::BioMarkovChain = ECOLICDS,
4680
modelb::BioMarkovChain = ECOLINOCDS,
4781
b::Number = 2,
4882
η::Float64 = 5e-3
49-
) where {N}
50-
51-
scorea = log_odds_ratio_score(sequence; modela=modela, b=b)
52-
scoreb = log_odds_ratio_score(sequence; modela=modelb, b=b)
83+
) where {N,F<:GeneFinderMethod}
84+
orfseq = sequence(orf)
85+
scorea = log_odds_ratio_score(orfseq; modela=modela, b=b)
86+
scoreb = log_odds_ratio_score(orfseq; modela=modelb, b=b)
5387

5488
logodds = scorea / scoreb
5589

@@ -60,4 +94,33 @@ function lordr( #log_odds_ratio_decision, also lordr/cudr/kfdr/aadr
6094
end
6195
end
6296

63-
const log_odds_ratio_decision_rule = lordr # criteria
97+
const log_odds_ratio_decision_rule = lordr # criteria
98+
99+
## Ribosome Binding Site Decision Rule
100+
101+
"""
102+
ribsome_binding_site_decision_rule(orf::ORFI{N,F}) where {N,F<:GeneFinderMethod} -> Bool
103+
104+
Evaluates if an Open Reading Frame (ORF) has a significant ribosome binding site (RBS).
105+
106+
The function uses the `orf_rbs_score` to calculate a score for the ORF's RBS region and returns
107+
true if the score exceeds a threshold of 9, indicating the presence of at least one RBS.
108+
109+
# Arguments
110+
- `orf::ORFI{N,F}`: An Open Reading Frame Interface (ORFI) object parameterized by N and F,
111+
where F is a subtype of GeneFinderMethod
112+
113+
# Returns
114+
- `Bool`: `true` if the RBS score is greater than 9, `false` otherwise
115+
116+
"""
117+
function rbsdr(orf::ORFI{N,F}) where {N,F<:GeneFinderMethod}
118+
scr = orf_rbs_score(orf)
119+
if scr > 9 # at least one RBS...
120+
return true
121+
else
122+
return false
123+
end
124+
end
125+
126+
const ribsome_binding_site_decision_rule = rbsdr

src/extended.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import BioSequences: translate
1414

1515
## Methods from BioMarkovChains that expand their fuctions to this package structs
1616
import BioMarkovChains: log_odds_ratio_score
17-
export log_odds_ratio_score, lors
17+
# export log_odds_ratio_score, lors
1818

1919
@inline log_odds_ratio_score(orf::ORFI{N,F}; kwargs...) where {N,F} = log_odds_ratio_score(sequence(orf); kwargs...)
20-
@inline log_odds_ratio_decision_rule(orf::ORFI{N,F}; kwargs...) where {N,F} = log_odds_ratio_decision_rule(sequence(orf); kwargs)
20+
# @inline log_odds_ratio_decision_rule(orf::ORFI{N,F}; kwargs...) where {N,F} = log_odds_ratio_decision_rule(sequence(orf); kwargs)
2121

22-
const lors = log_odds_ratio_score
22+
# const lors = log_odds_ratio_score

src/iscoding.jl

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)