# TODO: Add comment
# 
# Author: E.Korsching  2025 version
###############################################################################


options(width=180)

f.biomart <- function(x, filter="ensembl_transcript_id", attri=c("ensembl_gene_id","ensembl_transcript_id","transcript_biotype","hgnc_symbol"), host=3){
	# x: ENST/G ids
	require("biomaRt")
	shost=c("https://www.ensembl.org","https://useast.ensembl.org","https://asia.ensembl.org")
	mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl", host=shost[host]))
	Sys.sleep(5)
	
	bm.list <- getBM(filters=filter, attributes=attri, values=x, mart=mart)
	return(bm.list)
}

# ?useEnsembl
#mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl"))
##attributePages(mart)
#listAttributes(mart)
#listFilters(mart)
#keytypes(mart)
#columns(mart)
#	attributes= "ensembl_gene_id","entrezgene_id","ensembl_transcript_id","transcript_biotype","mirbase_id","hgnc_symbol"
#               "gene_biotype", "chromosome_name", "start_position", "end_position", "strand"

#Error in `collect()` at magrittr/R/pipe.R:136:3:
#		! Failed to collect lazy table.
#Caused by error in `db_collect()` at dbplyr/R/verb-compute.R:131:3:
#		! Arguments in `...` must be used.
#✖ Problematic argument:
#		• ..1 = Inf
#ℹ Did you misspell an argument name?
#		Run `rlang::last_trace()` to see where the error occurred.

# ---
#install.packages("BiocManager")
#BiocManager::install("biomaRt")

#install.packages("devtools")
#devtools::install_version("dbplyr", version = "2.3.4", force=T)		# restart R , solving the issue
# fix no longer working: Error in download_version_url(package, version, repos, type) : 
#  version '2.3.4' is invalid for package 'dbplyr'
#
# instead install newest  https://github.com/Bioconductor/BiocFileCache
# install_github("DeveloperName/PackageName") based on devtools
#devtools::install_github("Bioconductor/BiocFileCache")
# restart R session, working



####  all transcripts at the moment  ####  10.01.2024  ####
#mart <- useDataset("hsapiens_gene_ensembl", useMart("ensembl", host="https://useast.ensembl.org"))		# https://asia.ensembl.org  https://www.ensembl.org
#bmart <- getBM(attributes=c("ensembl_gene_id","ensembl_transcript_id","transcript_biotype","hgnc_symbol"), mart=mart)
# 276949

###check some entries
#unique(bmart[,"transcript_biotype"])
# [1] "Mt_tRNA"                            "Mt_rRNA"                           
# [3] "protein_coding"                     "rRNA"                              
# [5] "misc_RNA"                           "snRNA"                             
# [7] "pseudogene"                         "processed_pseudogene"              
# [9] "lncRNA"                             "unprocessed_pseudogene"            
#[11] "transcribed_unprocessed_pseudogene" "protein_coding_LoF"                
#[13] "protein_coding_CDS_not_defined"     "retained_intron"                   
#[15] "TEC"                                "nonsense_mediated_decay"           
#[17] "processed_transcript"               "transcribed_processed_pseudogene"  
#[19] "rRNA_pseudogene"                    "snoRNA"                            
#[21] "miRNA"                              "transcribed_unitary_pseudogene"    
#[23] "non_stop_decay"                     "unitary_pseudogene"                
#[25] "sRNA"                               "IG_V_gene"                         
#[27] "scaRNA"                             "IG_V_pseudogene"                   
#[29] "ribozyme"                           "TR_J_gene"                         
#[31] "TR_V_gene"                          "TR_J_pseudogene"                   
#[33] "TR_D_gene"                          "TR_C_gene"                         
#[35] "IG_D_gene"                          "IG_C_pseudogene"                   
#[37] "IG_C_gene"                          "IG_J_gene"                         
#[39] "IG_J_pseudogene"                    "artifact"                          
#[41] "translated_processed_pseudogene"    "TR_V_pseudogene"                   
#[43] "IG_pseudogene"                      "vault_RNA"                         
#[45] "scRNA"                             

# transcripts! maybe duplicates
#aa <- bmart[ bmart[,"transcript_biotype"]=="miRNA",]		# rows 1949
#aa <- bmart[ bmart[,"transcript_biotype"]=="rRNA",]		# rows 71
#aa <- bmart[ bmart[,"transcript_biotype"]=="misc_RNA",]	# rows 2423
#aa <- bmart[ bmart[,"transcript_biotype"]=="lncRNA",]		# rows 60003 _
#aa <- bmart[ bmart[,"transcript_biotype"]=="snoRNA",]		# rows 1020
#aa <- bmart[ bmart[,"transcript_biotype"]=="scaRNA",]		# rows 51
#aa <- bmart[ bmart[,"transcript_biotype"]=="snRNA",]		# rows 2094 _
#aa <- bmart[ bmart[,"transcript_biotype"]=="scRNA",]		# rows 1
#aa <- bmart[ bmart[,"transcript_biotype"]=="Mt_rRNA",]		# rows 2
#aa <- bmart[ bmart[,"transcript_biotype"]=="Mt_tRNA",]		# rows 22


####  all genes  ####
#bmart <- getBM(attributes=c("ensembl_gene_id","transcript_biotype","hgnc_symbol"), mart=mart)
# 101382

# genes!
#aa <- bmart[ bmart[,"transcript_biotype"]=="miRNA",]		# rows 1949
#aa <- bmart[ bmart[,"transcript_biotype"]=="rRNA",]		# rows 71
#aa <- bmart[ bmart[,"transcript_biotype"]=="misc_RNA",]	# rows 2423
#aa <- bmart[ bmart[,"transcript_biotype"]=="lncRNA",]		# rows 20194 _
#aa <- bmart[ bmart[,"transcript_biotype"]=="snoRNA",]		# rows 1020
#aa <- bmart[ bmart[,"transcript_biotype"]=="scaRNA",]		# rows 51
#aa <- bmart[ bmart[,"transcript_biotype"]=="snRNA",]		# rows 15 _
#aa <- bmart[ bmart[,"transcript_biotype"]=="scRNA",]		# rows 1
#aa <- bmart[ bmart[,"transcript_biotype"]=="Mt_rRNA",]		# rows 2
#aa <- bmart[ bmart[,"transcript_biotype"]=="Mt_tRNA",]		# rows 22
#
#aa <- bmart[ bmart[,"transcript_biotype"]=="protein_coding",]			# rows 22822
#aa <- bmart[ bmart[,"transcript_biotype"]=="pseudogene",]				# rows 36
#aa <- bmart[ bmart[,"transcript_biotype"]=="processed_pseudogene",]	# rows 10886
#aa <- bmart[ bmart[,"transcript_biotype"]=="unprocessed_pseudogene",]	# rows 3432
#
#aa <- bmart[ bmart[,"transcript_biotype"]=="sRNA",]					# rows 6

#rm(bmart)
#save.image()






