X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FEBIAlfaFold.java;h=e3687bdb037306d2bb6a814c615f9a1720d96f43;hb=2123f8ad0cc51b9f58d5d2820fa54ed03a8f3b22;hp=a93f233c672ba8a0f2fdb0f0129b29c9e9bd1385;hpb=907ebb2a8d69a51e4f1648681dfc930a389b246c;p=jalview.git diff --git a/src/jalview/ws/dbsources/EBIAlfaFold.java b/src/jalview/ws/dbsources/EBIAlfaFold.java index a93f233..e3687bd 100644 --- a/src/jalview/ws/dbsources/EBIAlfaFold.java +++ b/src/jalview/ws/dbsources/EBIAlfaFold.java @@ -28,7 +28,9 @@ import jalview.datamodel.DBRefEntry; import jalview.datamodel.DBRefSource; import jalview.datamodel.PDBEntry; import jalview.datamodel.PDBEntry.Type; +import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceI; +import jalview.datamodel.features.SequenceFeaturesI; import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FileFormatI; @@ -82,7 +84,7 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy @Override public Regex getAccessionValidator() { - Regex validator = new Regex("(AF-[A-Z]+[0-9]+[A-Z0-9]+-F1)"); + Regex validator = new Regex("(AF-[A-Z]+[0-9]+[A-Z0-9]+-F1)"); validator.setIgnoreCase(true); return validator; } @@ -122,6 +124,12 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy @Override public AlignmentI getSequenceRecords(String queries) throws Exception { + return getSequenceRecords(queries, null); + } + + public AlignmentI getSequenceRecords(String queries, String retrievalUrl) + throws Exception + { AlignmentI pdbAlignment = null; String chain = null; String id = null; @@ -143,12 +151,16 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy return null; } String alphaFoldCif = getAlphaFoldCifDownloadUrl(id); + if (retrievalUrl != null) + { + alphaFoldCif = retrievalUrl; + } try { File tmpFile = File.createTempFile(id, ".cif"); UrlDownloadClient.download(alphaFoldCif, tmpFile); - + // may not need this check ? file = tmpFile.getAbsolutePath(); if (file == null) @@ -156,8 +168,8 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy return null; } - pdbAlignment = importDownloadedStructureFromUrl(alphaFoldCif, tmpFile, id, chain, getDbSource(),getDbVersion()); - + pdbAlignment = importDownloadedStructureFromUrl(alphaFoldCif, tmpFile, + id, chain, getDbSource(), getDbVersion()); if (pdbAlignment == null || pdbAlignment.getHeight() < 1) { @@ -175,7 +187,9 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy } /** - * general purpose structure importer - designed to yield alignment useful for transfer of annotation to associated sequences + * general purpose structure importer - designed to yield alignment useful for + * transfer of annotation to associated sequences + * * @param alphaFoldCif * @param tmpFile * @param id @@ -185,8 +199,9 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy * @return * @throws Exception */ - public static AlignmentI importDownloadedStructureFromUrl(String alphaFoldCif, - File tmpFile, String id, String chain, String dbSource, String dbVersion) throws Exception + public static AlignmentI importDownloadedStructureFromUrl( + String alphaFoldCif, File tmpFile, String id, String chain, + String dbSource, String dbVersion) throws Exception { String file = tmpFile.getAbsolutePath(); // todo get rid of Type and use FileFormatI instead? @@ -238,6 +253,23 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy dbVersion, (chid == null ? id : id + chid)); // dbentry.setMap() pdbcs.addDBRef(dbentry); + // update any feature groups + List allsf = pdbcs.getFeatures() + .getAllFeatures(); + List newsf = new ArrayList(); + if (allsf != null && allsf.size() > 0) + { + for (SequenceFeature f : allsf) + { + if (file.equals(f.getFeatureGroup())) + { + f = new SequenceFeature(f, f.type, f.begin, f.end, id, + f.score); + } + newsf.add(f); + } + pdbcs.setSequenceFeatures(newsf); + } } } else @@ -310,4 +342,5 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy { return new PDBFeatureSettings(); } + }