|
3 | 3 | import org.apache.commons.io.FileUtils; |
4 | 4 | import org.apache.commons.lang3.StringUtils; |
5 | 5 | import org.apache.log4j.Logger; |
| 6 | +import org.biojava3.core.exceptions.CompoundNotFoundError; |
6 | 7 | import org.biojava3.core.sequence.DNASequence; |
7 | 8 | import org.labkey.api.collections.CaseInsensitiveHashMap; |
8 | 9 | import org.labkey.api.data.CompareType; |
@@ -198,9 +199,28 @@ public void updateBarcodeRC(final ModuleContext moduleContext) |
198 | 199 | ts.forEachResults(rs -> { |
199 | 200 | Map<String, Object> r = new CaseInsensitiveHashMap<>(); |
200 | 201 | 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 | + } |
204 | 224 | }); |
205 | 225 |
|
206 | 226 | toUpdate.forEach(row -> { |
|
0 commit comments