Skip to content

Commit 22034c2

Browse files
committed
Allow nimble append to support queryDatabaseForLineageUpdates
1 parent 5a5740f commit 22034c2

File tree

3 files changed

+36
-6
lines changed

3 files changed

+36
-6
lines changed

singlecell/resources/chunks/AppendNimble.R

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ for (datasetId in names(seuratObjects)) {
1717
seuratObj <- readSeuratRDS(seuratObjects[[datasetId]])
1818

1919
for (genomeId in names(nimbleGenomes)) {
20-
maxAmbiguityAllowed <- !nimbleGenomeAmbiguousPreference[[genomeId]]
21-
seuratObj <- Rdiscvr::DownloadAndAppendNimble(seuratObject = seuratObj, allowableGenomes = genomeId, ensureSamplesShareAllGenomes = ensureSamplesShareAllGenomes, targetAssayName = nimbleGenomes[[genomeId]], enforceUniqueFeatureNames = TRUE, maxAmbiguityAllowed = maxAmbiguityAllowed, maxLibrarySizeRatio = maxLibrarySizeRatio)
20+
maxAmbiguityAllowed <- nimbleGenomeAmbiguousPreference[[genomeId]]
21+
queryDatabaseForLineageUpdates <- queryDatabaseForLineageUpdatesPreference[[genomeId]]
22+
seuratObj <- Rdiscvr::DownloadAndAppendNimble(seuratObject = seuratObj, allowableGenomes = genomeId, ensureSamplesShareAllGenomes = ensureSamplesShareAllGenomes, targetAssayName = nimbleGenomes[[genomeId]], enforceUniqueFeatureNames = TRUE, maxAmbiguityAllowed = maxAmbiguityAllowed, maxLibrarySizeRatio = maxLibrarySizeRatio, queryDatabaseForLineageUpdates = queryDatabaseForLineageUpdates)
2223
}
2324

2425
saveData(seuratObj, datasetId)

singlecell/resources/web/singlecell/panel/NimbleAppendPanel.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
4040
},LABKEY.ext4.GRIDBUTTONS.DELETERECORD()],
4141
store: {
4242
type: 'array',
43-
fields: ['genomeId', 'targetAssay','maxAmbiguityAllowed']
43+
fields: ['genomeId', 'targetAssay','maxAmbiguityAllowed', 'queryDatabaseForLineageUpdates']
4444
},
4545
columns: [{
4646
dataIndex: 'genomeId',
@@ -77,6 +77,15 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
7777
allowBlank: true,
7878
minValue: 0
7979
}
80+
},{
81+
dataIndex: 'queryDatabaseForLineageUpdates',
82+
width: 175,
83+
header: 'Check for Lineage Updates',
84+
editor: {
85+
xtype: 'checkbox',
86+
allowBlank: true,
87+
value: false
88+
}
8089
}]
8190
}]
8291
});
@@ -87,7 +96,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
8796
getValue: function(){
8897
var ret = [];
8998
this.down('ldk-gridpanel').store.each(function(r, i) {
90-
ret.push([r.data.genomeId, r.data.targetAssay, r.data.maxAmbiguityAllowed ?? '']);
99+
ret.push([r.data.genomeId, r.data.targetAssay, r.data.maxAmbiguityAllowed ?? '', !!r.data.queryDatabaseForLineageUpdates]);
91100
}, this);
92101

93102
return Ext4.isEmpty(ret) ? null : JSON.stringify(ret);
@@ -123,7 +132,8 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
123132
var rec = grid.store.createModel({
124133
genomeId: row[0],
125134
targetAssay: row[1],
126-
maxAmbiguityAllowed: row[2]
135+
maxAmbiguityAllowed: row[2],
136+
queryDatabaseForLineageUpdates: !!row[3]
127137
});
128138
grid.store.add(rec);
129139
}, this);

singlecell/src/org/labkey/singlecell/pipeline/singlecell/AppendNimble.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ protected Chunk createParamChunk(SequenceOutputHandler.JobContext ctx, List<Seur
9696
for (int i = 0; i < json.length(); i++)
9797
{
9898
JSONArray arr = json.getJSONArray(i);
99-
if (arr.length() != 3)
99+
if (arr.length() < 3)
100100
{
101101
throw new PipelineJobException("Unexpected value: " + json.getString(i));
102102
}
@@ -113,6 +113,25 @@ protected Chunk createParamChunk(SequenceOutputHandler.JobContext ctx, List<Seur
113113
}
114114
ret.bodyLines.add(")");
115115

116+
ret.bodyLines.add("queryDatabaseForLineageUpdatesPreference <- list(");
117+
delim = "";
118+
for (int i = 0; i < json.length(); i++)
119+
{
120+
JSONArray arr = json.getJSONArray(i);
121+
if (arr.length() != 4)
122+
{
123+
throw new PipelineJobException("Unexpected value: " + json.getString(i));
124+
}
125+
126+
int genomeId = arr.getInt(0);
127+
String valStr = arr.get(2) == null ? null : StringUtils.trimToNull(String.valueOf(arr.get(2)));
128+
boolean val = Boolean.parseBoolean(valStr);
129+
130+
ret.bodyLines.add("\t" + delim + "'" + genomeId + "' = " + (val ? "TRUE" : "FALSE"));
131+
delim = ",";
132+
}
133+
ret.bodyLines.add(")");
134+
116135
return ret;
117136
}
118137

0 commit comments

Comments
 (0)