Skip to content

Commit

Permalink
feat: clonality init
Browse files Browse the repository at this point in the history
  • Loading branch information
nahid18 committed Jun 16, 2024
1 parent 30ed0e3 commit f62aa05
Show file tree
Hide file tree
Showing 10 changed files with 128 additions and 32 deletions.
1 change: 1 addition & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export("%>%")
export(get_study)
export(plot_motif_counts)
exportClasses(Basic)
exportClasses(Clonality)
exportClasses(Diversity)
exportClasses(Motif)
exportClasses(reTCRProj)
Expand Down
5 changes: 4 additions & 1 deletion R/get_study.R
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
source("R/utils-basic.R")
source("R/utils-diversity.R")
source("R/utils-clonality.R")

#' Get pyTCR data of a project
#'
Expand All @@ -23,11 +24,13 @@ get_study <- function(id, attr_col) {

basic <- .get_basic(data = data, attr_col = attr_col)
diversity <- .get_diversity(data = data, attr_col = attr_col)
clonality <- .get_clonality(data = data, attr_col = attr_col)

return(methods::new(
"reTCRProj",
data = data,
basic = basic,
diversity = diversity
diversity = diversity,
clonality = clonality
))
}
70 changes: 48 additions & 22 deletions R/retcr_proj_class.R
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#' Class "Basic"
#'
#' A class to represent basic analysis data.
#' A class to represent basic metrics
#'
#' @slot summary_data summary data
#' @slot reads_count read counts
Expand All @@ -24,25 +24,9 @@ setClass("Basic",
)
)

#' Class "Motif"
#'
#' A class to represent motif data.
#'
#' @slot aa_spectratype aa spectratype data.
#' @slot aa_max_spectratype aa max spectratype data.
#' @slot aa_motif_count aa motif count data.
#' @exportClass Motif
setClass("Motif",
slots = c(
aa_spectratype = "data.frame",
aa_max_spectratype = "data.frame",
aa_motif_count = "data.frame"
)
)

#' Class "Diversity"
#'
#' A class to represent diversity data.
#' A class to represent diversity metrics
#'
#' @slot shannon Shannon-Wiener indexes
#' @slot simpson Simpson indexes
Expand All @@ -60,18 +44,60 @@ setClass("Diversity",
)
)

#' Class "Clonality"
#'
#' A class to represent clonality metrics
#'
#' @slot most_clonotype most frequent clonotype
#' @slot least_clonotype least frequent clonotype
#' @slot pielou 1-Pielou index
#' @slot clonal_prop clonal proportion
#' @slot abundance relative abundance (in all clonotypes)
#' @slot abundance_top relative abundance (in top 100 clonotypes)
#' @slot abundance_rare relative abundance (in rare clonotypes)
#' @exportClass Clonality
setClass("Clonality",
slots = c(
most_clonotype = "data.frame",
least_clonotype = "data.frame",
pielou = "data.frame",
clonal_prop = "data.frame",
abundance = "data.frame",
abundance_top = "data.frame",
abundance_rare = "data.frame"
)
)

#' Class "Motif"
#'
#' A class to represent motif data
#'
#' @slot aa_spectratype aa spectratype data
#' @slot aa_max_spectratype aa max spectratype data
#' @slot aa_motif_count aa motif count data
#' @exportClass Motif
setClass("Motif",
slots = c(
aa_spectratype = "data.frame",
aa_max_spectratype = "data.frame",
aa_motif_count = "data.frame"
)
)

#' Class "reTCRProj"
#'
#' A class to represent a reTCR project
#'
#' @slot data contains the main data for the project.
#' @slot basic contains basic analysis information.
#' @slot diversity contains diversity analysis information.
#' @slot data contains the main data for the project
#' @slot basic contains basic metrics
#' @slot diversity contains diversity metrics
#' @slot clonality contains clonality metrics
#' @exportClass reTCRProj
setClass("reTCRProj",
slots = c(
data = "data.frame",
basic = "Basic",
diversity = "Diversity"
diversity = "Diversity",
clonality = "Clonality"
)
)
12 changes: 12 additions & 0 deletions R/utils-clonality.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.get_clonality <- function(data, attr_col) {
return(methods::new(
"Clonality",
most_clonotype = data.frame(),
least_clonotype = data.frame(),
pielou = data.frame(),
clonal_prop = data.frame(),
abundance = data.frame(),
abundance_top = data.frame(),
abundance_rare = data.frame()
))
}
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,29 @@ print(proj@diversity@chao1)

# Gini coefficient
print(proj@diversity@gini_coeff)
```

## 3. Clonality Analysis

``` r
# most frequent clonotypes
print(proj@clonality@most_clonotype)

# least frequent clonotypes
print(proj@clonality@least_clonotype)

# 1-Pielou index
print(proj@clonality@pielou)

# clonal proportion
print(proj@clonality@clonal_prop)

# relative abundance (in all clonotypes)
print(proj@clonality@abundance)

# relative abundance (in top 100 clonotypes)
print(proj@clonality@abundance_top)

# relative abundance (in rare clonotypes)
print(proj@clonality@abundance_rare)
```
2 changes: 1 addition & 1 deletion man/Basic-class.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions man/Clonality-class.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion man/Diversity-class.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions man/Motif-class.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions man/reTCRProj-class.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit f62aa05

Please sign in to comment.