lobster-transcriptomics 1.2.1__tar.gz → 1.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lobster_transcriptomics-1.2.1/lobster_transcriptomics.egg-info → lobster_transcriptomics-1.2.2}/PKG-INFO +1 -1
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/de_analysis_expert.py +20 -16
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2/lobster_transcriptomics.egg-info}/PKG-INFO +1 -1
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/pyproject.toml +1 -1
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/LICENSE +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/README.md +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/__init__.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/annotation_expert.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/config.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/prompts.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/py.typed +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/shared_tools.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/state.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/agents/transcriptomics/transcriptomics_expert.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/figure_template_providers/sc.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/analysis/bulk_preprocessing_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/analysis/differential_formula_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/analysis/enhanced_singlecell_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/analysis/pseudobulk_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/metadata/manual_annotation_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/quality/preprocessing_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/quality/quality_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/templates/annotation_templates.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster/services/visualization/bulk_visualization_service.py +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster_transcriptomics.egg-info/SOURCES.txt +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster_transcriptomics.egg-info/dependency_links.txt +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster_transcriptomics.egg-info/entry_points.txt +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster_transcriptomics.egg-info/requires.txt +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/lobster_transcriptomics.egg-info/top_level.txt +0 -0
- {lobster_transcriptomics-1.2.1 → lobster_transcriptomics-1.2.2}/setup.cfg +0 -0
|
@@ -1109,7 +1109,9 @@ def de_analysis_expert(
|
|
|
1109
1109
|
status = (
|
|
1110
1110
|
"OK"
|
|
1111
1111
|
if count >= 4
|
|
1112
|
-
else "LOW POWER"
|
|
1112
|
+
else "LOW POWER"
|
|
1113
|
+
if count >= 3
|
|
1114
|
+
else "INSUFFICIENT"
|
|
1113
1115
|
)
|
|
1114
1116
|
response += f"\n- {group}: {count} replicates ({status})"
|
|
1115
1117
|
response += _replicate_summary_text(replicate_validation)
|
|
@@ -1459,13 +1461,13 @@ def de_analysis_expert(
|
|
|
1459
1461
|
|
|
1460
1462
|
**Analysis Results:**
|
|
1461
1463
|
- Comparison: {group1} ({group1_count} samples) vs {group2} ({group2_count} samples)
|
|
1462
|
-
- Method: {de_stats[
|
|
1463
|
-
- Genes tested: {de_stats[
|
|
1464
|
-
- Significant genes (padj < {alpha}): {de_stats[
|
|
1464
|
+
- Method: {de_stats["method"]}
|
|
1465
|
+
- Genes tested: {de_stats["n_genes_tested"]:,}
|
|
1466
|
+
- Significant genes (padj < {alpha}): {de_stats["n_significant_genes"]:,}
|
|
1465
1467
|
|
|
1466
1468
|
**Differential Expression Summary:**
|
|
1467
|
-
- Upregulated in {group2}: {de_stats[
|
|
1468
|
-
- Downregulated in {group2}: {de_stats[
|
|
1469
|
+
- Upregulated in {group2}: {de_stats["n_upregulated"]} genes
|
|
1470
|
+
- Downregulated in {group2}: {de_stats["n_downregulated"]} genes
|
|
1469
1471
|
|
|
1470
1472
|
**Top Upregulated Genes:**
|
|
1471
1473
|
{chr(10).join([f"- {gene}" for gene in de_stats["top_upregulated"][:5]])}
|
|
@@ -1925,7 +1927,9 @@ def de_analysis_expert(
|
|
|
1925
1927
|
status = (
|
|
1926
1928
|
"OK"
|
|
1927
1929
|
if count >= 4
|
|
1928
|
-
else "LOW POWER"
|
|
1930
|
+
else "LOW POWER"
|
|
1931
|
+
if count >= 3
|
|
1932
|
+
else "INSUFFICIENT"
|
|
1929
1933
|
)
|
|
1930
1934
|
response += f"- {group}: {count} replicates ({status})\n"
|
|
1931
1935
|
response += _replicate_summary_text(replicate_validation)
|
|
@@ -3117,7 +3121,7 @@ def de_analysis_expert(
|
|
|
3117
3121
|
"results_df = results_df.sort_values({{ sort_by | string | repr }})\n"
|
|
3118
3122
|
"results_df.to_{{ output_format }}({{ output_path | string | repr }}, index=True)"
|
|
3119
3123
|
),
|
|
3120
|
-
imports=["pandas"],
|
|
3124
|
+
imports=["import pandas as pd"],
|
|
3121
3125
|
)
|
|
3122
3126
|
|
|
3123
3127
|
data_manager.log_tool_usage(
|
|
@@ -3144,8 +3148,8 @@ def de_analysis_expert(
|
|
|
3144
3148
|
- Sorted by: {sort_by}
|
|
3145
3149
|
- Output: {output_path}
|
|
3146
3150
|
|
|
3147
|
-
**Columns:** {
|
|
3148
|
-
**Filtered only:** {
|
|
3151
|
+
**Columns:** {", ".join(results_df.columns.tolist()[:8])}{"..." if len(results_df.columns) > 8 else ""}
|
|
3152
|
+
**Filtered only:** {"Yes" if filtered_only else "No"}"""
|
|
3149
3153
|
|
|
3150
3154
|
return response
|
|
3151
3155
|
|
|
@@ -3331,7 +3335,7 @@ def de_analysis_expert(
|
|
|
3331
3335
|
**Method:** DESeq2-like bulk differential expression
|
|
3332
3336
|
|
|
3333
3337
|
**Results:**
|
|
3334
|
-
- Genes tested: {de_stats.get(
|
|
3338
|
+
- Genes tested: {de_stats.get("n_genes_tested", "N/A"):,}
|
|
3335
3339
|
- Significant genes (padj < {alpha}): {n_sig:,}
|
|
3336
3340
|
- Upregulated in {group2}: {n_up:,}
|
|
3337
3341
|
- Downregulated in {group2}: {n_down:,}
|
|
@@ -3540,7 +3544,7 @@ def de_analysis_expert(
|
|
|
3540
3544
|
- DE results: {de_results_key}
|
|
3541
3545
|
- Ranking metric: {ranking_metric}
|
|
3542
3546
|
- Genes ranked: {len(ranked_df):,}
|
|
3543
|
-
- Databases: {
|
|
3547
|
+
- Databases: {", ".join(db_list)}
|
|
3544
3548
|
- Organism: {organism}
|
|
3545
3549
|
|
|
3546
3550
|
**Results:**
|
|
@@ -3801,7 +3805,7 @@ def de_analysis_expert(
|
|
|
3801
3805
|
"results_df = results_df.sort_values('padj')\n"
|
|
3802
3806
|
"results_df.to_{{ output_format }}({{ output_path | string | repr }}, index=True)"
|
|
3803
3807
|
),
|
|
3804
|
-
imports=["pandas"],
|
|
3808
|
+
imports=["import pandas as pd"],
|
|
3805
3809
|
)
|
|
3806
3810
|
|
|
3807
3811
|
data_manager.log_tool_usage(
|
|
@@ -3833,10 +3837,10 @@ def de_analysis_expert(
|
|
|
3833
3837
|
- Format: {output_format.upper()}
|
|
3834
3838
|
- Output: {output_path}
|
|
3835
3839
|
|
|
3836
|
-
**LFC Shrinkage:** {
|
|
3837
|
-
{f
|
|
3840
|
+
**LFC Shrinkage:** {"Applied" if shrinkage_applied else "Not applied"}
|
|
3841
|
+
{f"- Note: {shrinkage_note}" if shrinkage_note else ""}
|
|
3838
3842
|
|
|
3839
|
-
**Publication Columns:** {
|
|
3843
|
+
**Publication Columns:** {", ".join(pub_cols)}
|
|
3840
3844
|
|
|
3841
3845
|
**File ready for publication supplementary tables.**"""
|
|
3842
3846
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "lobster-transcriptomics"
|
|
7
|
-
version = "1.2.
|
|
7
|
+
version = "1.2.2"
|
|
8
8
|
description = "Transcriptomics agents for Lobster AI - single-cell and bulk RNA-seq analysis"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "AGPL-3.0-or-later"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|