Hi!!! A lot of thanks for all the advice :)I'm not able to use only 4 bits for Nuclei Acid, because in IUPAC code (including gaps) are 18 characters (and because Julia doesn't support less than 8).
A representation of Sequence objects using 8 bits looks to be the better option.
I read the manual and create types are easy in Julia, but maybe create to much types can be annoying for future users.
This is a personal opinion on usability:Sometimes use core features and types makes things more easy to learn and use, because you can reuse your knowledge.
One example: Numpy/Scipy types are great, I know one person that explicit reuse to use and learn and use Scipy/Numpy because is an entire world into Python and get boring with to large documentation.
Make things easy to use it's a good feature.
At the same time, this makes more easy to use other tools of the language.
Sometimes, it's easy convert a type to other (and create new methods from other methods in Julia). But the change form one object to other comes with some penalties (I don't test this penalties of converting types on Julia, but I remember Biopython to numpy penalties on performance how one of the starting point for looking alternatives -Julia-)
[ Create new methods from other methods in Julia it's easy... But I'm affarid that maybe It's going to come more difficult to maintain or update, because you need to know about new methods -and with growing library can be very difficult- ]
Back to types on Bio:I'm thinking that my first idea of a Composite Type (for load ids and annotations in the same object) for Sequences (Nucleic and Amino Acids) and other for Alignments based on a Char of 8 bits and ASCIIstrings (with optionals methods for check the IUPAC code) can be useful [I'm not sure about to create a Seq character of 8 bits, and array and string of this or not. Basically is going to be almost the same ASCIIstrings, and maybe use the base String are going to be better]. Composite types are going to have a look & fell like other Bio* projects and Sequences are going to have same behavior than arrays and strings of base (easy to learn one time you learn Julia) [ This two thing are going useful for People moving into Julia, a lot of People working on Bioinformatics comes from Biology Sciences and learn to program on the fly and usually don't change of language after learn one -the reason of popularity of BioPerl, for example, it's history-. Have an easy to learn, coherent and obvious behavior is a good and important feature in this field. ]
Char8:I know that a Char8 isn't not going to be faster, but it's going to take less memory. And, maybe, create a Char8 can be an expected behavior to chars() [ chars method over a
ASCIIstrings (8bits) returns a Char array of 8 bits (ASCII characters) ]
I'm not sure about to create a Seq character of 8 bits, and array and
string of this or not. Or if its better create a Char8. Basically a Seq type inside a Composite type is going to be almost the same that ASCIIstrings and Char (but with 8 bits). What do you think?
Really It's not a good idea for base have a Char8?
Thanks