[Dynamite] Is this working now then?

Ewan Birney birney@ebi.ac.uk
Mon, 6 Mar 2000 03:47:19 +0000 (GMT)


> * a Sequence interface with virtual 'name' & 'data' attributes
> * a Sequence_memo datastructure mirroring the Sequence interface
> * a Database_sequence interface that inherits from Sequence and also has
>   accession_number & implementation_id attributes (your Foreign_seq)
>   -- possibly a get_subseq method as well (I like this.)
> * a Database_sequence_factory
> 

I think now you are mixing the database "identification" problem with
the memo/non memo stuff. I would argue for:

   Sequence Interface with 'name','data'. Sequence interface has
   get_subseq and momento datastructure

   Database_Sequence with 'accession' and 'primary_id'

   

> This keeps the object model clean, decouples the DP from the database
> layer. There is no uniqueness guarantee provided on the Sequence::name
> method; uniqueness is a quality that is only relevant where there are
> multiple sequences, i.e. the database layer.

I am fine with this. The very same change was forced on me in BioCorba:
we went for names:

	AnonymousSeq -> sequence with no names
	PrimarySeq   -> sequence with names (3 of them)
	Seq          -> sequence with names and features.

I will put money on the fact that even things declared as
AnonymousSequences never get used as pure anonymous seq, but I am
fine on this.

> 
> Also, since Database_sequence is an extension of Sequence, we can put the
> code to take a snapshot of a Sequence in the Sequence_memo constructor
> (where it belongs) instead of creating a new object.

Again, I think you are missing the point of my previous idl definition
a little but I am not going to bitch about this.

I think we have something (introducing another name here, "LightSeq").

module Seq {
	
	struct LightSeq_str {
		string name;
		string seq;
	};

	interface LightSeq {
		attribute string name;
		attribute string seq;
		string get_subseq(in long start, in long end);
		LightSeq_str get_LightSeq_str();
	};

	interface DatabaseSeq : LightSeq {
		attribute string primary_id; // implementation unique id
		attribute string accession_number; // biological unique id
	};

}


Please - take it apart again. Also I do think we should try to use
IDL when possible otherwise it doesn't clear in my own head what you
mean...

> 
> Ian
>