001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021package org.biojava.nbio.core.sequence.io.embl;
022
023import java.util.LinkedList;
024import java.util.List;
025
026
027/**
028 * this class contains the parsed data of embl file
029 *
030 * @author Noor Aldeen Al Mbaidin
031 * @since 5.0.0
032 */
033
034public class EmblRecord {
035
036    private EmblId emblId;
037    private List<EmblReference> emblReference;
038    private List<String> accessionNumber = new LinkedList<>();
039    private String projectIdentifier;
040    private String orGanelle;
041    private String createdDate;
042    private String featureHeader;
043    private String featureTable;
044    private String lastUpdatedDate;
045    private String sequenceDescription;
046    private List<String> keyword = new LinkedList<>();
047    private String organismSpecies;
048    private String organismClassification;
049    private String databaseCrossReference;
050    private String assemblyHeader;
051    private String assemblyInformation;
052    private String constructedSequence;
053    private String sequenceHeader;
054    private String sequence;
055
056    /**
057     * The ID (IDentification) line
058     * The tokens represent:
059     * 1. Primary accession number
060     * 2. Sequence version number
061     * 3. Topology: 'circular' or 'linear'
062     * 4. Molecule type
063     * 5. Data class
064     * 6. Taxonomic division
065     * 7. Sequence length
066     *
067     * @return EmblId
068     */
069    public EmblId getEmblId() {
070        return emblId;
071    }
072
073    public void setEmblId(EmblId emblId) {
074        this.emblId = emblId;
075    }
076
077    /**
078     * The Reference (RN, RC, RP, RX, RG, RA, RT, RL) Lines
079     * These lines comprise the literature citations within the database.
080     * The citations provide access to the papers from which the data has been
081     * abstracted.
082     *
083     * @return EmblReference
084     */
085    public List<EmblReference> getEmblReference() {
086        return emblReference;
087    }
088
089    public void setEmblReference(List<EmblReference> emblReference) {
090        this.emblReference = emblReference;
091    }
092
093    /**
094     * The AC (Accession number) line lists the accession numbers associated with
095     * the entry.
096     *
097     * @return List<String>
098     */
099    public List<String> getAccessionNumber() {
100        return accessionNumber;
101    }
102
103    public void setAccessionNumber(List<String> accessionNumber) {
104        this.accessionNumber = accessionNumber;
105    }
106
107    /**
108     * @return String
109     */
110    public String getProjectIdentifier() {
111        return projectIdentifier;
112    }
113
114    public void setProjectIdentifier(String projectIdentifier) {
115        this.projectIdentifier = projectIdentifier;
116    }
117
118    /**
119     * The OG (OrGanelle) linetype indicates the sub-cellular location of non-nuclear
120     * sequences.
121     *
122     * @return String
123     */
124    public String getOrGanelle() {
125        return orGanelle;
126    }
127
128    public void setOrGanelle(String orGanelle) {
129        this.orGanelle = orGanelle;
130    }
131
132    /**
133     * The DT  line shows when an entry first appeared in the database
134     *
135     * @return String
136     */
137    public String getCreatedDate() {
138        return createdDate;
139    }
140
141    public void setCreatedDate(String createdDate) {
142        this.createdDate = createdDate;
143    }
144
145    /**
146     * The FH (Feature Header) lines are present only to improve readability of
147     * an entry when it is printed or displayed on a terminal screen.
148     *
149     * @return String
150     */
151    public String getFeatureHeader() {
152        return featureHeader;
153    }
154
155    public void setFeatureHeader(String featureHeader) {
156        this.featureHeader = featureHeader;
157    }
158
159    /**
160     * The FT (Feature Table) lines provide a mechanism for the annotation of the
161     * sequence data. Regions or sites in the sequence which are of interest are
162     * listed in the table.
163     *
164     * @return String
165     */
166    public String getFeatureTable() {
167        return featureTable;
168    }
169
170    public void setFeatureTable(String featureTable) {
171        this.featureTable = featureTable;
172    }
173
174    /**
175     * The DT (DaTe) line shows when an entry was last updated in the database.
176     *
177     * @return String
178     */
179    public String getLastUpdatedDate() {
180        return lastUpdatedDate;
181    }
182
183    public void setLastUpdatedDate(String lastUpdatedDate) {
184        this.lastUpdatedDate = lastUpdatedDate;
185    }
186
187    /**
188     * The DE (Description) lines contain general descriptive information about the
189     * sequence stored. This may include the designations of genes for which the
190     * sequence codes, the region of the genome from which it is derived, or other
191     * information which helps to identify the sequence.
192     *
193     * @return String
194     */
195    public String getSequenceDescription() {
196        return sequenceDescription;
197    }
198
199    public void setSequenceDescription(String sequenceDescription) {
200        this.sequenceDescription = sequenceDescription;
201    }
202
203    /**
204     * The KW (KeyWord) lines provide information which can be used to generate
205     * cross-reference indexes of the sequence entries based on functional,
206     * structural, or other categories deemed important.
207     *
208     * @return List<String>
209     */
210    public List<String> getKeyword() {
211        return keyword;
212    }
213
214    public void setKeyword(List<String> keyword) {
215        this.keyword = keyword;
216    }
217
218    /**
219     * The OS (Organism Species) line specifies the preferred scientific name of
220     * the organism which was the source of the stored sequence. In most
221     * cases this is done by giving the Latin genus and species designations,
222     * followed (in parentheses) by the preferred common name in English where known.
223     *
224     * @return String
225     */
226    public String getOrganismSpecies() {
227        return organismSpecies;
228    }
229
230    public void setOrganismSpecies(String organismSpecies) {
231        this.organismSpecies = organismSpecies;
232    }
233
234    /**
235     * The OC (Organism Classification) lines contain the taxonomic classification
236     * Of the source organism
237     *
238     * @return String
239     */
240    public String getOrganismClassification() {
241        return organismClassification;
242    }
243
244    public void setOrganismClassification(String organismClassification) {
245        this.organismClassification = organismClassification;
246    }
247
248    /**
249     * The DR (Database Cross-reference) line cross-references other databases which
250     * contain information related to the entry in which the DR line appears.
251     *
252     * @return String
253     */
254    public String getDatabaseCrossReference() {
255        return databaseCrossReference;
256    }
257
258    public void setDatabaseCrossReference(String databaseCrossReference) {
259        this.databaseCrossReference = databaseCrossReference;
260    }
261
262    /**
263     * The AH (Assembly Header) line provides column headings for the assembly information.
264     *
265     * @return String
266     */
267    public String getAssemblyHeader() {
268        return assemblyHeader;
269    }
270
271    public void setAssemblyHeader(String assemblyHeader) {
272        this.assemblyHeader = assemblyHeader;
273    }
274
275    /**
276     * The AS (Assembly Information) lines provide information on the composition of
277     * a TPA or TSA sequence.
278     *
279     * @return String
280     */
281    public String getAssemblyInformation() {
282        return assemblyInformation;
283    }
284
285    public void setAssemblyInformation(String assemblyInformation) {
286        this.assemblyInformation = assemblyInformation;
287    }
288
289    /**
290     * Con(structed) sequences in the CON data classes represent complete
291     * chromosomes, genomes and other long sequences constructed from segment entries.
292     *
293     * @return String
294     */
295    public String getConstructedSequence() {
296        return constructedSequence;
297    }
298
299    public void setConstructedSequence(String constructedSequence) {
300        this.constructedSequence = constructedSequence;
301    }
302
303    /**
304     * The SQ (SeQuence header) line marks the beginning of the sequence data and
305     * Gives a summary of its content.
306     *
307     * @return String
308     */
309    public String getSequenceHeader() {
310        return sequenceHeader;
311    }
312
313    public void setSequenceHeader(String sequenceHeader) {
314        this.sequenceHeader = sequenceHeader;
315    }
316
317    /**
318     * The Sequence Data Line
319     *
320     * @return String
321     */
322    public String getSequence() {
323        return sequence;
324    }
325
326    public void setSequence(String sequence) {
327        this.sequence = sequence;
328    }
329
330}