Issue 3687: DsLSRBioObjects issue (biomolecular-ftf) Source: (Mr. Philip Lijnzaad, p.lijnzaad@med.uu.nl) Nature: Uncategorized Issue Severity: Summary: We have been busy implementing the BSA spec, and there's a few things in the DsLSRBioObjects part that we would like your opinion on. The biggest one concerns the Alignment interface. As anticipated by all of us except Ewan, Alignment is tricky to implement efficiently because of gaps. The only way to do it is to repeatedly invoke get_seq_region, and seeing if you get back a null. Of course, an AlignmentEncoder can do this on the server-side, but it this is still clumsy (and optional). Our main proposal is to add an operation IntervalList get_gaps(in AlignmentElement element, in Interval the_interval); to the interface Alignment. It's job is to simply return all the gaps of a particular sequence in a particular alignment. For symmetry with get_seq_region(), the_interval is also given, thus limiting the gaps to those that you're interested in. [ Incidentally, typedef sequence<Interval> IntervalList; is missing from the spec; can this be added? ] One gap would be represented as {start,length}, hence the use of Interval. We could add typedef Interval Gap; to make the semantics clearer (elsewhere, an Interval is an existing segment; here it denotes a missing segment). The coordinates of a gap would be those of the original sequence; gaps of length 0 are not allowed. A gap.start == 0 would be before the first nucleotide/aminoacid; a gap.start = N is a gap between nucleotides/aminoacids N and N+1 (so gap.start = sequence.length would be after the last. Another proposal is to separate Alignment into more managable pieces as follows: interface SimpleAlignment : CosLifeCycle::LifeCycleObject { // ... // here, everything get_seq_region() // ... } interface Alignment : SimpleAlignment { SeqRegion get_seq_region( in AlignmentElement element, in Interval the_interval) raises(ElementNotInAlignment, IntervalOutOfBounds); } Resolution: split into issues 3870, 3871, 3872 Revised Text: Actions taken: June 9, 2000: received issue September 28, 2000: split into issues 3870, 3871, 3872 May 24, 2001: closed issue Discussion: End of Annotations:===== Date: Fri, 9 Jun 2000 15:39:29 +0100 (BST) Message-Id: <200006091439.e59EdTA17797@o2-3.ebi.ac.uk> X-Authentication-Warning: o2-3.ebi.ac.uk: lijnzaad set sender to lijnzaad@ebi.ac.uk using -f From: Philip Lijnzaad To: biomolecular-ftf@emerald.omg.org cc: muilu@ebi.ac.uk Subject: some issues ... Reply-to: lijnzaad@ebi.ac.uk Content-Type: text X-UIDL: [C#!! IntervalList; is missing from the spec; can this be added? ] One gap would be represented as {start,length}, hence the use of Interval. We could add typedef Interval Gap; to make the semantics clearer (elsewhere, an Interval is an existing segment; here it denotes a missing segment). The coordinates of a gap would be those of the original sequence; gaps of length 0 are not allowed. A gap.start == 0 would be before the first nucleotide/aminoacid; a gap.start = N is a gap between nucleotides/aminoacids N and N+1 (so gap.start = sequence.length would be after the last. Another proposal is to separate Alignment into more managable pieces as follows: interface SimpleAlignment : CosLifeCycle::LifeCycleObject { // ... // here, everything get_seq_region() // ... } interface Alignment : SimpleAlignment { SeqRegion get_seq_region( in AlignmentElement element, in Interval the_interval) raises(ElementNotInAlignment, IntervalOutOfBounds); } Date: Tue, 19 Sep 2000 12:39:34 +0100 (BST) Message-Id: <200009191139.e8JBdYe42330@o2-3.ebi.ac.uk> X-Authentication-Warning: o2-3.ebi.ac.uk: lijnzaad set sender to lijnzaad@ebi.ac.uk using -f From: Philip Lijnzaad To: juergen@omg.org cc: biomolecular-ftf@omg.org, senger@ebi.ac.uk, muilu@ebi.ac.uk Subject: Issue 3687: split into new issues Reply-to: lijnzaad@ebi.ac.uk Content-Type: text X-UIDL: e6cd9 IntervalList; is missing from the spec; can this be added? ------------------------------------------------------------------------ 3687b: add an operation IntervalList get_gaps(in AlignmentElement element, in Interval the_interval); to the interface Alignment. It's job is to simply return all the gaps of a particular sequence in a particular alignment. For symmetry with get_seq_region(), the_interval is also given, thus limiting the gaps to those that you're interested in. ------------------------------------------------------------------------ Philip -- When C++ is your hammer, everything looks like a thumb. (Steven Haflich) ----------------------------------------------------------------------------- Philip Lijnzaad, lijnzaad@ebi.ac.uk \ European Bioinformatics Institute,rm A2-24 +44 (0)1223 49 4639 / Wellcome Trust Genome Campus, Hinxton +44 (0)1223 49 4468 (fax) \ Cambridgeshire CB10 1SD, GREAT BRITAIN PGP fingerprint: E1 03 BF 80 94 61 B6 FC 50 3D 1F 64 40 75 FB 53 Date: Tue, 19 Sep 2000 12:41:18 +0100 (BST) Message-Id: <200009191141.e8JBfIQ43369@o2-3.ebi.ac.uk> X-Authentication-Warning: o2-3.ebi.ac.uk: lijnzaad set sender to lijnzaad@ebi.ac.uk using -f From: Philip Lijnzaad To: biomolecular-ftf@omg.org cc: senger@ebi.ac.uk, muilu@ebi.ac.uk Subject: Issue 3687a (or whatever number): adding IntervalList Reply-to: lijnzaad@ebi.ac.uk Content-Type: text X-UIDL: /('e9HN IntervalList to DsLSRBioObjects.idl Philip -- When C++ is your hammer, everything looks like a thumb. (Steven Haflich) ----------------------------------------------------------------------------- Philip Lijnzaad, lijnzaad@ebi.ac.uk \ European Bioinformatics Institute,rm A2-24 +44 (0)1223 49 4639 / Wellcome Trust Genome Campus, Hinxton +44 (0)1223 49 4468 (fax) \ Cambridgeshire CB10 1SD, GREAT BRITAIN PGP fingerprint: E1 03 BF 80 94 61 B6 FC 50 3D 1F 64 40 75 FB 53