The output in your most recent email looks normal to me. Once you have 'input' bound to the [Sequence] in ghci, can you then run:
ghci> let seqs = map (toStr . seqdata) seqs ghci> seqs The result should look something like: ["CCTGCGGAAGATCGGCACTA...","CCATCGGTAGCGCATCCTTAGTCCAATTAAG...",...] (ie. it should simply be a list of Strings) On Tue, Oct 21, 2014 at 4:47 PM, Youens-Clark, Charles Kenneth - (kyclark) < kycl...@email.arizona.edu> wrote: > Dan, > > That was very helpful. When I run your code on a different computer than > the first one I was working on, I see this: > > ghic> input > [Seq (SeqLabel {unSL = "Rosalind_6404"}) (SeqData {unSD = > "CCTGCGGAAGATCGGCACTAGAATAGCCAGAACCGTTTCTCTGAGGCTTCCGGCCTTCCCTCCCACTAATAATTCTGAGG"}) > Nothing,Seq (SeqLabel {unSL = "Rosalind_5959"}) (SeqData {unSD = > "CCATCGGTAGCGCATCCTTAGTCCAATTAAGTCCCTATCCAGGCGCTCCGCCGAAGGTCTATATCCATTTGTCAGCAGACACGC"}) > Nothing,Seq (SeqLabel {unSL = "Rosalind_0808"}) (SeqData {unSD = > "CCACCCTCGTGGTATGGCTAGGCATTCAGGAACCGGAGAACGCTTCAGACCAGCCCGGACTGGGAACCTGCGGGCAGTAGGTGGAAT"}) > Nothing] > ghic> :t input > input :: [Sequence] > > Which is entirely different from what I’m seeing on the other computer > (see below). Both are Macs. As far as I can tell, all versions of the > Haskell Platform and the modules are the same. > > Any ideas? > > Ken > > > On Oct 20, 2014, at 1:49 PM, Dan Fornika <dforn...@gmail.com> wrote: > > > > Hi Ken, > > > > I've also been working on the rosalind.info problem set. If you'd like > to see my answer for this problem, you can see it here: > > > > > https://github.com/dfornika/rosalind/blob/master/04_gc_content/04_gc_content.hs > > > > If you'd prefer to work through the problem yourself, I can offer some > advice to get started. The internal sequence data in the Sequence type in > Bio.Sequence.Fasta is a lazy bytestring. You can access the sequence data > with the 'seqdata' function from Bio.Sequence.Fasta, and convert it to a > 'plain old' String with 'toStr'. > > > > If you need to work with they bytestrings, you can import > Data.ByteString.Lazy.Char8. It should be imported 'qualified' so that it > doesn't conflict with functions from the Prelude. > > > > Here is some code. I haven't had a chance to test it, so I apologize for > any bugs. > > > > Dan > > > > module Main where > > > > import Bio.Core.Sequence > > import Bio.Sequence.Fasta > > import qualified Data.ByteString.Lazy.Char8 as B -- not necessary for > this example, but this is how you would import the bytestring functions. > > > > main :: IO() > > main = do > > input <- readFasta "./input.fasta" > > let seqs = map (toStr . seqdata) seqs > > mapM_ putStrLn seqs > > > > On Mon, Oct 20, 2014 at 9:27 AM, Youens-Clark, Charles Kenneth - > (kyclark) <kycl...@email.arizona.edu> wrote: > > I’m currently working my way through the problems at “rosalind.info,” > implementing each of my solutions in Perl, Python, and Haskell. I’m stuck > on the “GC” problem (http://rosalind.info/problems/gc/) as I need to > parse a FASTA file with "Bio.Sequence.Fasta.” > > > > In ghci, I can easily do this: > > > > ghci> let f = readFasta "input.fasta" > > ghci> f > > [ID ----------------------------------------------------------------- > > Rosalind_6404 > > > > COMMENT ------------------------------------------------------------ > > > > > > DATA --------------------------------------------------------------- > > 0 CCTGCGGAAG ATCGGCACTA GAATAGCCAG AACCGTTTCT CTGAGGCTTC CGGCCTTCCC > > 60 TCCCACTAAT AATTCTGAGG,ID > ----------------------------------------------------------------- > > Rosalind_5959 > > > > COMMENT ------------------------------------------------------------ > > > > > > DATA --------------------------------------------------------------- > > 0 CCATCGGTAG CGCATCCTTA GTCCAATTAA GTCCCTATCC AGGCGCTCCG CCGAAGGTCT > > 60 ATATCCATTT GTCAGCAGAC ACGC,ID ———————————————————————————————— > > … > > > > So I know it’s working, but I can’t figure out what to do with “f” now. > I can see it’s type: > > > > ghci> :t f > > f :: IO > > [Bio.Sequence.SeqData.Sequence Bio.Sequence.SeqData.Unknown] > > > > But what do I do with “f” to, say, iterate over the sequences and count > G/C content, get the length of the sequence, etc.? > > > > Thanks, > > > > Ken > > > >