1
2--- -------------------------------------------------------------------------
3--- Definitions for GB project
4--- GUI projects are the basic units of data used in Genome Workbench
5---
6--- -------------------------------------------------------------------------
7
8NCBI-GBProject DEFINITIONS ::=
9BEGIN
10
11IMPORTS Annotdesc, Seq-annot     FROM NCBI-Sequence
12        Seq-submit               FROM NCBI-Submit
13        Seq-entry                FROM NCBI-Seqset
14        Seq-id, Seq-loc          FROM NCBI-Seqloc
15        Seq-align, Seq-align-set FROM NCBI-Seqalign
16        Date, User-object        FROM NCBI-General;
17
18EXPORTS ProjectFolder, ProjectItem, ProjectHistoryItem, ProjectDescr, ProjectAnnot,
19        FolderInfo, AbstractProjectItem, LoaderDescriptor, ViewDescriptor;
20
21
22-- A dummy type used for replacing 'removed' or deprecated optional fields that
23-- have not been used and won't be used any more.
24DummyObsoleteType ::= CHOICE {
25	null NULL
26}
27
28--
29-- Version 2 project
30-- With version two we start a new paradigm
31-- The first item in the project *MUST* be a non-optional version stamp,
32-- composed as an integer.  This allows us to use a binary ASN.1 fingerprint to
33-- determine the version prior to reading a file.
34--
35GBProject-ver2 ::= SEQUENCE {
36
37    -- the version for this project
38    -- for this particular instance, this should always be 2
39    -- this data element *MUST* be first
40    project-version VisibleString,
41
42    -- next counter for project items
43    counter INTEGER DEFAULT 0,
44
45    -- standard descriptors
46    descr ProjectDescr,
47
48    -- a set of extra analyses perfromed by the user
49    -- each of these may have descriptors
50    data ProjectFolder,
51
52    -- a copy of the original plugin message used to generate this project
53    -- This is deprecated. DO NOT USE THIS FIELD.
54    -- The original spec is: orig-message PluginMessage OPTIONAL.
55	  -- It is intended to be removed, but a complete
56		-- removal will cause order shift for the rest of
57		-- fields in this choice, and cause deserialization
58		-- failure for existing ASN file since this filed is
59		-- in the middle of the spec.
60    obsolete-orig-message DummyObsoleteType OPTIONAL,
61
62    -- history of things done to this object
63    history SET OF ProjectHistoryItem OPTIONAL,
64
65    --name of the plugin that can handle External Data for the project
66    data-plugin VisibleString OPTIONAL,
67
68    --optional parameter for the data-plugin
69    plugin-param VisibleString OPTIONAL,
70
71    -- arbitrary annotations
72    annot SET OF ProjectAnnot OPTIONAL,
73
74    -- a set of data sources including data loader and data
75    loaders SET OF LoaderDescriptor OPTIONAL,
76
77    --- set of views, associated with project
78    views SET OF ViewDescriptor OPTIONAL,
79
80    -- set of view-specific settings
81    view-settings SET OF User-object OPTIONAL
82}
83
84
85ViewDataLink ::= SEQUENCE {
86    --- if both are absent - link goes to project
87    --- if both present - fingerprinted object inside project item
88    --- if only project-item-id present - link goes to project item
89
90    --- project item id
91    project-item-id INTEGER OPTIONAL,
92
93    --- fingerprint of object to show in view
94    fingerprint CHOICE {
95        crc32 INTEGER,
96        md5   OCTET STRING
97    } OPTIONAL,
98
99    type VisibleString
100}
101
102ViewDescriptor ::= SEQUENCE {
103    --- data for view opening
104    data CHOICE {
105        --- link to retrieve data
106        link  ViewDataLink,
107
108        --- virtual project item, if link cannot be created
109        item  ProjectItem
110    },
111
112    --- plugin name of saved view
113    view-plugin     VisibleString,
114
115    --- view id
116    view-id         INTEGER,
117
118    --- optional settings, requered to open view
119    view-memento    ViewMemento OPTIONAL
120}
121
122
123ViewMemento ::= SEQUENCE {
124    options-id  INTEGER
125}
126
127
128ProjectFolder ::= SEQUENCE {
129    info    FolderInfo,
130    folders SET OF ProjectFolder    OPTIONAL,
131    items   SET OF ProjectItem      OPTIONAL
132}
133
134
135ProjectItem ::= SEQUENCE {
136    -- serial number - must be unique in a project (GBProject)
137    id INTEGER,
138
139    -- user-defined label
140    label VisibleString OPTIONAL,
141
142    -- user-defined descriptors
143    descr SET OF Annotdesc OPTIONAL,
144
145    -- the item we represent
146    item CHOICE {
147        -- for projects that simply import a far-pointer
148        id     Seq-id,
149
150        -- for projects that contain something else
151        entry  Seq-entry,
152
153        -- annotation only
154        annot  Seq-annot,
155
156        -- for submission
157        submit Seq-submit,
158
159        -- seq-align and seq-align-set as registered items
160        seq-align     Seq-align,
161        seq-align-set Seq-align-set,
162
163        -- plugin message
164        -- This is deprecated. DO NOT USE THIS FIELD.
165        -- The original spec is: plugin PluginMessage.
166	      -- It is intended to be removed, but a complete
167		    -- removal will cause order shift for the rest of
168		    -- fields in this choice, and cause deserialization
169		    -- failure for existing ASN files since this filed is
170		    -- in the middle of the spec.
171		    obsolete-plugin DummyObsoleteType,
172
173        -- arbitrary object (use with care!)
174        other AbstractProjectItem,
175
176        -- PubMed ID
177        pmid   SET OF INTEGER,
178
179        -- Taxonomy ID
180        taxid  SET OF INTEGER
181    },
182
183    --name of the plugin that can handle External Data for the project
184    data-plugin VisibleString OPTIONAL,
185
186    -- "folder open" state
187    disabled    BOOLEAN OPTIONAL
188}
189
190AbstractProjectItem ::= SEQUENCE {
191    type VisibleString,
192    data OCTET STRING
193}
194
195
196ProjectHistoryItem ::= SEQUENCE {
197    -- ID of ProjectItem referenced
198    id INTEGER,
199
200    -- date of modification
201    date Date,
202
203    -- label for this item (terse description)
204    label VisibleString,
205
206    -- optional longer description
207    comment VisibleString OPTIONAL
208}
209
210
211FolderInfo ::= SEQUENCE {
212    title VisibleString,
213
214    -- basic descriptors
215    create-date Date,
216
217    -- optional comments
218    comment VisibleString OPTIONAL,
219
220    -- "folder open" state
221    open    BOOLEAN OPTIONAL,
222
223    -- arbitrary annotations
224    annot SET OF Annotdesc OPTIONAL
225}
226
227
228ProjectDescr ::= SEQUENCE {
229    -- user-defined title for the workspace
230    title VisibleString,
231
232    -- basic (required) descriptors
233    create-date Date,
234    modified-date Date OPTIONAL,
235
236    -- optional descriptors
237    comment VisibleString OPTIONAL
238}
239
240
241ProjectAnnot ::= SEQUENCE {
242    create-date Date,
243    modified-date Date OPTIONAL,
244    annot Annotdesc
245}
246
247
248LoaderDescriptor ::= SEQUENCE {
249    -- data loader label
250    label VisibleString,
251
252    -- loader data source type
253    loader-type VisibleString,
254
255    -- data, depends on loader type
256    data User-object,
257
258    -- flag: is this data loader enabled?
259    enabled BOOLEAN DEFAULT TRUE,
260
261    -- loader priority used in object manager
262    priority INTEGER OPTIONAL
263}
264
265
266END
267
268