Skip to content

Commit 46f5727

Browse files
committed
Support additional params for nimble append
1 parent 585b31a commit 46f5727

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

singlecell/resources/chunks/AppendNimble.R

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ for (datasetId in names(seuratObjects)) {
1919
for (genomeId in names(nimbleGenomes)) {
2020
maxAmbiguityAllowed <- nimbleGenomeAmbiguousPreference[[genomeId]]
2121
queryDatabaseForLineageUpdates <- queryDatabaseForLineageUpdatesPreference[[genomeId]]
22-
seuratObj <- Rdiscvr::DownloadAndAppendNimble(seuratObject = seuratObj, allowableGenomes = genomeId, ensureSamplesShareAllGenomes = ensureSamplesShareAllGenomes, targetAssayName = nimbleGenomes[[genomeId]], enforceUniqueFeatureNames = TRUE, maxAmbiguityAllowed = maxAmbiguityAllowed, maxLibrarySizeRatio = maxLibrarySizeRatio, queryDatabaseForLineageUpdates = queryDatabaseForLineageUpdates)
22+
replaceExistingAssayData <- replaceExistingAssayDataByGenome[[genomeId]]
23+
seuratObj <- Rdiscvr::DownloadAndAppendNimble(seuratObject = seuratObj, allowableGenomes = genomeId, ensureSamplesShareAllGenomes = ensureSamplesShareAllGenomes, targetAssayName = nimbleGenomes[[genomeId]], enforceUniqueFeatureNames = TRUE, maxAmbiguityAllowed = maxAmbiguityAllowed, maxLibrarySizeRatio = maxLibrarySizeRatio, queryDatabaseForLineageUpdates = queryDatabaseForLineageUpdates, replaceExistingAssayData = replaceExistingAssayData)
2324
}
2425

2526
saveData(seuratObj, datasetId)

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

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
1010
initComponent: function(){
1111
Ext4.apply(this, {
1212
style: 'padding: 10px;margins: 5px;',
13-
minWidth: 950,
13+
minWidth: 1025,
1414
border: true,
1515
items: [{
1616
html: 'This step will query nimble results for the selected genome(s). It will then append these results to the seurat object on the target assay.',
@@ -20,7 +20,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
2020
},{
2121
xtype: 'ldk-gridpanel',
2222
clicksToEdit: 1,
23-
width: 875,
23+
width: 1000,
2424
tbar: [{
2525
text: 'Add',
2626
handler: function(btn){
@@ -40,7 +40,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
4040
},LABKEY.ext4.GRIDBUTTONS.DELETERECORD()],
4141
store: {
4242
type: 'array',
43-
fields: ['genomeId', 'targetAssay','maxAmbiguityAllowed', 'queryDatabaseForLineageUpdates']
43+
fields: ['genomeId', 'targetAssay','maxAmbiguityAllowed', 'queryDatabaseForLineageUpdates', 'replaceExistingAssayData']
4444
},
4545
columns: [{
4646
dataIndex: 'genomeId',
@@ -86,6 +86,16 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
8686
allowBlank: true,
8787
value: false
8888
}
89+
},{
90+
dataIndex: 'replaceExistingAssayData',
91+
width: 150,
92+
header: 'Replace Existing Data?',
93+
editor: {
94+
xtype: 'checkbox',
95+
allowBlank: true,
96+
value: true
97+
}
98+
8999
}]
90100
}]
91101
});
@@ -96,7 +106,7 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
96106
getValue: function(){
97107
var ret = [];
98108
this.down('ldk-gridpanel').store.each(function(r, i) {
99-
ret.push([r.data.genomeId, r.data.targetAssay, r.data.maxAmbiguityAllowed ?? '', !!r.data.queryDatabaseForLineageUpdates]);
109+
ret.push([r.data.genomeId, r.data.targetAssay, r.data.maxAmbiguityAllowed ?? '', !!r.data.queryDatabaseForLineageUpdates], !!r.data.replaceExistingAssayData);
100110
}, this);
101111

102112
return Ext4.isEmpty(ret) ? null : JSON.stringify(ret);
@@ -133,7 +143,8 @@ Ext4.define('SingleCell.panel.NimbleAppendPanel', {
133143
genomeId: row[0],
134144
targetAssay: row[1],
135145
maxAmbiguityAllowed: row[2],
136-
queryDatabaseForLineageUpdates: !!row[3]
146+
queryDatabaseForLineageUpdates: !!row[3],
147+
replaceExistingAssayData: !!row[4]
137148
});
138149
grid.store.add(rec);
139150
}, this);

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

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ protected Chunk createParamChunk(SequenceOutputHandler.JobContext ctx, List<Seur
7777
for (int i = 0; i < json.length(); i++)
7878
{
7979
JSONArray arr = json.getJSONArray(i);
80-
if (arr.length() != 4)
80+
if (arr.length() != 5)
8181
{
8282
throw new PipelineJobException("Unexpected value: " + json.get(i));
8383
}
@@ -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() != 5)
100100
{
101101
throw new PipelineJobException("Unexpected value: " + json.getString(i));
102102
}
@@ -118,13 +118,32 @@ protected Chunk createParamChunk(SequenceOutputHandler.JobContext ctx, List<Seur
118118
for (int i = 0; i < json.length(); i++)
119119
{
120120
JSONArray arr = json.getJSONArray(i);
121-
if (arr.length() != 4)
121+
if (arr.length() != 5)
122122
{
123123
throw new PipelineJobException("Unexpected value: " + json.getString(i));
124124
}
125125

126126
int genomeId = arr.getInt(0);
127-
String valStr = arr.get(2) == null ? null : StringUtils.trimToNull(String.valueOf(arr.get(2)));
127+
String valStr = arr.get(3) == 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+
135+
ret.bodyLines.add("replaceExistingAssayDataByGenome <- list(");
136+
delim = "";
137+
for (int i = 0; i < json.length(); i++)
138+
{
139+
JSONArray arr = json.getJSONArray(i);
140+
if (arr.length() != 5)
141+
{
142+
throw new PipelineJobException("Unexpected value: " + json.getString(i));
143+
}
144+
145+
int genomeId = arr.getInt(0);
146+
String valStr = arr.get(4) == null ? null : StringUtils.trimToNull(String.valueOf(arr.get(2)));
128147
boolean val = Boolean.parseBoolean(valStr);
129148

130149
ret.bodyLines.add("\t" + delim + "'" + genomeId + "' = " + (val ? "TRUE" : "FALSE"));

0 commit comments

Comments
 (0)