X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FEBIAlfaFold.java;h=97eacabc1fa684ca90b29d8fa7c618e4fac85ce0;hb=256638175cb9041da39d5c79090f537971e43df3;hp=bbb1f8b04680e13e481e87036649b3e62a2be6f2;hpb=8286731258d314669ee6facb627947fe159ac1eb;p=jalview.git diff --git a/src/jalview/ws/dbsources/EBIAlfaFold.java b/src/jalview/ws/dbsources/EBIAlfaFold.java index bbb1f8b..97eacab 100644 --- a/src/jalview/ws/dbsources/EBIAlfaFold.java +++ b/src/jalview/ws/dbsources/EBIAlfaFold.java @@ -72,6 +72,8 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy private static final int PDB_ID_LENGTH = 4; + private static String AF_VERSION = "2"; + public EBIAlfaFold() { super(); @@ -96,7 +98,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; } @@ -123,15 +125,24 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy return "1"; } - public static String getAlphaFoldCifDownloadUrl(String id) + public static String getAlphaFoldCifDownloadUrl(String id, String vnum) { - return "https://alphafold.ebi.ac.uk/files/" + id + "-model_v1.cif"; + if (vnum == null || vnum.length() == 0) + { + vnum = AF_VERSION; + } + return "https://alphafold.ebi.ac.uk/files/" + id + "-model_v" + vnum + + ".cif"; } - public static String getAlphaFoldPaeDownloadUrl(String id) + public static String getAlphaFoldPaeDownloadUrl(String id, String vnum) { + if (vnum == null || vnum.length() == 0) + { + vnum = AF_VERSION; + } return "https://alphafold.ebi.ac.uk/files/" + id - + "-predicted_aligned_error_v1.json"; + + "-predicted_aligned_error_v" + vnum + ".json"; } /* @@ -144,7 +155,9 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy { return getSequenceRecords(queries, null); } - public AlignmentI getSequenceRecords(String queries, String retrievalUrl) throws Exception + + public AlignmentI getSequenceRecords(String queries, String retrievalUrl) + throws Exception { AlignmentI pdbAlignment = null; String chain = null; @@ -166,7 +179,7 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy stopQuery(); return null; } - String alphaFoldCif = getAlphaFoldCifDownloadUrl(id); + String alphaFoldCif = getAlphaFoldCifDownloadUrl(id, AF_VERSION); if (retrievalUrl != null) { alphaFoldCif = retrievalUrl; @@ -177,7 +190,7 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy File tmpFile = File.createTempFile(id, ".cif"); Console.debug("Retrieving structure file for "+id+" from "+alphaFoldCif); UrlDownloadClient.download(alphaFoldCif, tmpFile); - + // may not need this check ? file = tmpFile.getAbsolutePath(); if (file == null) @@ -185,8 +198,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) { @@ -198,9 +211,10 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy // import PAE as contact matrix - assume this will work if there was a // model File pae = File.createTempFile(id, "pae_json"); - String paeURL = getAlphaFoldPaeDownloadUrl(id); - - if (retrievalUrl!=null) { + String paeURL = getAlphaFoldPaeDownloadUrl(id, AF_VERSION); + + if (retrievalUrl != null) + { // manufacture the PAE url from a url like ...-model-vN.cif paeURL = retrievalUrl.replace("model","predicted_aligned_error").replace(".cif",".json"); } @@ -245,7 +259,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 @@ -255,8 +271,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? @@ -309,15 +326,17 @@ public class EBIAlfaFold extends EbiFileRetrievedProxy // dbentry.setMap() pdbcs.addDBRef(dbentry); // update any feature groups - List allsf = pdbcs.getFeatures().getAllFeatures(); + List allsf = pdbcs.getFeatures() + .getAllFeatures(); List newsf = new ArrayList(); - if (allsf!=null && allsf.size()>0) + if (allsf != null && allsf.size() > 0) { - for (SequenceFeature f:allsf) + for (SequenceFeature f : allsf) { if (file.equals(f.getFeatureGroup())) { - f = new SequenceFeature(f, f.type, f.begin, f.end, id, f.score); + f = new SequenceFeature(f, f.type, f.begin, f.end, id, + f.score); } newsf.add(f); }