Skip to content

Commit ecabbe8

Browse files
committed
Add mapping for dbxrefs and notes.
1 parent c0a24db commit ecabbe8

3 files changed

Lines changed: 96 additions & 12 deletions

File tree

src/main/java/org/biojava/nbio/adam/convert/DnaSequenceToFeatures.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.bdgenomics.convert.ConversionException;
3939
import org.bdgenomics.convert.ConversionStringency;
4040

41+
import org.bdgenomics.formats.avro.Dbxref;
4142
import org.bdgenomics.formats.avro.Feature;
4243
import org.bdgenomics.formats.avro.Strand;
4344

@@ -141,19 +142,46 @@ else if (feature.getDescription() != null) {
141142
fb.clearName();
142143
}
143144

145+
// /db_xref= --> feature.dbxrefs
146+
List<String> notes = new ArrayList<String>();
147+
// /note= --> feature.notes
148+
List<Dbxref> dbxrefs = new ArrayList<Dbxref>();
149+
// remaining qualifiers
144150
Map<String, String> attributes = new HashMap<String, String>();
145151
Map<String, List<Qualifier>> qualifiers = feature.getQualifiers();
152+
146153
for (Map.Entry<String, List<Qualifier>> entry : qualifiers.entrySet()) {
147154
String key = entry.getKey();
148155
List<Qualifier> value = entry.getValue();
149156
StringBuilder sb = new StringBuilder();
150157
for (Iterator<Qualifier> i = value.iterator(); i.hasNext(); ) {
151-
sb.append(trimNewlines(i.next().getValue()));
152-
if (i.hasNext()) {
153-
sb.append(",");
158+
String stringValue = trimNewlines(i.next().getValue());
159+
160+
if ("db_xref".equals(key)) {
161+
String[] tokens = stringValue.split(":");
162+
if (tokens.length == 2) {
163+
dbxrefs.add(new Dbxref(tokens[0], tokens[1]));
164+
}
165+
}
166+
else if ("note".equals(key)) {
167+
notes.add(stringValue);
168+
}
169+
else {
170+
sb.append(stringValue);
171+
if (i.hasNext()) {
172+
sb.append(",");
173+
}
154174
}
155175
}
156-
attributes.put(key, sb.toString());
176+
if ("db_xref".equals(key)) {
177+
fb.setDbxrefs(dbxrefs);
178+
}
179+
else if ("note".equals(key)) {
180+
fb.setNotes(notes);
181+
}
182+
else {
183+
attributes.put(key, sb.toString());
184+
}
157185
}
158186
if (!attributes.isEmpty()) {
159187
fb.setAttributes(attributes);

src/main/java/org/biojava/nbio/adam/convert/ProteinSequenceToFeatures.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.bdgenomics.convert.ConversionException;
3939
import org.bdgenomics.convert.ConversionStringency;
4040

41+
import org.bdgenomics.formats.avro.Dbxref;
4142
import org.bdgenomics.formats.avro.Feature;
4243
import org.bdgenomics.formats.avro.Strand;
4344

@@ -141,19 +142,46 @@ else if (feature.getDescription() != null) {
141142
fb.clearName();
142143
}
143144

145+
// /db_xref= --> feature.dbxrefs
146+
List<String> notes = new ArrayList<String>();
147+
// /note= --> feature.notes
148+
List<Dbxref> dbxrefs = new ArrayList<Dbxref>();
149+
// remaining qualifiers
144150
Map<String, String> attributes = new HashMap<String, String>();
145151
Map<String, List<Qualifier>> qualifiers = feature.getQualifiers();
152+
146153
for (Map.Entry<String, List<Qualifier>> entry : qualifiers.entrySet()) {
147154
String key = entry.getKey();
148155
List<Qualifier> value = entry.getValue();
149156
StringBuilder sb = new StringBuilder();
150157
for (Iterator<Qualifier> i = value.iterator(); i.hasNext(); ) {
151-
sb.append(trimNewlines(i.next().getValue()));
152-
if (i.hasNext()) {
153-
sb.append(",");
158+
String stringValue = trimNewlines(i.next().getValue());
159+
160+
if ("db_xref".equals(key)) {
161+
String[] tokens = stringValue.split(":");
162+
if (tokens.length == 2) {
163+
dbxrefs.add(new Dbxref(tokens[0], tokens[1]));
164+
}
165+
}
166+
else if ("note".equals(key)) {
167+
notes.add(stringValue);
168+
}
169+
else {
170+
sb.append(stringValue);
171+
if (i.hasNext()) {
172+
sb.append(",");
173+
}
154174
}
155175
}
156-
attributes.put(key, sb.toString());
176+
if ("db_xref".equals(key)) {
177+
fb.setDbxrefs(dbxrefs);
178+
}
179+
else if ("note".equals(key)) {
180+
fb.setNotes(notes);
181+
}
182+
else {
183+
attributes.put(key, sb.toString());
184+
}
157185
}
158186
if (!attributes.isEmpty()) {
159187
fb.setAttributes(attributes);

src/main/java/org/biojava/nbio/adam/convert/RnaSequenceToFeatures.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.bdgenomics.convert.ConversionException;
3939
import org.bdgenomics.convert.ConversionStringency;
4040

41+
import org.bdgenomics.formats.avro.Dbxref;
4142
import org.bdgenomics.formats.avro.Feature;
4243
import org.bdgenomics.formats.avro.Strand;
4344

@@ -141,19 +142,46 @@ else if (feature.getDescription() != null) {
141142
fb.clearName();
142143
}
143144

145+
// /db_xref= --> feature.dbxrefs
146+
List<String> notes = new ArrayList<String>();
147+
// /note= --> feature.notes
148+
List<Dbxref> dbxrefs = new ArrayList<Dbxref>();
149+
// remaining qualifiers
144150
Map<String, String> attributes = new HashMap<String, String>();
145151
Map<String, List<Qualifier>> qualifiers = feature.getQualifiers();
152+
146153
for (Map.Entry<String, List<Qualifier>> entry : qualifiers.entrySet()) {
147154
String key = entry.getKey();
148155
List<Qualifier> value = entry.getValue();
149156
StringBuilder sb = new StringBuilder();
150157
for (Iterator<Qualifier> i = value.iterator(); i.hasNext(); ) {
151-
sb.append(trimNewlines(i.next().getValue()));
152-
if (i.hasNext()) {
153-
sb.append(",");
158+
String stringValue = trimNewlines(i.next().getValue());
159+
160+
if ("db_xref".equals(key)) {
161+
String[] tokens = stringValue.split(":");
162+
if (tokens.length == 2) {
163+
dbxrefs.add(new Dbxref(tokens[0], tokens[1]));
164+
}
165+
}
166+
else if ("note".equals(key)) {
167+
notes.add(stringValue);
168+
}
169+
else {
170+
sb.append(stringValue);
171+
if (i.hasNext()) {
172+
sb.append(",");
173+
}
154174
}
155175
}
156-
attributes.put(key, sb.toString());
176+
if ("db_xref".equals(key)) {
177+
fb.setDbxrefs(dbxrefs);
178+
}
179+
else if ("note".equals(key)) {
180+
fb.setNotes(notes);
181+
}
182+
else {
183+
attributes.put(key, sb.toString());
184+
}
157185
}
158186
if (!attributes.isEmpty()) {
159187
fb.setAttributes(attributes);

0 commit comments

Comments
 (0)