import java.io.File;
import java.io.FileInputStream;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
"exception.no_pdb_records_for_chain", new String[]
{ id, ((chain == null) ? "' '" : chain) }));
}
-
- // 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, 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");
- }
- Console.debug("Downloading pae from " + paeURL + " to "
- + pae.toString() + "");
-
- try
- {
- UrlDownloadClient.download(paeURL, pae);
- if (!importPaeJSONAsContactMatrix(pdbAlignment, pae))
- {
- Console.warn("Couln't import contact matrix from " + paeURL
- + " (stored in " + pae.toString() + ")");
- }
- } catch (Exception pae_ex)
- {
- Console.debug("Couldn't download PAE", pae_ex);
- }
+ retrieve_AlphaFold_pAE(id, pdbAlignment, retrievalUrl);
} catch (Exception ex) // Problem parsing PDB file
{
return pdbAlignment;
}
- private boolean importPaeJSONAsContactMatrix(AlignmentI pdbAlignment,
- File pae) throws Exception
+ /**
+ * get an alphafold pAE for the given id, and add it to sequence 0 in
+ * pdbAlignment (assuming it came from structurefile parser).
+ *
+ * @param id
+ * @param pdbAlignment
+ * @param retrievalUrl
+ * - URL of .mmcif from EBI-AlphaFold - will be used to generate the
+ * pAE URL automatically
+ * @throws Exception
+ */
+ public static void retrieve_AlphaFold_pAE(String id,
+ AlignmentI pdbAlignment, String retrievalUrl) throws Exception
+ {
+ // 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, 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");
+ }
+ Console.debug("Downloading pae from " + paeURL + " to " + pae.toString()
+ + "");
+
+ try
+ {
+ UrlDownloadClient.download(paeURL, pae);
+ FileInputStream pae_input = new FileInputStream(pae);
+
+ if (!importPaeJSONAsContactMatrix(pdbAlignment, pae_input))
+ {
+ Console.warn("Couln't import contact matrix from " + paeURL
+ + " (stored in " + pae.toString() + ")");
+ }
+ } catch (Exception pae_ex)
+ {
+ Console.debug("Couldn't download PAE", pae_ex);
+ }
+
+ }
+
+ /**
+ * parses the given pAE matrix and adds it to sequence 0 in the given
+ * alignment
+ *
+ * @param pdbAlignment
+ * @param pae_input
+ * @return true if there was a pAE matrix added
+ * @throws Exception
+ */
+ public static boolean importPaeJSONAsContactMatrix(
+ AlignmentI pdbAlignment, InputStream pae_input) throws Exception
{
- FileInputStream pae_input = new FileInputStream(pae);
List<Object> pae_obj = (List<Object>) Platform.parseJSON(pae_input);
if (pae_obj == null)