Skip to content

Commit 7167fef

Browse files
committed
Create dedicated table for hashing labels
1 parent cf2d6c6 commit 7167fef

File tree

11 files changed

+102
-21
lines changed

11 files changed

+102
-21
lines changed

singlecell/resources/queries/singlecell/hashtag_oligos.sql

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CREATE TABLE singlecell.hashing_labels (
2+
rowid serial,
3+
name varchar(100),
4+
groupName varchar(100),
5+
markerLabel varchar(100),
6+
adaptersequence varchar(4000),
7+
barcodePattern varchar(100),
8+
9+
container entityid,
10+
created timestamp,
11+
createdby int,
12+
modified timestamp,
13+
modifiedby int,
14+
15+
constraint PK_hashing_labels PRIMARY KEY (rowid)
16+
);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CREATE TABLE singlecell.hashing_labels (
2+
rowid int IDENTITY(1,1),
3+
name nvarchar(100),
4+
groupName nvarchar(100),
5+
markerLabel nvarchar(100),
6+
adaptersequence nvarchar(4000),
7+
barcodePattern nvarchar(100),
8+
9+
container entityid,
10+
created datetime,
11+
createdby int,
12+
modified datetime,
13+
modifiedby int,
14+
15+
constraint PK_hashing_labels PRIMARY KEY (rowid)
16+
);

singlecell/resources/schemas/singlecell.xml

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,8 @@
158158
<columnTitle>Hashtag Oligo</columnTitle>
159159
<fk>
160160
<fkDbSchema>singlecell</fkDbSchema>
161-
<fkTable>hashtag_oligos</fkTable>
162-
<fkColumnName>tag_name</fkColumnName>
161+
<fkTable>hashing_labels</fkTable>
162+
<fkColumnName>name</fkColumnName>
163163
<fkDisplayColumnName useRawValue="true"/>
164164
</fk>
165165
</column>
@@ -551,4 +551,52 @@
551551
</column>
552552
</columns>
553553
</table>
554+
<table tableName="hashing_labels" tableDbType="TABLE" useColumnOrder="true">
555+
<javaCustomizer class="org.labkey.ldk.query.DefaultTableCustomizer" />
556+
<tableTitle>Cell Hashing Labels</tableTitle>
557+
<columns>
558+
<column columnName="rowid">
559+
<columnTitle>Row Id</columnTitle>
560+
<isHidden>true</isHidden>
561+
</column>
562+
<column columnName="name">
563+
<columnTitle>Name</columnTitle>
564+
</column>
565+
<column columnName="groupName">
566+
<columnTitle>Group Name</columnTitle>
567+
</column>
568+
<column columnName="adaptersequence">
569+
<columnTitle>Adapter Sequence</columnTitle>
570+
<inputType>textarea</inputType>
571+
</column>
572+
<column columnName="barcodePattern">
573+
<columnTitle>Barcode Pattern</columnTitle>
574+
</column>
575+
<column columnName="container">
576+
<isHidden>true</isHidden>
577+
</column>
578+
<column columnName="createdby">
579+
<isHidden>true</isHidden>
580+
</column>
581+
<column columnName="created">
582+
<isUserEditable>false</isUserEditable>
583+
<shownInInsertView>false</shownInInsertView>
584+
<shownInUpdateView>false</shownInUpdateView>
585+
<nullable>true</nullable>
586+
<scale>29</scale>
587+
<isHidden>true</isHidden>
588+
</column>
589+
<column columnName="modifiedby">
590+
<isHidden>true</isHidden>
591+
</column>
592+
<column columnName="modified">
593+
<isUserEditable>false</isUserEditable>
594+
<shownInInsertView>false</shownInInsertView>
595+
<shownInUpdateView>false</shownInUpdateView>
596+
<nullable>true</nullable>
597+
<scale>29</scale>
598+
<isHidden>true</isHidden>
599+
</column>
600+
</columns>
601+
</table>
554602
</tables>

singlecell/resources/web/singlecell/panel/PoolImportPanel.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,12 +256,16 @@ Ext4.define('SingleCell.panel.PoolImportPanel', {
256256
else if (type === 'MultiSeq') {
257257
return 'MS-' + val;
258258
}
259+
else if (type === 'BioLegend') {
260+
return 'BL-' + val;
261+
}
259262
}
260263
else if (val) {
261264
//Normalize hyphen use
262265
val = String(val);
263266
val = val.replace(/^MS(-)*/, 'MS-');
264267
val = val.replace(/^HTO(-)*/, 'HTO-');
268+
val = val.replace(/^BL(-)*/, 'BL-');
265269
}
266270

267271
return val;

singlecell/src/org/labkey/singlecell/CellHashingServiceImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -314,15 +314,15 @@ else if (distinctHTOs.size() == 1)
314314
support.cacheObject(READSET_TO_COUNTS_MAP, readsetToCountMap);
315315

316316
//infer groups:
317-
TableInfo hashtagOligos = QueryService.get().getUserSchema(job.getUser(), target, SingleCellSchema.NAME).getTable("hashtag_oligos");
317+
TableInfo hashtagOligos = QueryService.get().getUserSchema(job.getUser(), target, SingleCellSchema.NAME).getTable(SingleCellSchema.TABLE_HASHING_LABELS);
318318
Set<String> uniqueHashtagGroups = new HashSet<>();
319319
for (String hto : distinctHTOs)
320320
{
321321
String[] tokens = hto.split("<>");
322-
SimpleFilter filter = new SimpleFilter(FieldKey.fromString("tag_name"), tokens[0]);
323-
filter.addCondition(FieldKey.fromString("sequence"), tokens[1]);
322+
SimpleFilter filter = new SimpleFilter(FieldKey.fromString("name"), tokens[0]);
323+
filter.addCondition(FieldKey.fromString("adaptersequence"), tokens[1]);
324324

325-
TableSelector ts = new TableSelector(hashtagOligos, PageFlowUtil.set("group_name"), filter, null);
325+
TableSelector ts = new TableSelector(hashtagOligos, PageFlowUtil.set("groupname"), filter, null);
326326
if (ts.exists())
327327
{
328328
uniqueHashtagGroups.addAll(ts.getArrayList(String.class));
@@ -736,10 +736,10 @@ private void writeAllHashingBarcodes(Collection<String> groupNames, User u, Cont
736736
File output = getAllHashingBarcodesFile(webserverDir);
737737
try (CSVWriter writer = new CSVWriter(PrintWriters.getPrintWriter(output), ',', CSVWriter.NO_QUOTE_CHARACTER))
738738
{
739-
TableInfo ti = QueryService.get().getUserSchema(u, c, SingleCellSchema.SEQUENCE_SCHEMA_NAME).getTable(SingleCellSchema.TABLE_BARCODES, null);
740-
TableSelector ts = new TableSelector(ti, PageFlowUtil.set("sequence", "tag_name"), new SimpleFilter(FieldKey.fromString("group_name"), groupNames, CompareType.IN), new org.labkey.api.data.Sort("tag_name"));
739+
TableInfo ti = QueryService.get().getUserSchema(u, c, SingleCellSchema.NAME).getTable(SingleCellSchema.TABLE_HASHING_LABELS, null);
740+
TableSelector ts = new TableSelector(ti, PageFlowUtil.set("adaptersequence", "name", "groupName", "barcodePattern"), new SimpleFilter(FieldKey.fromString("groupname"), groupNames, CompareType.IN), new org.labkey.api.data.Sort("tag_name"));
741741
ts.forEachResults(rs -> {
742-
writer.writeNext(new String[]{rs.getString(FieldKey.fromString("sequence")), rs.getString(FieldKey.fromString("tag_name"))});
742+
writer.writeNext(new String[]{rs.getString(FieldKey.fromString("adaptersequence")), rs.getString(FieldKey.fromString("name")), rs.getString(FieldKey.fromString("groupName")), rs.getString(FieldKey.fromString("barcodePattern"))});
743743
});
744744
}
745745
catch (IOException e)

singlecell/src/org/labkey/singlecell/SingleCellModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public String getName()
5757
@Override
5858
public @Nullable Double getSchemaVersion()
5959
{
60-
return 20.002;
60+
return 20.003;
6161
}
6262

6363
@Override

singlecell/src/org/labkey/singlecell/SingleCellProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ public List<NavItem> getSettingsItems(Container c, User u)
112112
new SimpleSettingsItem(this, SingleCellSchema.NAME, "stim_types", NAME, "Peptides/Stims"),
113113
new SimpleSettingsItem(this, SingleCellSchema.NAME, "assay_types", NAME, "Single Cell Assay Types"),
114114
new SimpleSettingsItem(this, SingleCellSchema.NAME, SingleCellSchema.TABLE_CITE_SEQ_ANTIBODIES, NAME, "CITE-seq Antibodies"),
115-
new SimpleSettingsItem(this, SingleCellSchema.NAME, SingleCellSchema.TABLE_CITE_SEQ_PANELS, NAME, "CITE-seq Panels")
115+
new SimpleSettingsItem(this, SingleCellSchema.NAME, SingleCellSchema.TABLE_CITE_SEQ_PANELS, NAME, "CITE-seq Panels"),
116+
new SimpleSettingsItem(this, SingleCellSchema.NAME, SingleCellSchema.TABLE_HASHING_LABELS, NAME, "Cell Hashing Labels")
116117
);
117118
}
118119

singlecell/src/org/labkey/singlecell/SingleCellSchema.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ public class SingleCellSchema
2929
public static final String TABLE_SAMPLES = "samples";
3030
public static final String TABLE_CDNAS = "cdna_libraries";
3131
public static final String TABLE_CITE_SEQ_ANTIBODIES = "citeseq_antibodies";
32+
public static final String TABLE_HASHING_LABELS = "hashing_labels";
3233
public static final String TABLE_CITE_SEQ_PANELS = "citeseq_panels";
3334
public static final String TABLE_STIM_TYPES = "stim_types";
3435
public static final String TABLE_ASSAY_TYPES = "assay_types";
3536

3637
public static final String SEQUENCE_SCHEMA_NAME = "sequenceanalysis";
3738
public static final String TABLE_READSETS = "sequence_readsets";
38-
public static final String TABLE_BARCODES = "barcodes";
3939
public static final String TABLE_QUALITY_METRICS = "quality_metrics";
4040

4141
public static SingleCellSchema getInstance()

singlecell/src/org/labkey/singlecell/SingleCellUserSchema.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@ protected TableInfo createWrappedTable(String name, @NotNull TableInfo sourceTab
4545
{
4646
return new ContainerScopedTable<>(this, sourceTable, cf, "antibodyName").init();
4747
}
48+
else if (SingleCellSchema.TABLE_HASHING_LABELS.equalsIgnoreCase(name))
49+
{
50+
return new ContainerScopedTable<>(this, sourceTable, cf, "name").init();
51+
}
4852
else if (SingleCellSchema.TABLE_STIM_TYPES.equalsIgnoreCase(name))
4953
{
5054
return new ContainerScopedTable<>(this, sourceTable, cf, "name").init();

0 commit comments

Comments
 (0)