Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
53ae70d
Refactor RBS module to improve code organization and readability
camilogarciabotero Oct 30, 2024
bc92366
Refactor GeneFinder module to include RBS Scoring functionality
camilogarciabotero Oct 30, 2024
74f7a99
Refactor RBS module to improve code organization and readability
camilogarciabotero Oct 30, 2024
4ecbd48
Refactor GeneFinder module to include RBS Scoring functionality
camilogarciabotero Oct 30, 2024
cebf7a7
Merge branch 'rbs' of https://github.com/camilogarciabotero/GeneFinde…
camilogarciabotero Nov 29, 2024
98db5db
Refactor RBS module to streamline functions and improve motif handling
camilogarciabotero Nov 29, 2024
17eb549
Refactor RBS module and introduce RBSMOTIFS2 for improved motif scori…
camilogarciabotero Nov 29, 2024
136618b
Add commented-out filter for ORF scoring in RBS module
camilogarciabotero Nov 29, 2024
73ec805
Refactor RBS module to enhance motif handling and introduce reverse m…
camilogarciabotero Dec 8, 2024
82a3141
Enhance RBS module with detailed documentation for RBS structure and …
camilogarciabotero Dec 8, 2024
d34de0d
Remove log-odds ratio decision rule and iscoding functions from crite…
camilogarciabotero Dec 9, 2024
e9dd91b
Update Julia version and dependencies in Manifest.toml
camilogarciabotero Dec 9, 2024
b883807
Comment out log-odds ratio decision rule and related exports in exten…
camilogarciabotero Dec 9, 2024
b8d8eb0
Add iscoding and decision rule functions to criteria module
camilogarciabotero Dec 9, 2024
f5379c9
Refactor GeneFinder and RBS modules by removing unused criteria and c…
camilogarciabotero Dec 9, 2024
15b1724
Rename orf_rbs_score function to orbs and update return type to Int64…
camilogarciabotero Dec 9, 2024
9e38c6f
Add documentation for Ribosome Binding Site (RBS) motifs and scoring …
camilogarciabotero Dec 9, 2024
ff2ddd3
Update link for Ribosome Binding Sites documentation in make.jl
camilogarciabotero Dec 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions docs/Manifest.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This file is machine-generated - editing it directly is not advised

julia_version = "1.11.1"
julia_version = "1.11.2"
manifest_format = "2.0"
project_hash = "a737ae23847074aa3f8c65ffa51f2732c1aeb154"

Expand Down Expand Up @@ -107,9 +107,9 @@ version = "0.9.3"

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

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

[[deps.ExceptionUnwrapping]]
deps = ["Test"]
git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a"
git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a"
uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4"
version = "0.1.10"
version = "0.1.11"

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

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

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

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

[[deps.IOCapture]]
deps = ["Logging", "Random"]
Expand Down Expand Up @@ -208,9 +208,9 @@ uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.4"

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

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

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

[[deps.PCRE2_jll]]
deps = ["Artifacts", "Libdl"]
Expand Down
1 change: 1 addition & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ pgs = [
"The ORF type" => "orftype.md",
"Scoring ORFs" => "features.md",
"A Simple Coding Rule" => "simplecodingrule.md",
"Ribosome Binding Sites" => "rbs.md",
"Writing ORFs In Files" => "iodocs.md",
],
"API" => "api.md",
Expand Down
82 changes: 82 additions & 0 deletions docs/src/rbs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
## Ribosome Binding Site (RBS) Motifs

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.

### Spacer Ranges and Representative RBS Motifs

Example sequence with RBS motif:

Spacer Range | Representative RBS Motif(s)
------------ | ---------------------------
3-4 bp | GGA, GAG, AGG, AGxAG, AGGAG
5-10 bp | GGAG, GAGG, GGxGG, AGGAGG
11-12 bp | GGA, GAG, AGG, AGxAG, AGGAG
13-15 bp | GGA, GAG, AGG, AGGA, AGGAG

### Window Checking Ranges

Three different window checking ranges are defined to identify potential RBS motifs relative to the start codon (ATG):

- Window Checking A:
```
-10 -3 |-> start codon
...|......|..ATG...
```

- Window Checking B:
```
-16 -5 |-> start codon
...|..........|....ATG...
```

- Window Checking C:
```
-20 -11 |-> start codon
.|........|..........ATG...
```

### RBS Motif Scoring

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:



### Example

An example of an exact search query for an RBS motif is provided:

- **ExactSearchQuery(dna"ATACG", iscompatible)** returns 5, indicating the position of the motif.

```
-20 -15 -10 -5 |-> start codon
|....|....|....|....ATG...
GGAGGACCCCATGACACACACAACAC
|----|:RBS(dna"GGAGGA", 1:5, :A, 27, STRAND_POS)
```

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:

```julia

phi = dna"GTGTGAGGTTATAACGCCGAAGCGGTAAAAATTTTAATTTTTGCCGCTGAGGGGTTGACCAAGCGAAGCGCGGTAGGTTTTCTGCTTAGGAGTTTAATCATGTTTCAGACTTTTATTTCTCGCCATAATTCAAACTTTTTTTCTGATAAGCTGGTTCTCACTTCTGTTACTCCAGCTTCTTCGGCACCTGTTTTACAGACACCTAAAGCTACATCGTCAACGTTATATTTTGATAGTTTGACGGTTAATGCTGGTAATGGTGGTTTTCTTCATTGCATTCAGATGGATACATCTGTCAACGCCGCTAATCAGGTTGTTTCTGTTGGTGCTGATATTGCTTTTGATGCCGACCCTAAATTTTTTGCCTGTTTGGTTCGCTTTGAGTCTTCTTCGGTTCCGACTACCCTCCCGACTGCCTATGATGTTTATCCTTTGAATGGTCGCCATGATGGTGGTTATTATACCGTCAAGGACTGTGTGACTATTGACGTCCTTCCCCGTACGCCGGGCAATAACGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGTTTGGAGGCGGTCAAAAAGCCGCCTCCGGTGGCATTCAAGGTGATGTGCTTGCTACCGATAACAATACTGTAGGCATGGGTGATGCTGGTATTAAATCTGCCATTCAAGGCTCTAATGTTCCTAACCCTGATGAGGCCGCCCCTAGTTTTGTTTCTGGTGCTATGGCTAAAGCTGGTAAAGGACTTCTTGAAGGTACGTTGCAGGCTGGCACTTCTGCCGTTTCTGATAAGTTGCTTGATTTGGTTGGACTTGGTGGCAAGTCTGCCGCTGATAAAGGAAAGGATACTCGTGATTATCTTGCTGCTGCATTTCCTGAGCTTAATGCTTGGGAGCGTGCTGGTGCTGATGCTTCCTCTGCTGGTATGGTTGACGCCGGATTTGAGAATCAAAAAGAGCTTACTAAAATGCAACTGGACAATCAGAAAGAGATTGCCGAGATGCAAAATGAGACTCAAAAAGAGATTGCTGGCATTCAGTCGGCGACTTCACGCCAGAATACGAAAGACCAGGTATATGCACAAAATGAGATGCTTGCTTATCAACAGAAGGAGTCTACTGCTCGCGTTGCGTCTATTATGGAAAACACCAATCTTTCCAAGCAACAGCAGGTTTCCGAGATTATGCGCCAAATGCTTACTCAAGCTCAAACGGCTGGTCAGTATTTTACCAATGACCAAATCAAAGAAATGACTCGCAAGGTTAGTGCTGAGGTTGACTTAGTTCATCAGCAAACGCAGAATCAGCGGTATGGCTCTTCTCATATTGGCGCTACTGCAAAGGATATTTCTAATGTCGTCACTGATGCTGCTTCTGGTGTGGTTGATATTTTTCATGGTATTGATAAAGCTGTTGCCGATACTTGGAACAATTTCTGGAAAGACGGTAAAGCTGATGGTATTGGCTCTAATTTGTCTAGGAAATAACCGTCAGGATTGACACCCTCCCAATTGTATGTTTTCATGCCTCCAAATCTTGGAGGCTTTTTTATGGTTCGTTCTTATTACCCTTCTGAATGTCACGCTGATTATTTTGACTTTGAGCGTATCGAGGCTCTTAAACCTGCTATTGAGGCTTGTGGCATTTCTACTCTTTCTCAATCCCCAATGCTTGGCTTCCATAAGCAGATGGATAACCGCATCAAGCTCTTGGAAGAGATTCTGTCTTTTCGTATGCAGGGCGTTGAGTTCGATAATGGTGATATGTATGTTGACGGCCATAAGGCTGCTTCTGACGTTCGTGATGAGTTTGTATCTGTTACTGAGAAGTTAATGGATGAATTGGCACAATGCTACAATGTGCTCCCCCAACTTGATATTAATAACACTATAGACCACCGCCCCGAAGGGGACGAAAAATGGTTTTTAGAGAACGAGAAGACGGTTACGCAGTTTTGCCGCAAGCTGGCTGCTGAACGCCCTCTTAAGGATATTCGCGATGAGTATAATTACCCCAAAAAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTGGAGGCCTCCACTATGAAATCGCGTAGAGGCTTTGCTATTCAGCGTTTGATGAATGCAATGCGACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGACTATTTTCGTGATATTGGTCGTATGGTTCTTGCTGCCGAGGGTCGCAAGGCTAATGATTCACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCATTTCCATGCGGTGCACTTTATGCGGACACTTCCTACAGGTAGCGTTGACCCTAATTTTGGTCGTCGGGTACGCAATCGCCGCCAGTTAAATAGCTTGCAAAATACGTGGCCTTATGGTTACAGTATGCCCATCGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCTACCAGTTATATGGCTGTTGGTTTCTATGTGGCTAAATACGTTAACAAAAAGTCAGATATGGACCTTGCTGCTAAAGGTCTAGGAGCTAAAGAATGGAACAACTCACTAAAAACCAAGCTGTCGCTACTTCCCAAGAAGCTGTTCAGAATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGCCGTTCAACCAGATATTGAAGCAGAACGCAAAAAGAGAGATGAGATTGAGGCTGGGAAAAGTTACTGTAGCCGACGTTTTGGCGGCGCAACCTGTGACGACAAATCTGCTCAAATTTATGCGCGCTTCGATAAAAATGATTGGCGTATCCAACCTGCAGAGTTTTATCGCTTCCATGACGCAGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATCGAAGTGGACTGCTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTACTGAACAATCCGTACGTTTCCAGACCGCTTTGGCCTCTATTAAGCTCATTCAGGCTTCTGCCGTTTTGGATTTAACCGAAGATGATTTCGATTTTCTGACGAGTAACAAAGTTTGGATTGCTACTGACCGCTCTCGTGCTCGTCGCTGCGTTGAGGCTTGCGTTTATGGTACGCTGGACTTTGTGGGATACCCTCGCTTTCCTGCTCCTGTTGAGTTTATTGCTGCCGTCATTGCTTATTATGTTCATCCCGTCAACATTCAAACGGCCTGTCTCATCATGGAAGGCGCTGAATTTACGGAAAACATTATTAATGGCGTCGAGCGTCCGGTTAAAGCCGCTGAATTGTTCGCGTTTACCTTGCGTGTACGCGCAGGAAACACTGACGTTCTTACTGACGCAGAAGAAAACGTGCGTCAAAAATTACGTGCGGAAGGAGTGATGTAATGTCTAAAGGTAAAAAACGTTCTGGCGCTCGCCCTGGTCGTCCGCAGCCGTTGCGAGGTACTAAAGGCAAGCGTAAAGGCGCTCGTCTTTGGTATGTAGGTGGTCAACAATTTTAATTGCAGGGGCTTCGGCCCCTTACTTGAGGATAAATTATGTCTAATATTCAAACTGGCGCCGAGCGTATGCCGCATGACCTTTCCCATCTTGGCTTCCTTGCTGGTCAGATTGGTCGTCTTATTACCATTTCAACTACTCCGGTTATCGCTGGCGACTCCTTCGAGATGGACGCCGTTGGCGCTCTCCGTCTTTCTCCATTGCGTCGTGGCCTTGCTATTGACTCTACTGTAGACATTTTTACTTTTTATGTCCCTCATCGTCACGTTTATGGTGAACAGTGGATTAAGTTCATGAAGGATGGTGTTAATGCCACTCCTCTCCCGACTGTTAACACTACTGGTTATATTGACCATGCCGCTTTTCTTGGCACGATTAACCCTGATACCAATAAAATCCCTAAGCATTTGTTTCAGGGTTATTTGAATATCTATAACAACTATTTTAAAGCGCCGTGGATGCCTGACCGTACCGAGGCTAACCCTAATGAGCTTAATCAAGATGATGCTCGTTATGGTTTCCGTTGCTGCCATCTCAAAAACATTTGGACTGCTCCGCTTCCTCCTGAGACTGAGCTTTCTCGCCAAATGACGACTTCTACCACATCTATTGACATTATGGGTCTGCAAGCTGCTTATGCTAATTTGCATACTGACCAAGAACGTGATTACTTCATGCAGCGTTACCATGATGTTATTTCTTCATTTGGAGGTAAAACCTCTTATGACGCTGACAACCGTCCTTTACTTGTCATGCGCTCTAATCTCTGGGCATCTGGCTATGATGTTGATGGAACTGACCAAACGTCGTTAGGCCAGTTTTCTGGTCGTGTTCAACAGACCTATAAACATTCTGTGCCGCGTTTCTTTGTTCCTGAGCATGGCACTATGTTTACTCTTGCGCTTGTTCGTTTTCCGCCTACTGCGACTAAAGAGATTCAGTACCTTAACGCTAAAGGTGCTTTGACTTATACCGATATTGCTGGCGACCCTGTTTTGTATGGCAACTTGCCGCCGCGTGAAATTTCTATGAAGGATGTTTTCCGTTCTGGTGATTCGTCTAAGAAGTTTAAGATTGCTGAGGGTCAGTGGTATCGTTATGCGCCTTCGTATGTTTCTCCTGCTTATCACCTTCTTGAAGGCTTCCCATTCATTCAGGAACCGCCTTCTGGTGATTTGCAAGAACGCGTACTTATTCGCCACCATGATTATGACCAGTGTTTCCAGTCCGTTCAGTTGTTGCAGTGGAATAGTCAGGTTAAATTTAATGT ACCGTTTATCGCAATCTGCCGACCACTCGCGATTCAATCATGACTTCGTGATAAAAGATTGA"

orf = findorfs(phi)[3]

GeneFinder._findrbs(orf)

6-element Vector{RBS}:
RBS(GAG, 90:92, :A, 13, STRAND_POS)
RBS(GGAG, 89:92, :B, 16, STRAND_POS)
RBS(AGG, 88:90, :B, 13, STRAND_POS)
RBS(GGA, 89:91, :B, 13, STRAND_POS)
RBS(GAG, 90:92, :B, 13, STRAND_POS)
RBS(AGGA, 88:91, :B, 16, STRAND_POS)

```

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:

```julia
orf_rbs_score(orf)
29
```
15 changes: 10 additions & 5 deletions src/GeneFinder.jl
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,10 @@ using BioSequences:
reverse_complement,
randdnaseq,
ncbi_trans_table,
translate
translate,

ExactSearchQuery,
iscompatible

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

# Coding Criteria
include("criteria/lordr.jl")

# Main functions
include("types.jl")
include("findorfs.jl")
include("iscoding.jl")
include("io.jl")

# Utils and extended functions
include("utils.jl")
include("extended.jl")

# RBS Scoring
include("rbs.jl")

# Coding Criteria
include("criteria.jl")

# Precompiled workloads
include("workload.jl")

Expand Down
77 changes: 70 additions & 7 deletions src/criteria/lordr.jl → src/criteria.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,38 @@
export log_odds_ratio_decision_rule, lordr #lors
export iscoding,
log_odds_ratio_decision_rule, lordr,
ribsome_binding_site_decision_rule, rbsdr


@doc raw"""
iscoding(orf::ORFI{N,F}; criteria::Function = lordr, kwargs...) -> Bool

Check if the given DNA sequence of an ORF is likely to be coding based on a scoring scheme/function.

## Scoring Criteria/Functions
- `lordr`: Log-Odds Ratio Decision Rule
- `rbsdr`: Ribosome Binding Site Decision Rule

```
phi = dna"GTGTGAGGTTATAACGCCGAAGCGGTAAAAATTTTAAT...AGTGTTTCCAGTCCGTTCAGTTAATAGTCAGGTTAAAGATAAAAGATTGA"
orfs = findorfs(phi)

orf = orfs[2]
ORFI{NaiveFinder}(94:126, '-', 1)

iscoding(orf) # Returns: true
```
"""
function iscoding(
orf::ORFI{N,F};
criteria::Function = lordr, #rbsdr
kwargs...
) where {N,F<:GeneFinderMethod}
return criteria(orf; kwargs...)
end

### Actual criteria functions ###

## Log-Odds Ratio Decision Rule

@doc raw"""
log_odds_ratio_decision_rule(
Expand Down Expand Up @@ -41,15 +75,15 @@ iscoding(sequence) # Returns: true or false
```
"""
function lordr( #log_odds_ratio_decision, also lordr/cudr/kfdr/aadr
sequence::NucleicSeqOrView{DNAAlphabet{N}};
orf::ORFI{N,F};
modela::BioMarkovChain = ECOLICDS,
modelb::BioMarkovChain = ECOLINOCDS,
b::Number = 2,
η::Float64 = 5e-3
) where {N}

scorea = log_odds_ratio_score(sequence; modela=modela, b=b)
scoreb = log_odds_ratio_score(sequence; modela=modelb, b=b)
) where {N,F<:GeneFinderMethod}
orfseq = sequence(orf)
scorea = log_odds_ratio_score(orfseq; modela=modela, b=b)
scoreb = log_odds_ratio_score(orfseq; modela=modelb, b=b)

logodds = scorea / scoreb

Expand All @@ -60,4 +94,33 @@ function lordr( #log_odds_ratio_decision, also lordr/cudr/kfdr/aadr
end
end

const log_odds_ratio_decision_rule = lordr # criteria
const log_odds_ratio_decision_rule = lordr # criteria

## Ribosome Binding Site Decision Rule

"""
ribsome_binding_site_decision_rule(orf::ORFI{N,F}) where {N,F<:GeneFinderMethod} -> Bool

Evaluates if an Open Reading Frame (ORF) has a significant ribosome binding site (RBS).

The function uses the `orf_rbs_score` to calculate a score for the ORF's RBS region and returns
true if the score exceeds a threshold of 9, indicating the presence of at least one RBS.

# Arguments
- `orf::ORFI{N,F}`: An Open Reading Frame Interface (ORFI) object parameterized by N and F,
where F is a subtype of GeneFinderMethod

# Returns
- `Bool`: `true` if the RBS score is greater than 9, `false` otherwise

"""
function rbsdr(orf::ORFI{N,F}) where {N,F<:GeneFinderMethod}
scr = orf_rbs_score(orf)
if scr > 9 # at least one RBS...
return true
else
return false
end
end

const ribsome_binding_site_decision_rule = rbsdr
6 changes: 3 additions & 3 deletions src/extended.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import BioSequences: translate

## Methods from BioMarkovChains that expand their fuctions to this package structs
import BioMarkovChains: log_odds_ratio_score
export log_odds_ratio_score, lors
# export log_odds_ratio_score, lors

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

const lors = log_odds_ratio_score
# const lors = log_odds_ratio_score
31 changes: 0 additions & 31 deletions src/iscoding.jl

This file was deleted.

Loading
Loading