Skip to content

Commit 89a474d

Browse files
committed
Properly reverse complement barcodes if data contains comma-separated multi-barcode entries
1 parent 9a99cb3 commit 89a474d

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequenceAnalysisUpgradeCode.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.apache.commons.io.FileUtils;
44
import org.apache.commons.lang3.StringUtils;
55
import org.apache.log4j.Logger;
6+
import org.biojava3.core.exceptions.CompoundNotFoundError;
67
import org.biojava3.core.sequence.DNASequence;
78
import org.labkey.api.collections.CaseInsensitiveHashMap;
89
import org.labkey.api.data.CompareType;
@@ -198,9 +199,28 @@ public void updateBarcodeRC(final ModuleContext moduleContext)
198199
ts.forEachResults(rs -> {
199200
Map<String, Object> r = new CaseInsensitiveHashMap<>();
200201
r.put("tag_name", rs.getString(FieldKey.fromString("tag_name")));
201-
DNASequence seq = new DNASequence(rs.getString(FieldKey.fromString("sequence")));
202-
r.put("reverse_complement", seq.getReverseComplement().getSequenceAsString());
203-
toUpdate.add(r);
202+
if (StringUtils.isEmpty(rs.getString(FieldKey.fromString("sequence"))))
203+
{
204+
return;
205+
}
206+
207+
try
208+
{
209+
String[] sequences = rs.getString(FieldKey.fromString("sequence")).split(",");
210+
List<String> rcs = new ArrayList<>();
211+
for (String s : sequences)
212+
{
213+
DNASequence seq = new DNASequence(s);
214+
rcs.add(seq.getReverseComplement().getSequenceAsString());
215+
}
216+
217+
r.put("reverse_complement", StringUtils.join(rcs, ","));
218+
toUpdate.add(r);
219+
}
220+
catch (CompoundNotFoundError e)
221+
{
222+
_log.error("Unable to reverse complement barcode: " + rs.getString(FieldKey.fromString("sequence")), e);
223+
}
204224
});
205225

206226
toUpdate.forEach(row -> {

0 commit comments

Comments
 (0)