Oops, there is a typo in my code. It should read: ghci> let seqs = map (toStr . seqdata) input ghci> seqs
Dan On Oct 21, 2014 6:15 PM, "Dan Fornika" <dforn...@gmail.com> wrote: > 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 >> > >> >> >