/** * Handle UTR joins * * @param feature * @param key * @param qualifiers * @return */ private Location joinUtrs(Feature feature, Key key, QualifierVector qualifiers) { Location location = feature.getLocation(); if (key.getKeyString().equals("5'UTR") || key.getKeyString().equals("3'UTR")) { ChadoCanonicalGene gene = ((GFFStreamFeature) feature).getChadoGene(); String utrName = GeneUtils.getUniqueName(feature); String transcriptName = gene.getTranscriptFromName(utrName); List<Feature> utrs; if (key.getKeyString().equals("5'UTR")) utrs = gene.get5UtrOfTranscript(transcriptName); else utrs = gene.get3UtrOfTranscript(transcriptName); if (utrs.size() > 1) { int start = Integer.MAX_VALUE; RangeVector ranges = new RangeVector(); for (int i = 0; i < utrs.size(); i++) { Feature utr = utrs.get(i); Range range = utr.getLocation().getTotalRange(); if (start > range.getStart()) start = range.getStart(); ranges.add(range); } if (start != feature.getLocation().getTotalRange().getStart()) return null; location = new Location(ranges, feature.getLocation().isComplement()); } int ntranscripts = gene.getTranscripts().size(); if (ntranscripts == 1) transcriptName = gene.getGeneUniqueName(); qualifiers.setQualifier(new Qualifier("locus_tag", transcriptName)); qualifiers.removeQualifierByName("ID"); } return location; }
/** * Routine to combine transcript qualifiers and for multiple transcripts create links to the other * transcripts (other_transcript) and to use the transcript ID. * * @param qualifiers * @param transcript * @param ntranscripts * @param chadoGene */ private int handleTranscripts( QualifierVector qualifiers, Feature transcript, int ntranscripts, ChadoCanonicalGene chadoGene) { QualifierVector transcriptQualifiers = transcript.getQualifiers().copy(); combineQualifiers(qualifiers, transcriptQualifiers, false); ntranscripts = chadoGene.getTranscripts().size(); if (ntranscripts > 1) { addNewQualifier(qualifiers, transcriptQualifiers.getQualifierByName("ID")); List<Feature> transcripts = chadoGene.getTranscripts(); for (int i = 0; i < ntranscripts; i++) { Feature thisTranscript = (Feature) transcripts.get(i); String thisTranscriptName = GeneUtils.getUniqueName(thisTranscript); if (!thisTranscriptName.equals(GeneUtils.getUniqueName(transcript))) { Qualifier qualifier = new Qualifier("other_transcript", thisTranscriptName); addNewQualifier(qualifiers, qualifier); } } } return ntranscripts; }