Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -310,6 +310,18 @@ public void newStructSite(StructSite site) {
public void newEntityPoly(EntityPoly entityPoly) {


}

@Override
public void newPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history) {
// TODO Auto-generated method stub

}

@Override
public void newPdbxDatabaseStatus(PdbxDatabaseStatus status) {
// TODO Auto-generated method stub

}
}

Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ public interface MMcifConsumer {
public void newStructRefSeqDif(StructRefSeqDif sref);
public void newStructSite(StructSite sref);
public void newStructSiteGen(StructSiteGen sref);
public void newPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history);
public void newPdbxDatabaseStatus(PdbxDatabaseStatus status);
public void newPdbxPolySeqScheme(PdbxPolySeqScheme ppss);
public void newPdbxNonPolyScheme(PdbxNonPolyScheme ppss);
public void newPdbxEntityNonPoly(PdbxEntityNonPoly pen);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,4 +259,16 @@ public FileParsingParameters getFileParsingParameters() {
public Map<String,List<MetalBondDistance>> getDefinitions(){
return definitions;
}

@Override
public void newPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history) {
// TODO Auto-generated method stub

}

@Override
public void newPdbxDatabaseStatus(PdbxDatabaseStatus status) {
// TODO Auto-generated method stub

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,10 @@
import org.biojava.nbio.structure.io.mmcif.model.EntitySrcNat;
import org.biojava.nbio.structure.io.mmcif.model.EntitySrcSyn;
import org.biojava.nbio.structure.io.mmcif.model.Exptl;
import org.biojava.nbio.structure.io.mmcif.model.PdbxAuditRevisionHistory;
import org.biojava.nbio.structure.io.mmcif.model.PdbxChemCompDescriptor;
import org.biojava.nbio.structure.io.mmcif.model.PdbxChemCompIdentifier;
import org.biojava.nbio.structure.io.mmcif.model.PdbxDatabaseStatus;
import org.biojava.nbio.structure.io.mmcif.model.PdbxEntityNonPoly;
import org.biojava.nbio.structure.io.mmcif.model.PdbxNonPolyScheme;
import org.biojava.nbio.structure.io.mmcif.model.PdbxPolySeqScheme;
Expand Down Expand Up @@ -1413,6 +1415,68 @@ public void newDatabasePDBrev(DatabasePDBrev dbrev) {

structure.setPDBHeader(header);
}

@Override
public void newPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history) {

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
PDBHeader header = structure.getPDBHeader();

if ( header == null) {
header = new PDBHeader();
}

// first entry in revision history is the release date
if (history.getOrdinal().equals("1")){
try {
Date releaseDate = dateFormat.parse(history.getRevision_date());
// TODO uncomment when setRelDate method has been implemented
// header.setRelDate(releaseDate));
} catch (ParseException e){
logger.warn("Could not parse date string '{}', release date will be unavailable", history.getRevision_date());
}
} else {
// all other dates are revision dates;
// since this method may be called multiple times,
// the last revision date will "stick"
try {
Date revisionDate = dateFormat.parse(history.getRevision_date());
header.setModDate(revisionDate);
} catch (ParseException e){
logger.warn("Could not parse date string '{}', revision date will be unavailable", history.getRevision_date());
}
}

structure.setPDBHeader(header);
}

@Override
public void newPdbxDatabaseStatus(PdbxDatabaseStatus status) {

// the deposition date field is only available in mmCIF 5.0

if (status.getRecvd_initial_deposition_date() == null) {
// skip this method for older mmCIF versions
return;
}

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
PDBHeader header = structure.getPDBHeader();

if (header == null) {
header = new PDBHeader();
}

// first entry in revision history is the release date
try {
Date depositionDate = dateFormat.parse(status.getRecvd_initial_deposition_date());
header.setDepDate(depositionDate);
} catch (ParseException e){
logger.warn("Could not parse date string '{}', deposition date will be unavailable", status.getRecvd_initial_deposition_date());
}

structure.setPDBHeader(header);
}

@Override
public void newDatabasePDBremark(DatabasePDBremark remark) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,10 @@
import org.biojava.nbio.structure.io.mmcif.model.EntitySrcSyn;
import org.biojava.nbio.structure.io.mmcif.model.Exptl;
import org.biojava.nbio.structure.io.mmcif.model.IgnoreField;
import org.biojava.nbio.structure.io.mmcif.model.PdbxAuditRevisionHistory;
import org.biojava.nbio.structure.io.mmcif.model.PdbxChemCompDescriptor;
import org.biojava.nbio.structure.io.mmcif.model.PdbxChemCompIdentifier;
import org.biojava.nbio.structure.io.mmcif.model.PdbxDatabaseStatus;
import org.biojava.nbio.structure.io.mmcif.model.PdbxEntityNonPoly;
import org.biojava.nbio.structure.io.mmcif.model.PdbxNonPolyScheme;
import org.biojava.nbio.structure.io.mmcif.model.PdbxPolySeqScheme;
Expand Down Expand Up @@ -641,22 +643,30 @@ private void endLineChecks(String category,List<String> loopFields, List<String>

triggerNewDatabasePDBrev(dbrev);

} else if ( category.equals("_database_PDB_rev_record")){
} else if ( category.equals("_database_PDB_rev_record")) {
DatabasePdbrevRecord dbrev = (DatabasePdbrevRecord) buildObject(
DatabasePdbrevRecord.class.getName(),
loopFields, lineData, loopWarnings);

triggerNewDatabasePDBrevRecord(dbrev);

// MMCIF version 5 dates
} else if ( category.equals("_pdbx_database_status")){
// TODO
// MMCIF version 5 dates
} else if ( category.equals("_pdbx_audit_revision_history")) {
PdbxAuditRevisionHistory history = (PdbxAuditRevisionHistory) buildObject(
PdbxAuditRevisionHistory.class.getName(),
loopFields, lineData, loopWarnings);

// MMCIF version 5 dates
} else if ( category.equals("_pdbx_audit_revision_history")){
// TODO

}else if ( category.equals("_database_PDB_remark")){
triggerNewPdbxAuditRevisionHistory(history);

// MMCIF version 5 dates
} else if ( category.equals("_pdbx_database_status")) {
PdbxDatabaseStatus status = (PdbxDatabaseStatus) buildObject(
PdbxDatabaseStatus.class.getName(),
loopFields, lineData, loopWarnings);

triggerNewPdbxDatabaseStatus(status);

}else if ( category.equals("_database_PDB_remark")) {
DatabasePDBremark remark = (DatabasePDBremark) buildObject(
DatabasePDBremark.class.getName(),
loopFields, lineData, loopWarnings);
Expand Down Expand Up @@ -1110,6 +1120,19 @@ private void triggerNewAuditAuthor(AuditAuthor aa){
c.newAuditAuthor(aa);
}
}

private void triggerNewPdbxAuditRevisionHistory(PdbxAuditRevisionHistory history) {
for(MMcifConsumer c : consumers){
c.newPdbxAuditRevisionHistory(history);
}
}

private void triggerNewPdbxDatabaseStatus(PdbxDatabaseStatus status) {
for(MMcifConsumer c : consumers){
c.newPdbxDatabaseStatus(status);
}
}

private void triggerNewDatabasePDBrev(DatabasePDBrev dbrev){
for(MMcifConsumer c : consumers){
c.newDatabasePDBrev(dbrev);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package org.biojava.nbio.structure.io.mmcif.model;

/**
* Bean to hold data for _pdbx_audit_revision_history mmCIF category.
*
* @author Peter Rose
* @since 5.0
*/
public class PdbxAuditRevisionHistory extends AbstractBean {
private String ordinal;
private String data_content_type;
private String major_revision;
private String minor_revision;
private String revision_date;

public String getOrdinal() {
return ordinal;
}
public void setOrdinal(String ordinal) {
this.ordinal = ordinal;
}
public String getData_content_type() {
return data_content_type;
}
public void setData_content_type(String data_content_type) {
this.data_content_type = data_content_type;
}
public String getMajor_revision() {
return major_revision;
}
public void setMajor_revision(String major_revision) {
this.major_revision = major_revision;
}
public String getMinor_revision() {
return minor_revision;
}
public void setMinor_revision(String minor_revision) {
this.minor_revision = minor_revision;
}
public String getRevision_date() {
return revision_date;
}
public void setRevision_date(String revision_date) {
this.revision_date = revision_date;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package org.biojava.nbio.structure.io.mmcif.model;

/**
* Bean to hold data for _pdbx_database_status mmCIF category.
*
* @author Peter Rose
* @since 5.0
*/
public class PdbxDatabaseStatus extends AbstractBean {
private String status_code;
private String entry_id;
private String recvd_initial_deposition_date;
private String deposit_site;
private String process_site;
private String SG_entry;
private String pdb_format_compatible;
private String status_code_mr;
private String status_code_sf;
private String status_code_cs;

public String getStatus_code() {
return status_code;
}
public void setStatus_code(String status_code) {
this.status_code = status_code;
}
public String getEntry_id() {
return entry_id;
}
public void setEntry_id(String entry_id) {
this.entry_id = entry_id;
}
public String getRecvd_initial_deposition_date() {
return recvd_initial_deposition_date;
}
public void setRecvd_initial_deposition_date(String recvd_initial_deposition_date) {
this.recvd_initial_deposition_date = recvd_initial_deposition_date;
}
public String getDeposit_site() {
return deposit_site;
}
public void setDeposit_site(String deposit_site) {
this.deposit_site = deposit_site;
}
public String getProcess_site() {
return process_site;
}
public void setProcess_site(String process_site) {
this.process_site = process_site;
}
public String getSG_entry() {
return SG_entry;
}
public void setSG_entry(String sG_entry) {
SG_entry = sG_entry;
}
public String getPdb_format_compatible() {
return pdb_format_compatible;
}
public void setPdb_format_compatible(String pdb_format_compatible) {
this.pdb_format_compatible = pdb_format_compatible;
}
public String getStatus_code_mr() {
return status_code_mr;
}
public void setStatus_code_mr(String status_code_mr) {
this.status_code_mr = status_code_mr;
}
public String getStatus_code_sf() {
return status_code_sf;
}
public void setStatus_code_sf(String status_code_sf) {
this.status_code_sf = status_code_sf;
}
public String getStatus_code_cs() {
return status_code_cs;
}
public void setStatus_code_cs(String status_code_cs) {
this.status_code_cs = status_code_cs;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.biojava.nbio.structure.io.mmcif;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import org.biojava.nbio.structure.Structure;
import org.biojava.nbio.structure.io.FileParsingParameters;
import org.biojava.nbio.structure.io.MMCIFFileReader;
import org.junit.Test;

public class TestMmcifV5Changes {

/**
* Test date related changes in mmCIF 5.0 format
* @throws IOException
* @throws ParseException
*/

@Test
public void testReleaseDate() throws IOException, ParseException {
Structure s = getStructure("/1stp_v50.cif");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
Date releaseDate = dateFormat.parse("1992-10-15");
// TODO uncomment the following line once getRelDate has been implemented
// assertEquals(releaseDate, s.getPDBHeader().getRelDate());
}

@Test
public void testDepositionDate() throws IOException, ParseException {
Structure s = getStructure("/1stp_v50.cif");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
Date depositionDate = dateFormat.parse("1992-03-12");
assertEquals(depositionDate, s.getPDBHeader().getDepDate());

}

@Test
public void testRevisionDate() throws IOException, ParseException {
Structure s = getStructure("/1stp_v50.cif");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.US);
Date depositionDate = dateFormat.parse("2011-07-13");
assertEquals(depositionDate, s.getPDBHeader().getModDate());

}

private Structure getStructure(String fileName) throws IOException{
InputStream inStream = this.getClass().getResourceAsStream(fileName);
assertNotNull(inStream);

MMCIFFileReader reader = new MMCIFFileReader();

return reader.getStructure(inStream) ;
}
}
Loading