tinybio + DESEQ2: Enhancing Bioinformatics Workflows

Use tinybio to quickly iterate on your DeSEQ2 scripts

Bioinformatics AI-Generated Code with tinybio

tinybio, an AI tool, offers a speedy solution for generating relevant DeSEQ2 code for differential gene expression analysis. All of the code below was generate by tinybio in less than 5 minutes. You can do this yourself by simply going to ai.tinybio.cloud/chat and typing in your specific questions.

library("DESeq2")
library("airway")

data("airway")

airway_dataset <- airway

# Perform differential gene expression analysis

# Set up the DESeqDataSet object
dds <- DESeqDataSet(airway_dataset, design = ~ cell + dex)

# Run the DESeq function to perform differential analysis
dds <- DESeq(dds)

# Get the results
results <- results(dds)

# Order the results by the p-value
ordered_results <- results[order(results$padj),]

# Write the top differentially expressed genes to a CSV file
write.csv(as.data.frame(ordered_results), file='/sandbox/new/DEG_results.csv')

# Summary of results
summary(results)


#LLMS wrote the below: 
# Select significant DEGs
sig_genes <- subset(results, padj < 0.05) # Adjust the p-value threshold as needed
sig_gene_ids <- rownames(sig_genes)

# Convert gene symbols to Entrez IDs (assuming gene symbols are used)
entrez_ids <- bitr(sig_gene_ids, fromType = "ENSEMBL", toType = "ENTREZID", OrgDb = org.Hs.eg.db)

# Perform KEGG pathway enrichment analysis
kegg_enrichment <- enrichKEGG(gene = entrez_ids$ENTREZID, organism = 'hsa', pvalueCutoff = 0.05)

# View the KEGG enrichment analysis results
print(kegg_enrichment)

# Save the KEGG enrichment analysis results to a file
write.csv(as.data.frame(kegg_enrichment), file = "/sandbox/new/KEGG_enrichment_results.csv")

Code Comprehension with tinyBio

tinybio is not only great for enhancing bioinformatics workflows but also fantastic for understanding what written code does. It uses resources such as the Github documentation and PubMed to make sure to provide a deeper understanding of the code. Here is a breakdown of how it explained the code it generated above.

library("DESeq2")

This line loads the DESeq2 package, which is used for differential gene expression analysis on count data (like RNA-Seq or other high-throughput genomic data).

library("airway")

This line loads the airway package, which contains an example dataset from an RNA-Seq experiment on airway smooth muscle cells.

data("airway")

This function call loads the example dataset from the airway package into the R session.

airway_dataset <- airway

This line creates a new variable airway_dataset and assigns it the data from the airway object that was loaded in the previous step.

dds <- DESeqDataSet(airway_dataset, design = ~ cell + dex)

Here, a DESeqDataSet object is created from the airway_dataset using the DESeqDataSet function. The design argument specifies the model formula used in the differential expression analysis. In this case, it includes the variables cell and dex.

dds <- DESeq(dds)

The DESeq function is applied to the dds object to perform the actual differential expression analysis. This function estimates size factors, estimates dispersion, and tests for differential expression. The dds object is updated with these results.

results <- results(dds)

This line extracts the results of the differential expression analysis from the dds object and stores them in a new variable called results.

ordered_results <- results[order(results$padj),]

The results are ordered by the adjusted p-value (padj) to prioritize genes with the most statistically significant changes in expression. The ordered results are stored in ordered_results.

write.csv(as.data.frame(ordered_results), file='/Users/odagayev/code_new/nibbler/sandbox/new/DEG_results.csv')

This line writes the ordered results to a CSV file at the specified file path. The as.data.frame function is used to convert the results to a data frame format suitable for CSV output.

summary(results)

This function provides a summary of the results, which typically includes information about the number of genes tested and the number of genes that are significantly differentially expressed.

sig_genes <- subset(results, padj < 0.05)

This line creates a subset of the results containing

only the genes with an adjusted p-value (padj) less than 0.05, which is a common threshold for statistical significance.

sig_gene_ids <- rownames(sig_genes)

The row names of the sig_genes data frame, which correspond to the gene identifiers, are extracted and stored in sig_gene_ids.

entrez_ids <- bitr(sig_gene_ids, fromType = "ENSEMBL", toType = "ENTREZID", OrgDb = org.Hs.eg.db)

The bitr function from the clusterProfiler package is used to convert gene identifiers from one type to another. In this case, it converts from ENSEMBL IDs to Entrez IDs using the specified organism database org.Hs.eg.db.

kegg_enrichment <- enrichKEGG(gene = entrez_ids$ENTREZID, organism = 'hsa', pvalueCutoff = 0.05)

This line performs KEGG pathway enrichment analysis using the Entrez IDs of the significant genes. The enrichKEGG function is from the clusterProfiler package and uses a p-value cutoff of 0.05.

print(kegg_enrichment)

The results of the KEGG enrichment analysis are printed to the console.

write.csv(as.data.frame(kegg_enrichment), file = "/sandbox/new/KEGG_enrichment_results.csv")

Finally, the KEGG enrichment analysis results are written to a CSV file at the specified file path.
This code provides a complete workflow for analyzing RNA-Seq data for differential expression and then performing pathway enrichment analysis on the significant genes. It's important to note that the file paths and organism database (org.Hs.eg.db) should be adjusted to match the user's environment and species of interest.

Adding KEGG Pathway Annotation with TinyBio

TinyBio also aids in enhancing the code by incorporating KEGG pathway analysis:

# KEGG pathway enrichment analysis
entrez_ids <- bitr(sig_gene_ids, fromType = "ENSEMBL", toType = "ENTREZID", OrgDb = org.Hs.eg.db)
kegg_enrichment <- enrichKEGG(gene = entrez_ids$ENTREZID, organism = 'hsa', pvalueCutoff = 0.05)
print(kegg_enrichment)
write.csv(as.data.frame(kegg_enrichment), file = '/path/to/KEGG_enrichment_results.csv')

This addition elevates the basic analysis, providing a deeper layer of understanding by connecting genes to biological pathways.

Conclusion: Practical and Enhanced Coding with TinyBio

TinyBio demonstrates its utility in enhancing bioinformatics workflows, particularly in DESEQ2 code analysis. It's not just about coding faster; it's about making the code more insightful and easier to interpret, whether you're a seasoned expert or just starting out in bioinformatics.