import com.stevesoft.pat.Regex;
import jalview.bin.Cache;
+import jalview.bin.Console;
import jalview.datamodel.Alignment;
import jalview.datamodel.AlignmentI;
import jalview.datamodel.DBRefEntry;
import jalview.datamodel.SequenceFeature;
import jalview.datamodel.SequenceI;
import jalview.schemes.ResidueProperties;
+import jalview.util.HttpUtils;
import jalview.util.StringUtils;
import jalview.ws.seqfetcher.DbSourceProxyImpl;
import jalview.xml.binding.uniprot.DbReferenceType;
*/
public class Uniprot extends DbSourceProxyImpl
{
- private static final String DEFAULT_UNIPROT_DOMAIN = "https://www.uniprot.org";
+ private static final String DEFAULT_UNIPROT_DOMAIN = "https://rest.uniprot.org";
private static final String BAR_DELIMITER = "|";
"(UNIPROT\\|?|UNIPROT_|UNIREF\\d+_|UNIREF\\d+\\|?)", "");
AlignmentI al = null;
- String downloadstring = getDomain() + "/uniprot/" + queries + ".xml";
+ String downloadstring = getDomain() + "/uniprotkb/" + queries
+ + ".xml";
URL url = new URL(downloadstring);
- HttpURLConnection urlconn = (HttpURLConnection) url.openConnection();
+ HttpURLConnection urlconn = (HttpURLConnection) HttpUtils
+ .openConnection(url);
// anything other than 200 means we don't have data
// TODO: JAL-3882 reuse the EnsemblRestClient's fair
// use/backoff logic to retry when the server tells us to go away
LocationType location = uf.getLocation();
int start = 0;
int end = 0;
+ String uncertain_start = null, uncertain_end = null,
+ uncertain_pos = null;
if (location.getPosition() != null)
{
- start = location.getPosition().getPosition().intValue();
- end = start;
+ if (location.getPosition().getPosition() == null
+ || "unknown".equals(location.getPosition().getStatus()))
+ {
+ Console.warn(
+ "Ignoring single position feature with uncertain location "
+ + uf.getType() + ":" + getDescription(uf));
+ uncertain_pos = location.getPosition().getStatus() == null
+ ? "unknown"
+ : location.getPosition().getStatus();
+ }
+ else
+ {
+ start = location.getPosition().getPosition().intValue();
+ end = start;
+ }
}
else
{
- start = location.getBegin().getPosition().intValue();
- end = location.getEnd().getPosition().intValue();
+ if (location.getBegin().getPosition() == null)
+ {
+ Console.warn(
+ "Setting start position of feature with uncertain start to 1: "
+ + uf.getType() + ":" + getDescription(uf));
+ start = sequence.getStart();
+ uncertain_start = location.getBegin().getStatus();
+ }
+ else
+ {
+ start = location.getBegin().getPosition().intValue();
+ }
+ if (location.getEnd().getPosition() == null)
+ {
+ Console.warn(
+ "Setting start position of feature with uncertain start to 1: "
+ + uf.getType() + ":" + getDescription(uf));
+ end = sequence.getEnd();
+ uncertain_end = location.getEnd().getStatus();
+ }
+ else
+ {
+ end = location.getEnd().getPosition().intValue();
+ }
}
SequenceFeature sf = new SequenceFeature(uf.getType(),
getDescription(uf), start, end, "Uniprot");
sf.setStatus(uf.getStatus());
+ if (uncertain_end != null)
+ {
+ sf.setValue("end_status", uncertain_end);
+ }
+ if (uncertain_start != null)
+ {
+ sf.setValue("start_status", uncertain_start);
+ }
+ if (uncertain_pos != null)
+ {
+ sf.setValue("pos_status", uncertain_pos);
+ }
sequence.addSequenceFeature(sf);
}
}