X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fensembl%2FEnsemblGene.java;h=d44be1cef0a5599a7610a297c1c65a7e44656a31;hb=HEAD;hp=36b19e25375aaa31ed24ae1cf694e0906ab0fd11;hpb=a4f2a7f356b8edab17a9a5bb6f2e71a1419792a9;p=jalview.git diff --git a/src/jalview/ext/ensembl/EnsemblGene.java b/src/jalview/ext/ensembl/EnsemblGene.java index 36b19e2..d44be1c 100644 --- a/src/jalview/ext/ensembl/EnsemblGene.java +++ b/src/jalview/ext/ensembl/EnsemblGene.java @@ -23,7 +23,6 @@ package jalview.ext.ensembl; import jalview.api.FeatureColourI; import jalview.api.FeatureSettingsModelI; import jalview.datamodel.AlignmentI; -import jalview.datamodel.DBRefEntry; import jalview.datamodel.GeneLociI; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; @@ -34,6 +33,7 @@ import jalview.io.gff.SequenceOntologyI; import jalview.schemes.FeatureColour; import jalview.schemes.FeatureSettingsAdapter; import jalview.util.MapList; +import jalview.util.Platform; import java.awt.Color; import java.io.UnsupportedEncodingException; @@ -51,8 +51,6 @@ import com.stevesoft.pat.Regex; */ public class EnsemblGene extends EnsemblSeqProxy { - private static final String GENE_PREFIX = "gene:"; - /* * accepts anything as we will attempt lookup of gene or * transcript id or gene name @@ -64,6 +62,8 @@ public class EnsemblGene extends EnsemblSeqProxy EnsemblFeatureType.exon, EnsemblFeatureType.cds, EnsemblFeatureType.variation }; + private static final String CHROMOSOME = "chromosome"; + /** * Default constructor (to use rest.ensembl.org) */ @@ -140,7 +140,6 @@ public class EnsemblGene extends EnsemblSeqProxy * convert to a non-duplicated list of gene identifiers */ List geneIds = getGeneIds(query); - AlignmentI al = null; for (String geneId : geneIds) { @@ -152,14 +151,12 @@ public class EnsemblGene extends EnsemblSeqProxy { continue; } - + if (geneAlignment.getHeight() == 1) { // ensure id has 'correct' case for the Ensembl identifier geneId = geneAlignment.getSequenceAt(0).getName(); - findGeneLoci(geneAlignment.getSequenceAt(0), geneId); - getTranscripts(geneAlignment, geneId); } if (al == null) @@ -189,7 +186,7 @@ public class EnsemblGene extends EnsemblSeqProxy if (geneLoci != null) { seq.setGeneLoci(geneLoci.getSpeciesId(), geneLoci.getAssemblyId(), - geneLoci.getChromosomeId(), geneLoci.getMap()); + geneLoci.getChromosomeId(), geneLoci.getMapping()); } else { @@ -211,7 +208,7 @@ public class EnsemblGene extends EnsemblSeqProxy return false; } String[] tokens = description.split(":"); - if (tokens.length == 6 && tokens[0].startsWith(DBRefEntry.CHROMOSOME)) + if (tokens.length == 6 && tokens[0].startsWith(CHROMOSOME)) { String ref = tokens[1]; String chrom = tokens[2]; @@ -229,7 +226,8 @@ public class EnsemblGene extends EnsemblSeqProxy return true; } catch (NumberFormatException e) { - System.err.println("Bad integers in description " + description); + jalview.bin.Console + .errPrintln("Bad integers in description " + description); } } return false; @@ -321,8 +319,8 @@ public class EnsemblGene extends EnsemblSeqProxy SequenceOntologyI.NMD_TRANSCRIPT_VARIANT, SequenceOntologyI.TRANSCRIPT, SequenceOntologyI.EXON, SequenceOntologyI.CDS }; - List sfs = gene.getFeatures().getFeaturesByOntology( - soTerms); + List sfs = gene.getFeatures() + .getFeaturesByOntology(soTerms); for (SequenceFeature sf : sfs) { gene.deleteFeature(sf); @@ -368,7 +366,7 @@ public class EnsemblGene extends EnsemblSeqProxy * look for exon features of the transcript, failing that for CDS * (for example ENSG00000124610 has 1 CDS but no exon features) */ - String parentId = "transcript:" + accId; + String parentId = accId; List splices = findFeatures(gene, SequenceOntologyI.EXON, parentId); if (splices.isEmpty()) @@ -399,7 +397,7 @@ public class EnsemblGene extends EnsemblSeqProxy * Ensembl has gene name as transcript Name * EnsemblGenomes doesn't, but has a url-encoded description field */ - String description = (String) transcriptFeature.getValue(NAME); + String description = transcriptFeature.getDescription(); if (description == null) { description = (String) transcriptFeature.getValue(DESCRIPTION); @@ -462,7 +460,7 @@ public class EnsemblGene extends EnsemblSeqProxy return; } - MapList geneMapping = loci.getMap(); + MapList geneMapping = loci.getMapping(); List exons = mapping.getFromRanges(); List transcriptLoci = new ArrayList<>(); @@ -472,8 +470,9 @@ public class EnsemblGene extends EnsemblSeqProxy transcriptLoci.add(geneMapping.locateInTo(exon[0], exon[1])); } - List transcriptRange = Arrays.asList(new int[] { - transcript.getStart(), transcript.getEnd() }); + List transcriptRange = Arrays + .asList(new int[] + { transcript.getStart(), transcript.getEnd() }); MapList mapList = new MapList(transcriptRange, transcriptLoci, 1, 1); transcript.setGeneLoci(loci.getSpeciesId(), loci.getAssemblyId(), @@ -488,7 +487,7 @@ public class EnsemblGene extends EnsemblSeqProxy */ protected String getTranscriptId(SequenceFeature feature) { - return (String) feature.getValue("transcript_id"); + return (String) feature.getValue(JSON_ID); } /** @@ -510,7 +509,7 @@ public class EnsemblGene extends EnsemblSeqProxy { List transcriptFeatures = new ArrayList<>(); - String parentIdentifier = GENE_PREFIX + accId; + String parentIdentifier = accId; List sfs = geneSequence.getFeatures() .getFeaturesByOntology(SequenceOntologyI.TRANSCRIPT); @@ -541,10 +540,11 @@ public class EnsemblGene extends EnsemblSeqProxy @Override public String getTestQuery() { - return "ENSG00000157764"; // BRAF, 5 transcripts, reverse strand + return Platform.isJS() ? "ENSG00000123569" : "ENSG00000157764"; + // ENSG00000123569 // H2BFWT histone, 2 transcripts, reverse strand + // ENSG00000157764 // BRAF, 5 transcripts, reverse strand // ENSG00000090266 // NDUFB2, 15 transcripts, forward strand // ENSG00000101812 // H2BFM histone, 3 transcripts, forward strand - // ENSG00000123569 // H2BFWT histone, 2 transcripts, reverse strand } /** @@ -561,9 +561,8 @@ public class EnsemblGene extends EnsemblSeqProxy .getFeaturesByOntology(SequenceOntologyI.GENE); for (SequenceFeature sf : sfs) { - // NB features as gff use 'ID'; rest services return as 'id' - String id = (String) sf.getValue("ID"); - if ((GENE_PREFIX + accId).equalsIgnoreCase(id)) + String id = (String) sf.getValue(JSON_ID); + if (accId.equalsIgnoreCase(id)) { result.add(sf); } @@ -590,7 +589,7 @@ public class EnsemblGene extends EnsemblSeqProxy if (isTranscript(type)) { String parent = (String) sf.getValue(PARENT); - if (!(GENE_PREFIX + accessionId).equalsIgnoreCase(parent)) + if (!accessionId.equalsIgnoreCase(parent)) { return false; } @@ -631,10 +630,10 @@ public class EnsemblGene extends EnsemblSeqProxy SequenceOntologyI so = SequenceOntologyFactory.getInstance(); @Override - public boolean isFeatureDisplayed(String type) + public boolean isFeatureHidden(String type) { - return (so.isA(type, SequenceOntologyI.EXON) - || so.isA(type, SequenceOntologyI.SEQUENCE_VARIANT)); + return (!so.isA(type, SequenceOntologyI.EXON) + && !so.isA(type, SequenceOntologyI.SEQUENCE_VARIANT)); } @Override