Skip to content

Commit 93c1c8f

Browse files
committed
Handle more missing fields in struct_ref_seq
1 parent e170fc9 commit 93c1c8f

1 file changed

Lines changed: 30 additions & 25 deletions

File tree

biojava-structure/src/main/java/org/biojava/nbio/structure/io/cif/CifStructureConsumerImpl.java

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -975,7 +975,7 @@ public void consumeStructRefSeq(StructRefSeq structRefSeq) {
975975
dbRef.setIdCode(structRefSeq.getPdbxPDBIdCode().isDefined()? structRefSeq.getPdbxPDBIdCode().get(rowIndex):null);
976976
dbRef.setDbAccession(structRefSeq.getPdbxDbAccession().isDefined()? structRefSeq.getPdbxDbAccession().get(rowIndex):null);
977977
dbRef.setDbIdCode(structRefSeq.getPdbxDbAccession().isDefined()? structRefSeq.getPdbxDbAccession().get(rowIndex):null);
978-
dbRef.setChainName(structRefSeq.getPdbxStrandId().get(rowIndex));
978+
dbRef.setChainName(structRefSeq.getPdbxStrandId().isDefined()? structRefSeq.getPdbxStrandId().get(rowIndex):null);
979979

980980
OptionalInt structRefRowIndex = IntStream.range(0, structRef.getRowCount())
981981
.filter(i -> structRef.getId().get(i).equals(refId))
@@ -990,34 +990,39 @@ public void consumeStructRefSeq(StructRefSeq structRefSeq) {
990990

991991
int seqBegin;
992992
int seqEnd;
993+
char beginInsCode = ' ';
994+
char endInsCode = ' ';
993995

994-
try {
995-
seqBegin = Integer.parseInt(structRefSeq.getPdbxAuthSeqAlignBeg().get(rowIndex));
996-
seqEnd = Integer.parseInt(structRefSeq.getPdbxAuthSeqAlignEnd().get(rowIndex));
997-
} catch (NumberFormatException e) {
998-
// this happens in a few entries, annotation error? e.g. 6eoj
999-
logger.warn("Couldn't parse pdbx_auth_seq_align_beg/end in _struct_ref_seq. Will not store dbref " +
1000-
"alignment info for accession {}. Error: {}", dbRef.getDbAccession(), e.getMessage());
1001-
return;
1002-
}
996+
if (structRefSeq.getPdbxAuthSeqAlignBeg().isDefined() && structRefSeq.getPdbxAuthSeqAlignEnd().isDefined()) {
997+
try {
998+
seqBegin = Integer.parseInt(structRefSeq.getPdbxAuthSeqAlignBeg().get(rowIndex));
999+
seqEnd = Integer.parseInt(structRefSeq.getPdbxAuthSeqAlignEnd().get(rowIndex));
1000+
} catch (NumberFormatException e) {
1001+
// this happens in a few entries, annotation error? e.g. 6eoj
1002+
logger.warn("Couldn't parse pdbx_auth_seq_align_beg/end in _struct_ref_seq. Will not store dbref " +
1003+
"alignment info for accession {}. Error: {}", dbRef.getDbAccession(), e.getMessage());
1004+
return;
1005+
}
10031006

1004-
char beginInsCode = ' ';
1005-
String pdbxSeqAlignBegInsCode = structRefSeq.getPdbxSeqAlignBegInsCode().get(rowIndex);
1006-
if (pdbxSeqAlignBegInsCode.length() > 0) {
1007-
beginInsCode = pdbxSeqAlignBegInsCode.charAt(0);
1008-
}
1007+
String pdbxSeqAlignBegInsCode = structRefSeq.getPdbxSeqAlignBegInsCode().get(rowIndex);
1008+
if (pdbxSeqAlignBegInsCode.length() > 0) {
1009+
beginInsCode = pdbxSeqAlignBegInsCode.charAt(0);
1010+
}
10091011

1010-
char endInsCode = ' ';
1011-
String pdbxSeqAlignEndInsCode = structRefSeq.getPdbxSeqAlignEndInsCode().get(rowIndex);
1012-
if (pdbxSeqAlignEndInsCode.length() > 0) {
1013-
endInsCode = pdbxSeqAlignEndInsCode.charAt(0);
1014-
}
1012+
String pdbxSeqAlignEndInsCode = structRefSeq.getPdbxSeqAlignEndInsCode().get(rowIndex);
1013+
if (pdbxSeqAlignEndInsCode.length() > 0) {
1014+
endInsCode = pdbxSeqAlignEndInsCode.charAt(0);
1015+
}
10151016

1016-
if (beginInsCode == '?') {
1017-
beginInsCode = ' ';
1018-
}
1019-
if (endInsCode == '?') {
1020-
endInsCode = ' ';
1017+
if (beginInsCode == '?') {
1018+
beginInsCode = ' ';
1019+
}
1020+
if (endInsCode == '?') {
1021+
endInsCode = ' ';
1022+
}
1023+
} else {
1024+
seqBegin = structRefSeq.getSeqAlignBeg().get(rowIndex);
1025+
seqEnd = structRefSeq.getSeqAlignEnd().get(rowIndex);
10211026
}
10221027

10231028
dbRef.setSeqBegin(seqBegin);

0 commit comments

Comments
 (0)