From njjustice@gmail.com Fri Jun 01 15:21:17 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SaRn0-0000AZ-Ub>; Fri, 01 Jun 2012 15:21:15 +0200 Received: from mail-lb0-f182.google.com ([209.85.217.182]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SaRn0-0005nn-QA>; Fri, 01 Jun 2012 15:21:14 +0200 Received: by lbon10 with SMTP id n10so2161159lbo.13 for ; Fri, 01 Jun 2012 06:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=7W7waFeBef3+2d75DdUqhiF9+1vsrKERByiMnBwKD4I=; b=b7H3n8/uoI4NLPQfIkrXo0Q1u6ocbfE+DuY/Ilha4pkk4MAw8vci62BGAkZtuHtvSY vwLrtRLGWROD70RU5AqK9Le3uwt8W8LfWkJe+8DwLGdMXtX08Rr4DcfPQzLH+pzhpujU 7COmVW8A9KI0YumEDetEdh+0qEQ0OYyjk29fEihT8NfAGyG/OrBl4cpgzsmKVG4S0mP1 FfoNa62L0XlLjR4W8q4wzbGULJ3Pj2Co0tKTcc6Mf9QPjM3zYiW9+FFPZuWSopIyjCJk NI5IHTZ3+nwZsD5G0T0kpC63R8X4rvey4VHRMR4uC6NmPEp1iAuX5jNMf/qeS9Y9pRhs lbPA== MIME-Version: 1.0 Received: by 10.112.83.169 with SMTP id r9mr1890827lby.66.1338556873218; Fri, 01 Jun 2012 06:21:13 -0700 (PDT) Received: by 10.112.65.38 with HTTP; Fri, 1 Jun 2012 06:21:13 -0700 (PDT) In-Reply-To: References: Date: Fri, 1 Jun 2012 08:21:13 -0500 Message-ID: From: Neil Justice To: seqan-dev@lists.fu-berlin.de Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Originating-IP: 209.85.217.182 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1338556874-00000D73-CC787E98/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Algerien.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=DNS_FROM_RFC_ABUSE, RCVD_BY_IP, SPF_HELO_PASS,SPF_PASS Subject: Re: [Seqan-dev] seqan-dev Digest, Vol 33, Issue 1 X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 13:21:17 -0000 Hi Manuel, I'm looking to generally contribute performance-wise to SeqAn. My domain knowledge of bioinformatics topics is near zero, so C++-centric optimizations and singlethreaded to multithreaded optimizations are of most interest to me. In what files do the performance-critical algorithms you mentioned reside? q-gram, ESA, WOTD, alignment, etc. How can performance tests be written against these algorithms? In what files do the non-parallel compression and decompression of BGZF files reside? How can a performance test be written against this code? Thanks for the seqan-contrib link, that fixed the compiler errors. Cheers, Neil On Fri, Jun 1, 2012 at 5:00 AM, wro= te: > Send seqan-dev mailing list submissions to > =A0 =A0 =A0 =A0seqan-dev@lists.fu-berlin.de > > To subscribe or unsubscribe via the World Wide Web, visit > =A0 =A0 =A0 =A0https://lists.fu-berlin.de/listinfo/seqan-dev > or, via email, send a message with subject or body 'help' to > =A0 =A0 =A0 =A0seqan-dev-request@lists.fu-berlin.de > > You can reach the person managing the list at > =A0 =A0 =A0 =A0seqan-dev-owner@lists.fu-berlin.de > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of seqan-dev digest..." > > > Today's Topics: > > =A0 1. Re: seqan-dev Digest, Vol 32, Issue 8 (Holtgrewe, Manuel) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Thu, 31 May 2012 11:07:22 +0000 > From: "Holtgrewe, Manuel" > To: SeqAn Development > Subject: Re: [Seqan-dev] seqan-dev Digest, Vol 32, Issue 8 > Message-ID: > =A0 =A0 =A0 =A0 > Content-Type: text/plain; charset=3D"us-ascii" > > Hi Neal, > > Regarding performance sensitive code: My main assumption here is that you= are looking for an area to contribute to. =A0Maybe you could elaborate a b= it on what you want to do. Do you want to look into performance-tweaking pa= rts of the library or "generally contribute performance-wise" to the librar= y? Below, I give some possible projects for both. > > The inner loops are inside the index (most interesting: q-gram, ESA, WOTD= indices) and online string search finders (myers and banded myers algorith= m are the most interesting here for edit distance). The index building algo= rithms are also a point for possible optimization. Also important to many a= pplications is the SWIFT q-gram counting based and pigeonhole filter algori= thms. > > Another larger area with inner loops are the alignment algorithms but we = are in the process of rewriting this part of SeqAn. Hopefully this will be = completed in 1-2 months so it becomes a possible target. > > I am not too sure whether these are low-hanging fruits for performance op= timization because we looked into this in detail in most cases. That said, = if you are interested in this area, I can give you the exact locations and = explain how to write performance test programs with real-world input. > > If I may somewhat widen your question from "performance issues" to "perfo= rmance-related", it might be easier to find a "big bang for the buck" probl= em to tackle. Here, improved implementations or parallelization of certain = important library parts come to mind. Some examples: > > - Parallel compression and decompression of BGZF files (they consist of g= zip compressed blocks and could thus be parallelized). This comes down to p= orting an existing threadpool library to C++11 and using C++11 threads for = a parallel BGZF reader/writer and BAM file sorter. I have the beginning of = this on my local disk but we could easily make this a github project. This = requires no prior knowledge in sequence analysis algorithms but expertise i= n C++ and parallel programming. > > - Space efficient BWT construction. This basically consists of implementi= ng an existing algorithm in SeqAn. More information can be found here: http= s://www.mi.fu-berlin.de/w/ABI/SpaceEfficientBWTConstruction. The requiremen= t on sequence analysis algorithms is probably quite low here and the necess= ary parts could be learned on the fly. > > - Parallelization of suffix array construction. This is a large chunk of = work and would require to rewrite the parallel external memory part of the = algorithm and probably extend the external memory algorithms and data struc= tures part of SeqAn to parallelism. > > Cheers, > Manuel > > PS: A valuable resource for looking SeqAn-related things up besides the T= utorial is http://docs.seqan.de/seqan/dev2/. > > > ------------------------------ > > _______________________________________________ > seqan-dev mailing list > seqan-dev@lists.fu-berlin.de > https://lists.fu-berlin.de/listinfo/seqan-dev > > > End of seqan-dev Digest, Vol 33, Issue 1 > **************************************** From okko73313@gmail.com Mon Jun 04 17:01:29 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SbYme-00053V-7f>; Mon, 04 Jun 2012 17:01:28 +0200 Received: from mail-yw0-f54.google.com ([209.85.213.54]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SbYmd-0000Ji-RL>; Mon, 04 Jun 2012 17:01:28 +0200 Received: by yhgm50 with SMTP id m50so3519188yhg.13 for ; Mon, 04 Jun 2012 08:01:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:sender:date:x-google-sender-auth:message-id :subject:from:to:content-type; bh=OcnlxFrXUb1ykhSp3VlJa+iCuc1JYsRXkGiBZI0vztA=; b=y4YCi2R60tQmNmajDnS0xP2+Jnqz4urNFXxW73ieLSZQID+8hs7LtbSxOJ934CVueY dATY7ypAVJGjCqTfjX9seQ7I8GUsUbHW+57kfj5NVgZdo9FSx/856+WggHnlPpzIEere VBf0lN5UB6yZxsZEalO7bwHX2hAhRCU69TUVvHp2e4D40OCTR+eyo7mIsk4/U5U/scJs heL2BTbgKQffNoSAtvMYiUbWCqQ6gVpj1hz1gDWMwMPi1+TuZfVMicrzWXTawSKrogIF 0Hl2pkGr+5aJWpXkY5l7d9nQEpj56AewYg2UOxUIDVUXF4kC++22TAXeSV8cGrsAFHwA d4/w== MIME-Version: 1.0 Received: by 10.101.2.34 with SMTP id e34mr3758204ani.45.1338822085739; Mon, 04 Jun 2012 08:01:25 -0700 (PDT) Sender: okko73313@gmail.com Received: by 10.236.109.201 with HTTP; Mon, 4 Jun 2012 08:01:25 -0700 (PDT) Date: Mon, 4 Jun 2012 17:01:25 +0200 X-Google-Sender-Auth: Cr1LEKFfM0YW1OZ5RDPdACWWbdk Message-ID: From: Konstantin Okonechnikov To: seqan-dev@lists.fu-berlin.de Content-Type: multipart/mixed; boundary=0016368e2ee9d6858e04c1a6ce94 X-Originating-IP: 209.85.213.54 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1338822088-00000D73-01C60A9A/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Burundi.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=0.4 required=5.0 tests=DNS_FROM_RFC_ABUSE, RCVD_BY_IP, SPF_HELO_PASS,SPF_PASS Subject: [Seqan-dev] bug in ArgumentParser X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: k.okonechnikov@gmail.com, SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jun 2012 15:01:29 -0000 --0016368e2ee9d6858e04c1a6ce94 Content-Type: text/plain; charset=ISO-8859-1 Hi, I've encountered a problem while using the ArgumentParser. Plz, find simple example and its output attached. The attached sample crashes if launched without any parameters. ./simple Actually, it doesn't crash only if all parameters are provided: ./simple -i in -o out -t 42 Tested in svn revision 12035. Env: Ubuntu Linux 10.04 64-bit, gcc 4.4.5 Best regards, Konstantin --0016368e2ee9d6858e04c1a6ce94 Content-Type: text/plain; charset=US-ASCII; name="bad_output.txt" Content-Disposition: attachment; filename="bad_output.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h31nzllh1 L2hvbWUva29rb25lY2gvcGxheWdybmQvc2VxYW4tdHJ1bmsvY29yZS9pbmNsdWRlL3NlcWFuL2Fy Z19wYXJzZS9hcmdfcGFyc2VfYXJndW1lbnQuaDo2OTcgQXNzZXJ0aW9uIGZhaWxlZCA6IHBvc2l0 aW9uIDwgbWUudmFsdWUuc2l6ZSgpIHx8IHBvc2l0aW9uIDwgbWUuZGVmYXVsdFZhbHVlLnNpemUo KSBzaG91bGQgYmUgdHJ1ZSBidXQgd2FzIDAgKEFyZ1BhcnNlQXJndW1lbnQ6IE5vIHZhbHVlIHNl dCBmb3IgaW5kZXggMCkKCnN0YWNrIHRyYWNlOgogIDAgICAgICAgICAgWzB4NDFjNzI0XSAgc2Vx YW46OkNsYXNzVGVzdDo6ZmFpbCgpICsgMHhlCiAgMSAgICAgICAgICBbMHg0MWU0N2FdICBzZXFh bjo6Z2V0QXJndW1lbnRWYWx1ZShzZXFhbjo6QXJnUGFyc2VBcmd1bWVudCBjb25zdCYsIHVuc2ln bmVkIGludCkgKyAweDg3CiAgMiAgICAgICAgICBbMHg0MmQxOGFdICBib29sIHNlcWFuOjpnZXRP cHRpb25WYWx1ZTxzZXFhbjo6U3RyaW5nPGNoYXIsIHNlcWFuOjpBbGxvYzx2b2lkPiA+ID4oc2Vx YW46OlN0cmluZzxjaGFyLCBzZXFhbjo6QWxsb2M8dm9pZD4gPiYsIHNlcWFuOjpBcmd1bWVudFBh cnNlciBjb25zdCYsIHN0ZDo6c3RyaW5nIGNvbnN0JiwgdW5zaWduZWQgaW50KSArIDB4OTIKICAz ICAgICAgICAgIFsweDQyOTg5OF0gIGJvb2wgc2VxYW46OmdldE9wdGlvblZhbHVlPHNlcWFuOjpT dHJpbmc8Y2hhciwgc2VxYW46OkFsbG9jPHZvaWQ+ID4gPihzZXFhbjo6U3RyaW5nPGNoYXIsIHNl cWFuOjpBbGxvYzx2b2lkPiA+Jiwgc2VxYW46OkFyZ3VtZW50UGFyc2VyIGNvbnN0Jiwgc3RkOjpz dHJpbmcgY29uc3QmKSArIDB4MzEKICA0ICAgICAgICAgIFsweDQxYzEwNF0gIG1haW4gKyAweDE2 OQogIDUgICAgWzB4N2Y1MWU3MmUyZDhlXSAgX19saWJjX3N0YXJ0X21haW4gKyAweGZlCiAgNiAg ICAgICAgICBbMHg0MTlkZTldICAuL3NpbXBsZSgpCgo= --0016368e2ee9d6858e04c1a6ce94 Content-Type: text/x-c++src; charset=US-ASCII; name="simple.cpp" Content-Disposition: attachment; filename="simple.cpp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h31nys110 I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2luY2x1ZGUgPHNlcWFuL2Jhc2ljLmg+CiNpbmNsdWRlIDxz ZXFhbi9zZXF1ZW5jZS5oPgojaW5jbHVkZSA8c2VxYW4vZmlsZS5oPiAgICAgIC8vIEZvciBwcmlu dGluZyBTZXFBbiBTdHJpbmdzLgoKI2luY2x1ZGUgPHNlcWFuL3N0cmVhbS5oPgojaW5jbHVkZSA8 c2VxYW4vYmFtX2lvLmg+CiNpbmNsdWRlIDxzZXFhbi9hcmdfcGFyc2UuaD4KCgp1c2luZyBuYW1l c3BhY2Ugc2VxYW47CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgogCiAgICAKdm9pZCBzZXR1cEFyZ3Vt ZW50UGFyc2VyKEFyZ3VtZW50UGFyc2VyICYgcGFyc2VyKQp7CiAgICBzZXRWZXJzaW9uKHBhcnNl ciwgIjEuMCIpOwogICAgc2V0U2hvcnREZXNjcmlwdGlvbihwYXJzZXIsICI0MiIpOwoKICAgIGFk ZFVzYWdlTGluZShwYXJzZXIsICJzaW1wbGUgW09QVElPTlNdIik7CiAgICAKCWFkZFNlY3Rpb24o cGFyc2VyLCAiT3B0aW9ucyIpOwogICAgYWRkT3B0aW9uKHBhcnNlciwgQXJnUGFyc2VPcHRpb24o InYiLCAidmVyYm9zZSIsICJFbmFibGUgdmVyYm9zZSBtb2RlIChzaG93IHN0ZXBzKS4iKSApOwog ICAgYWRkT3B0aW9uKHBhcnNlciwgQXJnUGFyc2VPcHRpb24oImkiLCAiaW5wdXQtZmlsZSIsICJQ YXRoIHRvIGlucHV0IGZpbGUuIiwgQXJnUGFyc2VBcmd1bWVudDo6U1RSSU5HICkpOwogICAgLy9z ZXRSZXF1aXJlZChwYXJzZXIsICJpIiwgdHJ1ZSk7CiAgICBhZGRPcHRpb24ocGFyc2VyLCBBcmdQ YXJzZU9wdGlvbigibyIsICJvdXRwdXQtZmlsZSIsICJQYXRoIHRvIG91dHB1dCBmaWxlLiIsIEFy Z1BhcnNlQXJndW1lbnQ6OlNUUklORyApKTsKICAgIGFkZE9wdGlvbihwYXJzZXIsIEFyZ1BhcnNl T3B0aW9uKCJ0IiwgInRocmVzaG9sZCIsICJNYXggZXNob2xkLiIsIEFyZ1BhcnNlQXJndW1lbnQ6 OklOVEVHRVIgKSk7CiAgICBzZXRNaW5WYWx1ZShwYXJzZXIsICJ0IiwgIjEiKTsKICAgIAogICAg YWRkVGV4dFNlY3Rpb24ocGFyc2VyLCAiUmVmZXJlbmNlcyIpOwogICAgYWRkVGV4dChwYXJzZXIs ICJrMDBrIDxva29uZWNobmlrb3ZAbXBpaWItYmVybGluLm1wZy5kZT4iKTsKfQoKCgppbnQgbWFp bihpbnQgYXJnYywgY2hhciBjb25zdCAqKiBhcmd2KQp7CiAgICAKICAgIEFyZ3VtZW50UGFyc2Vy IHBhcnNlcigic2ltcGxlIik7CiAgICBzZXR1cEFyZ3VtZW50UGFyc2VyKHBhcnNlcik7CiAgICAK ICAgIEFyZ3VtZW50UGFyc2VyOjpQYXJzZVJlc3VsdCByZXMgPSBwYXJzZShwYXJzZXIsIGFyZ2Ms IGFyZ3YpOwogICAgaWYgKHJlcyAhPSBBcmd1bWVudFBhcnNlcjo6UEFSU0VfT0spIHsKICAgICAg ICByZXR1cm4gMTsKICAgIH0KCiAgICBDaGFyU3RyaW5nIGluRmlsZSwgb3V0RmlsZTsKICAgIGlu dCB0aHJlc2hvbGQgPSAwOwogICAgYm9vbCB2ZXJib3NlID0gZmFsc2U7CgogICAgZ2V0T3B0aW9u VmFsdWUoaW5GaWxlLCBwYXJzZXIsICJpIik7CiAgICBnZXRPcHRpb25WYWx1ZShvdXRGaWxlLCBw YXJzZXIsICJvIik7CiAgICBnZXRPcHRpb25WYWx1ZSh0aHJlc2hvbGQsIHBhcnNlciwgInQiKTsK ICAgIGdldE9wdGlvblZhbHVlKHZlcmJvc2UsIHBhcnNlciwgInYiKTsKCiAgICBjZXJyIDw8ICJP cHRpb25zIiA8PCBlbmRsOwogICAgY2VyciA8PCAiSW5wdXQgZmlsZTogICIgPDwgaW5GaWxlIDw8 IGVuZGw7CiAgICBjZXJyIDw8ICJPdXRwdXQgZmlsZTogIiA8PCBvdXRGaWxlIDw8IGVuZGw7CiAg ICBjZXJyIDw8ICJNYXggY292ZXJhZ2UgdGhyZXNob2xkOiAiIDw8IHRocmVzaG9sZCA8PCBlbmRs OwogICAgY2VyciA8PCAiVmVyYm9zZTogIiA8PCB2ZXJib3NlIDw8IGVuZGw7CgogICAgcmV0dXJu IDA7Cn0KCgo= --0016368e2ee9d6858e04c1a6ce94-- From manuel.holtgrewe@fu-berlin.de Mon Jun 04 20:47:13 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SbcJ5-0003cs-OP>; Mon, 04 Jun 2012 20:47:11 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SbcJ5-00043g-Kt>; Mon, 04 Jun 2012 20:47:11 +0200 Received: from cas2.campus.fu-berlin.de ([130.133.170.202]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SbcJ5-00073p-E6>; Mon, 04 Jun 2012 20:47:11 +0200 Received: from EX02A.campus.fu-berlin.de ([130.133.170.132]) by CAS2.campus.fu-berlin.de ([130.133.170.202]) with mapi id 14.02.0298.004; Mon, 4 Jun 2012 20:47:10 +0200 From: "Holtgrewe, Manuel" To: SeqAn Development Thread-Topic: [Seqan-dev] Blosum80 Matrix Thread-Index: AQHNNyS61kk+Ofaxz0e3cvPJ6W8sDJbqle35 Date: Mon, 4 Jun 2012 18:47:10 +0000 Message-ID: References: <4FB9F0EA.3090304@mi.fu-berlin.de> In-Reply-To: <4FB9F0EA.3090304@mi.fu-berlin.de> Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Originating-IP: 130.133.170.202 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1338835631-00000D73-23EA170F/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Benin.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=ALL_TRUSTED Subject: Re: [Seqan-dev] Blosum80 Matrix X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Jun 2012 18:47:14 -0000 Good point!=0A= =0A= I refurbished the score and matrix code some while back and am quite sure t= hat I replaced the Blosum matrices with identical copies. However, I have n= o practical knowledge about BLOSUM and amino acid alignments.=0A= =0A= I would be willing to replace the matrix in the library if nobody objects.= =0A= =0A= Hannes, do you and/or your colleagues have any other remarks on the matrice= s?=0A= =0A= Cheers,=0A= Manuel=0A= ________________________________________=0A= From: Hannes Hauswedell [hauswedell@mi.fu-berlin.de]=0A= Sent: Monday, May 21, 2012 9:38 AM=0A= To: seqan-dev@lists.fu-berlin.de=0A= Subject: [Seqan-dev] Blosum80 Matrix=0A= =0A= Hey everyone,=0A= =0A= the Blosum80 used internally in seqan is this one:=0A= http://www.cbcb.umd.edu/confcour/CMSC423-materials/BLOSUM80.txt=0A= which says "Matrix made by matblas from blosum80_3.iij"=0A= =0A= However most other references to Blosum80 on the web refer to this one:=0A= http://www.cs.ucf.edu/courses/cap5937/fall2004/assignment2/BLOSUM80=0A= which says "Matrix made by matblas from blosum80.iij"=0A= =0A= They do differ quite a bit. Does anyone know the background? Why was one=0A= chosen over the other?=0A= =0A= Regards,=0A= Hannes=0A= =0A= _______________________________________________=0A= seqan-dev mailing list=0A= seqan-dev@lists.fu-berlin.de=0A= https://lists.fu-berlin.de/listinfo/seqan-dev=0A= From hauswedell@mi.fu-berlin.de Thu Jun 07 08:30:13 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ScWEV-0005mn-50>; Thu, 07 Jun 2012 08:30:11 +0200 Received: from inpost2.zedat.fu-berlin.de ([130.133.4.69]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ScWEV-0002SI-2e>; Thu, 07 Jun 2012 08:30:11 +0200 Received: from [202.127.20.13] (helo=[10.10.118.79]) by inpost2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtpsa (envelope-from ) id <1ScWEU-0007zt-P5>; Thu, 07 Jun 2012 08:30:11 +0200 Message-ID: <4FD04A6E.1030506@mi.fu-berlin.de> Date: Thu, 07 Jun 2012 14:30:06 +0800 From: Hannes Hauswedell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: seqan-dev@lists.fu-berlin.de References: <4FB9F0EA.3090304@mi.fu-berlin.de> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: 202.127.20.13 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1339050611-00000D73-5D082A34/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Gabun.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=ALL_TRUSTED, RCVD_IN_NJABL_PROXY Subject: Re: [Seqan-dev] Blosum80 Matrix X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2012 06:30:13 -0000 Hi Manuel, I have not discussed this with other people and I switched to Blosum62, because it was more adequate in the end. It is just something I noticed, but maybe you should verify with other people or check which one is used by default in other programs... Best, Hannes On 06/05/2012 02:47 AM, Holtgrewe, Manuel wrote: > Good point! > > I refurbished the score and matrix code some while back and am quite sure that I replaced the Blosum matrices with identical copies. However, I have no practical knowledge about BLOSUM and amino acid alignments. > > I would be willing to replace the matrix in the library if nobody objects. > > Hannes, do you and/or your colleagues have any other remarks on the matrices? > > Cheers, > Manuel > ________________________________________ > From: Hannes Hauswedell [hauswedell@mi.fu-berlin.de] > Sent: Monday, May 21, 2012 9:38 AM > To: seqan-dev@lists.fu-berlin.de > Subject: [Seqan-dev] Blosum80 Matrix > > Hey everyone, > > the Blosum80 used internally in seqan is this one: > http://www.cbcb.umd.edu/confcour/CMSC423-materials/BLOSUM80.txt > which says "Matrix made by matblas from blosum80_3.iij" > > However most other references to Blosum80 on the web refer to this one: > http://www.cs.ucf.edu/courses/cap5937/fall2004/assignment2/BLOSUM80 > which says "Matrix made by matblas from blosum80.iij" > > They do differ quite a bit. Does anyone know the background? Why was one > chosen over the other? > > Regards, > Hannes > > _______________________________________________ > seqan-dev mailing list > seqan-dev@lists.fu-berlin.de > https://lists.fu-berlin.de/listinfo/seqan-dev > > _______________________________________________ > seqan-dev mailing list > seqan-dev@lists.fu-berlin.de > https://lists.fu-berlin.de/listinfo/seqan-dev From hauswedell@mi.fu-berlin.de Thu Jun 07 08:42:29 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ScWQM-0006AP-AI>; Thu, 07 Jun 2012 08:42:26 +0200 Received: from inpost2.zedat.fu-berlin.de ([130.133.4.69]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ScWQM-0004xg-77>; Thu, 07 Jun 2012 08:42:26 +0200 Received: from [202.127.20.13] (helo=[10.10.118.79]) by inpost2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtpsa (envelope-from ) id <1ScWQL-0000Do-TW>; Thu, 07 Jun 2012 08:42:26 +0200 Message-ID: <4FD04D4F.1020109@mi.fu-berlin.de> Date: Thu, 07 Jun 2012 14:42:23 +0800 From: Hannes Hauswedell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: SeqAn Development Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: 202.127.20.13 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1339051346-00000D73-2724DDDD/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.007251, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Botsuana.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=ALL_TRUSTED, RCVD_IN_NJABL_PROXY Subject: [Seqan-dev] SeqAn on FreeBSD / two general issues X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Jun 2012 06:42:29 -0000 FYI: I have ported the latest SeqAn release to FreeBSD, it is available as biology/seqan [1]. The port contains fixes for two issues I encountered that are unrelated to FreeBSD: 1) The release does not install seqan.h. I don't know if thats intended, but I would think not. This is the case for SeqAn on other OSes aswell, since seqan.h is simply not included in the CMake-magic (e.g. check the Ubuntu/Debian packages). This patch [2] fixes it. 2) RazerS installs its gapped_params into the binary folder on Unix (/usr/bin or /usr/local/bin), which violates the system hierarchy rules on most systems. Debian/Ubuntu patch around it.. This patch [3] makes it install them to /usr/[local/]share/seqan/. Feel free to upstream any of that, if you think they are valid fixes. Best, Hannes [1] http://www.freshports.org/biology/seqan/ [2] http://www.freebsd.org/cgi/cvsweb.cgi/ports/biology/seqan/files/patch-cmake-CMakeLists.txt?rev=1.1;content-type=text%2Fplain [3] http://www.freebsd.org/cgi/cvsweb.cgi/ports/biology/seqan/files/patch-cmake-apps-CMakeLists.txt?rev=1.1;content-type=text%2Fplain From manuel.holtgrewe@fu-berlin.de Mon Jun 18 22:31:44 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1Sgibu-0003hF-6Y>; Mon, 18 Jun 2012 22:31:42 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1Sgibu-00086d-3u>; Mon, 18 Jun 2012 22:31:42 +0200 Received: from cas2.campus.fu-berlin.de ([130.133.170.202]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1Sgibt-0001GC-Uk>; Mon, 18 Jun 2012 22:31:42 +0200 Received: from EX02A.campus.fu-berlin.de ([130.133.170.132]) by CAS2.campus.fu-berlin.de ([130.133.170.202]) with mapi id 14.02.0298.004; Mon, 18 Jun 2012 22:31:40 +0200 From: "Holtgrewe, Manuel" To: SeqAn Development Thread-Topic: Parallelization of BGZF Thread-Index: AQHNTZBsAEhWQz1Hmkylnv4PYFbSJg== Date: Mon, 18 Jun 2012 20:31:39 +0000 Message-ID: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Originating-IP: 130.133.170.202 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340051502-00000D73-2F12123E/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Algerien.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=ALL_TRUSTED Subject: [Seqan-dev] Parallelization of BGZF X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Jun 2012 20:31:44 -0000 Hi Neil,=0A= =0A= I have cut out the relevant parts out of SeqAn for the parallelization of B= GZF I/O.=0A= =0A= The BGZF format (described on page 8 in http://samtools.sourceforge.net/SAM= 1.pdf) is basically a sequence of zlib compressed blocks. Using blocks crea= tes some interesting possibilities, i.e. jumping to positions in such files= and also the parallel compression and decompression of the files: Many blo= cks can be read at the same time in parallel, given that they are shown to = the user in the order they have in the file.=0A= =0A= I have setup a public Github repository that you can fork and make your mod= ifications in. I don't know how familiar you are with Github, but after log= ging in you can make your own copy of my repository (called forking). Then = you can checkout the repository using Git (checkout is called "clone") or S= ubversion (checkout is called checkout :), and make your modifications.=0A= =0A= https://github.com/holtgrewe/bam_mt=0A= =0A= The instructions in the Github repository are for Unix style operating syst= ems, they should be easily translatable into the Windows world. (A good Sub= version client for Windows is TortoiseSVN).=0A= =0A= Note that you need zlib to have the compression necessary for BGZF I/O, you= can install the SeqAn contribs, but IIRC you have already done so.=0A= =0A= I would like us to use threadpool for the parallelization since this will a= llow us to fix the total number of threads for I/O by sharing one threadpoo= l instance.=0A= =0A= http://threadpool.sourceforge.net/=0A= =0A= Priority queue tasks queues can help us to balance and order I/O packages. = I have already added a copy of this library to the sandbox. Note that this = library requires Boost. However, the library is a bit outdated so it might = need adaption to work with a current Boost.Thread version.=0A= =0A= I have copied over the sequential Bgzf stream specialization into the sandb= ox (and called it Bgzf2), copied over the tests and also a small applicatio= n bam2bam for testing/benchmarking.=0A= =0A= You use it like this=0A= =0A= bam2bam IN.bam OUT.bam=0A= =0A= The input BAM file should be the same as the output BAM file. Note that the= BAM format is a bit ambiguous and reading and writing it might change its = content slightly. However, once you have copied a file using the SeqAn bam_= io module, reading and writing it again should keep its content identical.= =0A= =0A= If you want a small example BAM file (BAM file are BGZF compressed), then m= aybe use this one:=0A= =0A= http://code.google.com/p/gasv/downloads/detail?name=3DExample.bam=0A= =0A= After reading and writing, the md5sum was 9cb9ee685d908aaf4d1b2f4dff211bd0 = for me.=0A= =0A= OK, I hope this is enough to get you started. If there are any problems or = issues or points you want to raise for discussion, don't hesitate to send a= n email.=0A= =0A= Cheers,=0A= Manuel=0A= ________________________________________=0A= From: Neil Justice [njjustice@gmail.com]=0A= Sent: Friday, June 01, 2012 3:21 PM=0A= To: seqan-dev@lists.fu-berlin.de=0A= Subject: Re: [Seqan-dev] seqan-dev Digest, Vol 33, Issue 1=0A= =0A= Hi Manuel,=0A= =0A= I'm looking to generally contribute performance-wise to SeqAn. My=0A= domain knowledge of bioinformatics topics is near zero, so C++-centric=0A= optimizations and singlethreaded to multithreaded optimizations are of=0A= most interest to me.=0A= =0A= In what files do the performance-critical algorithms you mentioned=0A= reside? q-gram, ESA, WOTD, alignment, etc. How can performance tests=0A= be written against these algorithms?=0A= =0A= In what files do the non-parallel compression and decompression of=0A= BGZF files reside? How can a performance test be written against this=0A= code?=0A= =0A= Thanks for the seqan-contrib link, that fixed the compiler errors.=0A= =0A= Cheers,=0A= Neil=0A= =0A= On Fri, Jun 1, 2012 at 5:00 AM, wro= te:=0A= > Send seqan-dev mailing list submissions to=0A= > seqan-dev@lists.fu-berlin.de=0A= >=0A= > To subscribe or unsubscribe via the World Wide Web, visit=0A= > https://lists.fu-berlin.de/listinfo/seqan-dev=0A= > or, via email, send a message with subject or body 'help' to=0A= > seqan-dev-request@lists.fu-berlin.de=0A= >=0A= > You can reach the person managing the list at=0A= > seqan-dev-owner@lists.fu-berlin.de=0A= >=0A= > When replying, please edit your Subject line so it is more specific=0A= > than "Re: Contents of seqan-dev digest..."=0A= >=0A= >=0A= > Today's Topics:=0A= >=0A= > 1. Re: seqan-dev Digest, Vol 32, Issue 8 (Holtgrewe, Manuel)=0A= >=0A= >=0A= > ----------------------------------------------------------------------=0A= >=0A= > Message: 1=0A= > Date: Thu, 31 May 2012 11:07:22 +0000=0A= > From: "Holtgrewe, Manuel" =0A= > To: SeqAn Development =0A= > Subject: Re: [Seqan-dev] seqan-dev Digest, Vol 32, Issue 8=0A= > Message-ID:=0A= > = =0A= > Content-Type: text/plain; charset=3D"us-ascii"=0A= >=0A= > Hi Neal,=0A= >=0A= > Regarding performance sensitive code: My main assumption here is that you= are looking for an area to contribute to. Maybe you could elaborate a bit= on what you want to do. Do you want to look into performance-tweaking part= s of the library or "generally contribute performance-wise" to the library?= Below, I give some possible projects for both.=0A= >=0A= > The inner loops are inside the index (most interesting: q-gram, ESA, WOTD= indices) and online string search finders (myers and banded myers algorith= m are the most interesting here for edit distance). The index building algo= rithms are also a point for possible optimization. Also important to many a= pplications is the SWIFT q-gram counting based and pigeonhole filter algori= thms.=0A= >=0A= > Another larger area with inner loops are the alignment algorithms but we = are in the process of rewriting this part of SeqAn. Hopefully this will be = completed in 1-2 months so it becomes a possible target.=0A= >=0A= > I am not too sure whether these are low-hanging fruits for performance op= timization because we looked into this in detail in most cases. That said, = if you are interested in this area, I can give you the exact locations and = explain how to write performance test programs with real-world input.=0A= >=0A= > If I may somewhat widen your question from "performance issues" to "perfo= rmance-related", it might be easier to find a "big bang for the buck" probl= em to tackle. Here, improved implementations or parallelization of certain = important library parts come to mind. Some examples:=0A= >=0A= > - Parallel compression and decompression of BGZF files (they consist of g= zip compressed blocks and could thus be parallelized). This comes down to p= orting an existing threadpool library to C++11 and using C++11 threads for = a parallel BGZF reader/writer and BAM file sorter. I have the beginning of = this on my local disk but we could easily make this a github project. This = requires no prior knowledge in sequence analysis algorithms but expertise i= n C++ and parallel programming.=0A= >=0A= > - Space efficient BWT construction. This basically consists of implementi= ng an existing algorithm in SeqAn. More information can be found here: http= s://www.mi.fu-berlin.de/w/ABI/SpaceEfficientBWTConstruction. The requiremen= t on sequence analysis algorithms is probably quite low here and the necess= ary parts could be learned on the fly.=0A= >=0A= > - Parallelization of suffix array construction. This is a large chunk of = work and would require to rewrite the parallel external memory part of the = algorithm and probably extend the external memory algorithms and data struc= tures part of SeqAn to parallelism.=0A= >=0A= > Cheers,=0A= > Manuel=0A= >=0A= > PS: A valuable resource for looking SeqAn-related things up besides the T= utorial is http://docs.seqan.de/seqan/dev2/.=0A= >=0A= >=0A= > ------------------------------=0A= >=0A= > _______________________________________________=0A= > seqan-dev mailing list=0A= > seqan-dev@lists.fu-berlin.de=0A= > https://lists.fu-berlin.de/listinfo/seqan-dev=0A= >=0A= >=0A= > End of seqan-dev Digest, Vol 33, Issue 1=0A= > ****************************************=0A= =0A= _______________________________________________=0A= seqan-dev mailing list=0A= seqan-dev@lists.fu-berlin.de=0A= https://lists.fu-berlin.de/listinfo/seqan-dev=0A= From t.hu@celmatix.com Tue Jun 19 21:14:04 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1Sh3sH-0004EV-Kb>; Tue, 19 Jun 2012 21:14:01 +0200 Received: from mail-qa0-f42.google.com ([209.85.216.42]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1Sh3sH-0003Dv-Bz>; Tue, 19 Jun 2012 21:14:01 +0200 Received: by qafi31 with SMTP id i31so2352405qaf.15 for ; Tue, 19 Jun 2012 12:13:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:content-type:subject:date:message-id:to:mime-version:x-mailer :x-gm-message-state; bh=IY1N3kxy6vhsz7EtOWBPlgbgf0t0mbXmFh/wLvIu4fg=; b=ZRAzlp92Iirm1TPSy1syC06XgrE0Mi+g3Ly+0B7eAZejix1x6nKVQ+L+Tqdf/gYZKB LE9FKbcnoP1IKb7OgLk27RpIKdJlhtMFk74Q82N7QyRg4aDcjiazYcL1IqbWjL03vCVv eBKFIx6mL6Vb0c7XAxBZrN/rldJHU2s9WFEPsX99yxBzvWAmc7aqS4CaBeL/oA+eQ8Ln qm5s7zCzTUYfOpb+umPaB4i9ajCWmO4Fnswm6tbadSWzDP3jdbbNbrrBXj8UWH9Ybr0p UhlbaRSfiPNwZrPa9hkxduZ86EFCjueYXFArLBmodn2By7UYgLKYT2MCBFi1FeAzJht0 zcow== Received: by 10.224.189.17 with SMTP id dc17mr36002396qab.14.1340133239351; Tue, 19 Jun 2012 12:13:59 -0700 (PDT) Received: from [172.16.16.186] ([204.145.81.110]) by mx.google.com with ESMTPS id dr1sm50253260qab.2.2012.06.19.12.13.58 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 19 Jun 2012 12:13:58 -0700 (PDT) From: Tina Hu Content-Type: multipart/alternative; boundary="Apple-Mail=_1D83384B-DF61-48D3-8992-E7097CC6A372" Date: Tue, 19 Jun 2012 15:13:58 -0400 Message-Id: To: seqan-dev@lists.fu-berlin.de Mime-Version: 1.0 (Apple Message framework v1278) X-Mailer: Apple Mail (2.1278) X-Gm-Message-State: ALoCoQm/4b00QCpBzgYds7cXcj6J+Db6kTNk5RbgBh1TjD9tvsE2/uQZUG68QuoZjBYjn+nNFDWb X-Originating-IP: 209.85.216.42 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340133241-00000D73-23B28C7A/0-0/0-0 X-Bogosity: Unsure, tests=bogofilter, spamicity=0.465860, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Burundi.ZEDAT.FU-Berlin.DE X-Spam-Level: x X-Spam-Status: No, score=1.6 required=5.0 tests=FU_BOGO_UNSURE,HTML_30_40, HTML_MESSAGE,RCVD_BY_IP,SPF_HELO_PASS Subject: [Seqan-dev] splazers cigar mismatch X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Jun 2012 19:14:04 -0000 --Apple-Mail=_1D83384B-DF61-48D3-8992-E7097CC6A372 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 Hi, I get the following error from snp_store (on output from splazers): WARNING! Read TESTING: cigar alignment length does not match genome = coordinates. Discarding read.. I'm fairly certain this error stems from splazers as the alignment = length computed from the cigar string does not match the start and end = match position (off by 1 bp). Interestingly, when I truncate 300 bps = same sequence from 478 bps to 178 bps, the cigar string appears to be = correct. Note that 32M is now 31M which is the correct length. cigar of the longer sequence (478 bps):=20 14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M cigar of the truncated sequence (178 bps): 147M1D31M Has anyone else encountered this issue and is there a fix? Thanks! Tina -- Tina Hu, Ph.D. Bioinformatics Scientist Celmatix, Inc. 1 Little West 12th St. New York, NY 10014 917.426.2878 www.celmatix.com This email message and any attachments being sent by Celmatix, Inc., are = confidential, and may be privileged. If you are not the intended = recipient, please notify us immediately=97by replying to this = message=97and destroy all copies of this message and any attachments. = Thank you. --Apple-Mail=_1D83384B-DF61-48D3-8992-E7097CC6A372 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252 --
Tina Hu, Ph.D.
Bioinformatics Scientist
Celmatix, Inc.
1 = Little West 12th St.
New York, NY 10014
917.426.2878

www.celmatix.com

This email = message and any attachments being sent by Celmatix, Inc., are = confidential, and may be privileged. If you are not the = intended recipient, please notify us immediately=97by replying to = this message=97and destroy all copies of this message and any = attachments. Thank you.
= --Apple-Mail=_1D83384B-DF61-48D3-8992-E7097CC6A372-- From manuel.holtgrewe@fu-berlin.de Wed Jun 20 07:15:33 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShDGN-00055T-K6>; Wed, 20 Jun 2012 07:15:31 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShDGN-0003qF-Gh>; Wed, 20 Jun 2012 07:15:31 +0200 Received: from cas2.campus.fu-berlin.de ([130.133.170.202]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShDGN-00065e-9U>; Wed, 20 Jun 2012 07:15:31 +0200 Received: from EX02A.campus.fu-berlin.de ([130.133.170.132]) by CAS2.campus.fu-berlin.de ([130.133.170.202]) with mapi id 14.02.0298.004; Wed, 20 Jun 2012 07:15:30 +0200 From: "Holtgrewe, Manuel" To: SeqAn Development Thread-Topic: [Seqan-dev] splazers cigar mismatch Thread-Index: AQHNTk+3ii3QTjiTjUG6rkOJ6ecN65cCqrCG Date: Wed, 20 Jun 2012 05:15:29 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: multipart/alternative; boundary="_000_FCCAB9D80C3DAB47B5601C5B0E62872B0A2D1Fex02acampusfuberl_" MIME-Version: 1.0 X-Originating-IP: 130.133.170.202 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340169331-00000D73-3D067F5F/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.003089, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Botsuana.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=ALL_TRUSTED,HTML_40_50, HTML_MESSAGE Subject: Re: [Seqan-dev] splazers cigar mismatch X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 05:15:33 -0000 --_000_FCCAB9D80C3DAB47B5601C5B0E62872B0A2D1Fex02acampusfuberl_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Dear Tina, could you provide us with the whole problematic record? Cheers, Manuel ________________________________ From: Tina Hu [t.hu@celmatix.com] Sent: Tuesday, June 19, 2012 9:13 PM To: seqan-dev@lists.fu-berlin.de Subject: [Seqan-dev] splazers cigar mismatch Hi, I get the following error from snp_store (on output from splazers): WARNING! Read TESTING: cigar alignment length does not match genome coordin= ates. Discarding read.. I'm fairly certain this error stems from splazers as the alignment length c= omputed from the cigar string does not match the start and end match positi= on (off by 1 bp). Interestingly, when I truncate 300 bps same sequence from= 478 bps to 178 bps, the cigar string appears to be correct. Note that 32M = is now 31M which is the correct length. cigar of the longer sequence (478 bps): 14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M cigar of the truncated sequence (178 bps): 147M1D31M Has anyone else encountered this issue and is there a fix? Thanks! Tina -- Tina Hu, Ph.D. Bioinformatics Scientist Celmatix, Inc. 1 Little West 12th St. New York, NY 10014 917.426.2878 www.celmatix.com This email message and any attachments being sent by Celmatix, Inc., are co= nfidential, and may be privileged. If you are not the intended recipient, p= lease notify us immediately=97by replying to this message=97and destroy all= copies of this message and any attachments. Thank you. --_000_FCCAB9D80C3DAB47B5601C5B0E62872B0A2D1Fex02acampusfuberl_ Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable
Dear Tina,

could you provide us with the whole problematic record?

Cheers,
Manuel

From: Tina Hu [t.hu@celmatix.com]
Sent: Tuesday, June 19, 2012 9:13 PM
To: seqan-dev@lists.fu-berlin.de
Subject: [Seqan-dev] splazers cigar mismatch

Hi,

I get the following error from snp_store (on output from splazers):
WARNING! Read TESTING: cigar alignment length does not match genome co= ordinates. Discarding read..

I'm fairly certain this error stems from splazers as the alignment len= gth computed from the cigar string does not match the start and end match p= osition (off by 1 bp). Interestingly, when I truncate 300 bps same seq= uence from 478 bps to 178 bps, the cigar string appears to be correct. Note that 32M is now 31M which is the correc= t length.

cigar of the longer sequence (478 bps): 
14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M

cigar of the truncated sequence (178 bps):
147M1D31M

Has anyone else encountered this issue and is there a fix?

Thanks!
Tina

--
Tina Hu, Ph.D.
Bioinformatics Scientist
Celmatix, Inc.
1 Little West 12th St.
New York, NY 10014
917.426.2878

www.celmatix.com<= br>
This email message and any attachments being sent by Celmatix, In= c., are confidential, and may be privileged. If you are not the intend= ed recipient, please notify us immediately=97by replying to this messa= ge=97and destroy all copies of this message and any attachments. Thank you.

--_000_FCCAB9D80C3DAB47B5601C5B0E62872B0A2D1Fex02acampusfuberl_-- From t.hu@celmatix.com Wed Jun 20 16:20:12 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShLlS-0000oQ-SW>; Wed, 20 Jun 2012 16:20:10 +0200 Received: from mail-qc0-f182.google.com ([209.85.216.182]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShLlS-0006SY-IX>; Wed, 20 Jun 2012 16:20:10 +0200 Received: by qcsg15 with SMTP id g15so5133529qcs.13 for ; Wed, 20 Jun 2012 07:20:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date :content-transfer-encoding:message-id:references:to:x-mailer :x-gm-message-state; bh=yElew44VBxvh4QhNe2B4U4zBWvfPYEC+18JIYq9Pg2c=; b=crRfii+A8dv9vABQ4XIDFz3jHN6JzRX9BQG/6uobda/yU/p9uGNxzsEFEx6T0sbuwQ kF4Gub7OTUvvmfvoVboo8yOYlucG1qbIY7BNyMEhRvluV/uU2MbrPD03eJYk8kSKzVq5 Odbl51pqCWd7h7Vi3dbw7MUJajtts/i7sS+lH/UR0NpF5LA7lvHdujmw5NJHH/URR6I4 nz5ccirJJf8pP/DYmLBSbJLYYHToKBoUVctxCQdVx5Pkz6LC9sphamsjD1EDhwXREfg1 8MXrXDFdb1g/51o4nX9N9yOynrcnvr/7Cf+gA9aJzzXvpPnsaAcuuhHyASn3Am3QHrC5 aU0g== Received: by 10.224.116.143 with SMTP id m15mr34616138qaq.50.1340202007800; Wed, 20 Jun 2012 07:20:07 -0700 (PDT) Received: from [172.16.16.186] ([204.145.81.110]) by mx.google.com with ESMTPS id ei10sm55883889qab.20.2012.06.20.07.20.07 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 20 Jun 2012 07:20:07 -0700 (PDT) Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Apple Message framework v1278) From: Tina Hu In-Reply-To: Date: Wed, 20 Jun 2012 10:20:06 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: References: To: seqan-dev@lists.fu-berlin.de X-Mailer: Apple Mail (2.1278) X-Gm-Message-State: ALoCoQm8qYWtw0uiJ4WJY7pUQHhgMKKkoXNpT/H6y5UJ3mbOD3MQxBx1SwyGpDyRLLyj9sGQCn0+ X-Originating-IP: 209.85.216.182 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340202010-00000D73-F38D0571/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.088264, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Algerien.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=RCVD_BY_IP,SPF_HELO_PASS, UPPERCASE_25_50 Subject: Re: [Seqan-dev] splazers cigar mismatch X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 14:20:12 -0000 Hi Manuel, Below are the sequences that produce this mismatch. This is run against = chr1 of hg19.=20 Thanks! Tina @truncated AAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCATAACTTCTGATGTGCCG GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG TCCATAG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIII @full GTGCCTGCTTTCTCGTCTCAGGCCTATGGTCGAGATTTAATGGAGGCCCAAGAGTGGTGC AGGAAGTACATGAAATCAGGGAATGTCAAGGACCTCACGCAAGCCTGGGACCTCTATTAT CATGTGTTCCGACGAATCTCAAAGCAGCTGCCTCAGGTAGGATCTTCAGGCTCCTGGCAG GGTTAACTGTCATTATAGTCCTTTCTGTTTTACTGTCTATGTAATTGTTCTAACACTCAT TCCAAAGCATCTGGTTTTACTCTGCTTTGGGACAAGTAATTGTTATTAGCAATCCACTGA AAAATCTTAAAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCAAAACTTCTGATGTGCCG GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG TCCATAG + IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIII -- Tina Hu, Ph.D. Bioinformatics Scientist Celmatix, Inc. 1 Little West 12th St. New York, NY 10014 917.426.2878 www.celmatix.com This email message and any attachments being sent by Celmatix, Inc., are = confidential, and may be privileged. If you are not the intended = recipient, please notify us immediately=97by replying to this = message=97and destroy all copies of this message and any attachments. = Thank you. On Jun 20, 2012, at 6:00 AM, seqan-dev-request@lists.fu-berlin.de wrote: > Today's Topics: >=20 > 1. splazers cigar mismatch (Tina Hu) > 2. Re: splazers cigar mismatch (Holtgrewe, Manuel) >=20 > ------------------------------ > Message: 2 > Date: Wed, 20 Jun 2012 05:15:29 +0000 > From: "Holtgrewe, Manuel" > To: SeqAn Development > Subject: Re: [Seqan-dev] splazers cigar mismatch > Message-ID: > = > Content-Type: text/plain; charset=3D"windows-1252" >=20 > Dear Tina, >=20 > could you provide us with the whole problematic record? >=20 > Cheers, > Manuel >=20 > ________________________________ > From: Tina Hu [t.hu@celmatix.com] > Sent: Tuesday, June 19, 2012 9:13 PM > To: seqan-dev@lists.fu-berlin.de > Subject: [Seqan-dev] splazers cigar mismatch >=20 > Hi, >=20 > I get the following error from snp_store (on output from splazers): > WARNING! Read TESTING: cigar alignment length does not match genome = coordinates. Discarding read.. >=20 > I'm fairly certain this error stems from splazers as the alignment = length computed from the cigar string does not match the start and end = match position (off by 1 bp). Interestingly, when I truncate 300 bps = same sequence from 478 bps to 178 bps, the cigar string appears to be = correct. Note that 32M is now 31M which is the correct length. >=20 > cigar of the longer sequence (478 bps): > 14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M >=20 > cigar of the truncated sequence (178 bps): > 147M1D31M >=20 > Has anyone else encountered this issue and is there a fix? >=20 > Thanks! > Tina >=20 > -- > Tina Hu, Ph.D. > Bioinformatics Scientist > Celmatix, Inc. > 1 Little West 12th St. > New York, NY 10014 > 917.426.2878 >=20 > www.celmatix.com >=20 > This email message and any attachments being sent by Celmatix, Inc., = are confidential, and may be privileged. If you are not the intended = recipient, please notify us immediately?by replying to this message?and = destroy all copies of this message and any attachments. Thank you. >=20 > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: = >=20 > ------------------------------ >=20 > _______________________________________________ > seqan-dev mailing list > seqan-dev@lists.fu-berlin.de > https://lists.fu-berlin.de/listinfo/seqan-dev >=20 >=20 > End of seqan-dev Digest, Vol 33, Issue 6 > **************************************** From manuel.holtgrewe@fu-berlin.de Wed Jun 20 17:18:32 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShMfu-0002jj-Iq>; Wed, 20 Jun 2012 17:18:30 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShMfu-0000WN-Fn>; Wed, 20 Jun 2012 17:18:30 +0200 Received: from cas3.campus.fu-berlin.de ([130.133.170.203]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShMfu-0004rG-B1>; Wed, 20 Jun 2012 17:18:30 +0200 Received: from EX02A.campus.fu-berlin.de ([130.133.170.132]) by CAS3.campus.fu-berlin.de ([130.133.170.203]) with mapi id 14.02.0298.004; Wed, 20 Jun 2012 17:18:29 +0200 From: "Holtgrewe, Manuel" To: SeqAn Development Thread-Topic: [Seqan-dev] splazers cigar mismatch Thread-Index: AQHNTu/Kii3QTjiTjUG6rkOJ6ecN65cDUfKQ Date: Wed, 20 Jun 2012 15:18:28 +0000 Message-ID: References: , In-Reply-To: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Originating-IP: 130.133.170.203 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340205510-00000D73-55DA6825/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.054012, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Benin.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=ALL_TRUSTED,UPPERCASE_25_50 Subject: Re: [Seqan-dev] splazers cigar mismatch X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 15:18:32 -0000 Can you also give me the command lines you are using?=0A= ________________________________________=0A= From: Tina Hu [t.hu@celmatix.com]=0A= Sent: Wednesday, June 20, 2012 4:20 PM=0A= To: seqan-dev@lists.fu-berlin.de=0A= Subject: Re: [Seqan-dev] splazers cigar mismatch=0A= =0A= Hi Manuel,=0A= =0A= Below are the sequences that produce this mismatch. This is run against chr= 1 of hg19.=0A= =0A= Thanks!=0A= Tina=0A= =0A= @truncated=0A= AAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA=0A= TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCATAACTTCTGATGTGCCG=0A= GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG=0A= TCCATAG=0A= +=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIII=0A= @full=0A= GTGCCTGCTTTCTCGTCTCAGGCCTATGGTCGAGATTTAATGGAGGCCCAAGAGTGGTGC=0A= AGGAAGTACATGAAATCAGGGAATGTCAAGGACCTCACGCAAGCCTGGGACCTCTATTAT=0A= CATGTGTTCCGACGAATCTCAAAGCAGCTGCCTCAGGTAGGATCTTCAGGCTCCTGGCAG=0A= GGTTAACTGTCATTATAGTCCTTTCTGTTTTACTGTCTATGTAATTGTTCTAACACTCAT=0A= TCCAAAGCATCTGGTTTTACTCTGCTTTGGGACAAGTAATTGTTATTAGCAATCCACTGA=0A= AAAATCTTAAAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA=0A= TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCAAAACTTCTGATGTGCCG=0A= GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG=0A= TCCATAG=0A= +=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIII=0A= =0A= --=0A= Tina Hu, Ph.D.=0A= Bioinformatics Scientist=0A= Celmatix, Inc.=0A= 1 Little West 12th St.=0A= New York, NY 10014=0A= 917.426.2878=0A= =0A= www.celmatix.com=0A= =0A= This email message and any attachments being sent by Celmatix, Inc., are co= nfidential, and may be privileged. If you are not the intended recipient, p= lease notify us immediately=97by replying to this message=97and destroy all= copies of this message and any attachments. Thank you.=0A= =0A= On Jun 20, 2012, at 6:00 AM, seqan-dev-request@lists.fu-berlin.de wrote:=0A= =0A= > Today's Topics:=0A= >=0A= > 1. splazers cigar mismatch (Tina Hu)=0A= > 2. Re: splazers cigar mismatch (Holtgrewe, Manuel)=0A= >=0A= > ------------------------------=0A= > Message: 2=0A= > Date: Wed, 20 Jun 2012 05:15:29 +0000=0A= > From: "Holtgrewe, Manuel" =0A= > To: SeqAn Development =0A= > Subject: Re: [Seqan-dev] splazers cigar mismatch=0A= > Message-ID:=0A= > = =0A= > Content-Type: text/plain; charset=3D"windows-1252"=0A= >=0A= > Dear Tina,=0A= >=0A= > could you provide us with the whole problematic record?=0A= >=0A= > Cheers,=0A= > Manuel=0A= >=0A= > ________________________________=0A= > From: Tina Hu [t.hu@celmatix.com]=0A= > Sent: Tuesday, June 19, 2012 9:13 PM=0A= > To: seqan-dev@lists.fu-berlin.de=0A= > Subject: [Seqan-dev] splazers cigar mismatch=0A= >=0A= > Hi,=0A= >=0A= > I get the following error from snp_store (on output from splazers):=0A= > WARNING! Read TESTING: cigar alignment length does not match genome coord= inates. Discarding read..=0A= >=0A= > I'm fairly certain this error stems from splazers as the alignment length= computed from the cigar string does not match the start and end match posi= tion (off by 1 bp). Interestingly, when I truncate 300 bps same sequence fr= om 478 bps to 178 bps, the cigar string appears to be correct. Note that 32= M is now 31M which is the correct length.=0A= >=0A= > cigar of the longer sequence (478 bps):=0A= > 14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M=0A= >=0A= > cigar of the truncated sequence (178 bps):=0A= > 147M1D31M=0A= >=0A= > Has anyone else encountered this issue and is there a fix?=0A= >=0A= > Thanks!=0A= > Tina=0A= >=0A= > --=0A= > Tina Hu, Ph.D.=0A= > Bioinformatics Scientist=0A= > Celmatix, Inc.=0A= > 1 Little West 12th St.=0A= > New York, NY 10014=0A= > 917.426.2878=0A= >=0A= > www.celmatix.com=0A= >=0A= > This email message and any attachments being sent by Celmatix, Inc., are = confidential, and may be privileged. If you are not the intended recipient,= please notify us immediately?by replying to this message?and destroy all c= opies of this message and any attachments. Thank you.=0A= >=0A= > -------------- next part --------------=0A= > An HTML attachment was scrubbed...=0A= > URL: =0A= >=0A= > ------------------------------=0A= >=0A= > _______________________________________________=0A= > seqan-dev mailing list=0A= > seqan-dev@lists.fu-berlin.de=0A= > https://lists.fu-berlin.de/listinfo/seqan-dev=0A= >=0A= >=0A= > End of seqan-dev Digest, Vol 33, Issue 6=0A= > ****************************************=0A= =0A= =0A= _______________________________________________=0A= seqan-dev mailing list=0A= seqan-dev@lists.fu-berlin.de=0A= https://lists.fu-berlin.de/listinfo/seqan-dev=0A= From Anne-Katrin.Emde@fu-berlin.de Wed Jun 20 21:00:30 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShQ8i-0001UL-AU>; Wed, 20 Jun 2012 21:00:28 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShQ8i-0003lb-7m>; Wed, 20 Jun 2012 21:00:28 +0200 Received: from cas1.campus.fu-berlin.de ([130.133.170.201]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShQ8i-0003gh-23>; Wed, 20 Jun 2012 21:00:28 +0200 Received: from EX01B.campus.fu-berlin.de ([130.133.170.131]) by CAS1.campus.fu-berlin.de ([130.133.170.201]) with mapi id 14.02.0298.004; Wed, 20 Jun 2012 21:00:27 +0200 From: "Emde, Anne-Katrin" To: SeqAn Development Thread-Topic: [Seqan-dev] splazers cigar mismatch Thread-Index: AQHNTu/Kts/97wuaCkei+Og3qv4ZEJcDjiBL Date: Wed, 20 Jun 2012 19:00:25 +0000 Message-ID: References: , In-Reply-To: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Originating-IP: 130.133.170.201 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340218828-00000D73-581779CD/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000010, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Algerien.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=ALL_TRUSTED,UPPERCASE_25_50 Subject: Re: [Seqan-dev] splazers cigar mismatch X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jun 2012 19:00:30 -0000 Hi Tina,=0A= =0A= there was a bug in the breakpoint computation for edit distance split mappi= ng.=0A= What basically happened was that a read position right next to an insertion= breakpoint could be used more than once (in suffix as well as prefix match= ). The incorrect matches then led to the wrong cigar strings..=0A= I just checked in the fixed version.=0A= =0A= Cheers,=0A= Anne-Katrin=0A= =0A= =0A= =0A= -----------------------------------------------=0A= Anne-Katrin Emde=0A= +49 30 83875240=0A= emde@inf.fu-berlin.de=0A= =0A= Algorithmic Bioinformatics=0A= Department of Computer Science=0A= Freie Universit=E4t Berlin=0A= ----------------------------------------------=0A= ________________________________________=0A= Von: Tina Hu [t.hu@celmatix.com]=0A= Gesendet: Mittwoch, 20. Juni 2012 16:20=0A= An: seqan-dev@lists.fu-berlin.de=0A= Betreff: Re: [Seqan-dev] splazers cigar mismatch=0A= =0A= Hi Manuel,=0A= =0A= Below are the sequences that produce this mismatch. This is run against chr= 1 of hg19.=0A= =0A= Thanks!=0A= Tina=0A= =0A= @truncated=0A= AAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA=0A= TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCATAACTTCTGATGTGCCG=0A= GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG=0A= TCCATAG=0A= +=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIII=0A= @full=0A= GTGCCTGCTTTCTCGTCTCAGGCCTATGGTCGAGATTTAATGGAGGCCCAAGAGTGGTGC=0A= AGGAAGTACATGAAATCAGGGAATGTCAAGGACCTCACGCAAGCCTGGGACCTCTATTAT=0A= CATGTGTTCCGACGAATCTCAAAGCAGCTGCCTCAGGTAGGATCTTCAGGCTCCTGGCAG=0A= GGTTAACTGTCATTATAGTCCTTTCTGTTTTACTGTCTATGTAATTGTTCTAACACTCAT=0A= TCCAAAGCATCTGGTTTTACTCTGCTTTGGGACAAGTAATTGTTATTAGCAATCCACTGA=0A= AAAATCTTAAAATTGCGTTTAAATTCTTCCCTGGAGGCAGAACACTAAATCCTTTTGTAA=0A= TTATTTACAGCTCACATCCTTAGAGCTGCAATATGTTTCGCCAAAACTTCTGATGTGCCG=0A= GGACCTTGAATTGGCTGTGCCAGGAACATATGACCCAACCNGCCAATCATTCGCATTCAG=0A= TCCATAG=0A= +=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII=0A= IIIIIII=0A= =0A= --=0A= Tina Hu, Ph.D.=0A= Bioinformatics Scientist=0A= Celmatix, Inc.=0A= 1 Little West 12th St.=0A= New York, NY 10014=0A= 917.426.2878=0A= =0A= www.celmatix.com=0A= =0A= This email message and any attachments being sent by Celmatix, Inc., are co= nfidential, and may be privileged. If you are not the intended recipient, p= lease notify us immediately=97by replying to this message=97and destroy all= copies of this message and any attachments. Thank you.=0A= =0A= On Jun 20, 2012, at 6:00 AM, seqan-dev-request@lists.fu-berlin.de wrote:=0A= =0A= > Today's Topics:=0A= >=0A= > 1. splazers cigar mismatch (Tina Hu)=0A= > 2. Re: splazers cigar mismatch (Holtgrewe, Manuel)=0A= >=0A= > ------------------------------=0A= > Message: 2=0A= > Date: Wed, 20 Jun 2012 05:15:29 +0000=0A= > From: "Holtgrewe, Manuel" =0A= > To: SeqAn Development =0A= > Subject: Re: [Seqan-dev] splazers cigar mismatch=0A= > Message-ID:=0A= > = =0A= > Content-Type: text/plain; charset=3D"windows-1252"=0A= >=0A= > Dear Tina,=0A= >=0A= > could you provide us with the whole problematic record?=0A= >=0A= > Cheers,=0A= > Manuel=0A= >=0A= > ________________________________=0A= > From: Tina Hu [t.hu@celmatix.com]=0A= > Sent: Tuesday, June 19, 2012 9:13 PM=0A= > To: seqan-dev@lists.fu-berlin.de=0A= > Subject: [Seqan-dev] splazers cigar mismatch=0A= >=0A= > Hi,=0A= >=0A= > I get the following error from snp_store (on output from splazers):=0A= > WARNING! Read TESTING: cigar alignment length does not match genome coord= inates. Discarding read..=0A= >=0A= > I'm fairly certain this error stems from splazers as the alignment length= computed from the cigar string does not match the start and end match posi= tion (off by 1 bp). Interestingly, when I truncate 300 bps same sequence fr= om 478 bps to 178 bps, the cigar string appears to be correct. Note that 32= M is now 31M which is the correct length.=0A= >=0A= > cigar of the longer sequence (478 bps):=0A= > 14M1I206M1I2M1I35M1D45M1D3M1I147M1D32M=0A= >=0A= > cigar of the truncated sequence (178 bps):=0A= > 147M1D31M=0A= >=0A= > Has anyone else encountered this issue and is there a fix?=0A= >=0A= > Thanks!=0A= > Tina=0A= >=0A= > --=0A= > Tina Hu, Ph.D.=0A= > Bioinformatics Scientist=0A= > Celmatix, Inc.=0A= > 1 Little West 12th St.=0A= > New York, NY 10014=0A= > 917.426.2878=0A= >=0A= > www.celmatix.com=0A= >=0A= > This email message and any attachments being sent by Celmatix, Inc., are = confidential, and may be privileged. If you are not the intended recipient,= please notify us immediately?by replying to this message?and destroy all c= opies of this message and any attachments. Thank you.=0A= >=0A= > -------------- next part --------------=0A= > An HTML attachment was scrubbed...=0A= > URL: =0A= >=0A= > ------------------------------=0A= >=0A= > _______________________________________________=0A= > seqan-dev mailing list=0A= > seqan-dev@lists.fu-berlin.de=0A= > https://lists.fu-berlin.de/listinfo/seqan-dev=0A= >=0A= >=0A= > End of seqan-dev Digest, Vol 33, Issue 6=0A= > ****************************************=0A= =0A= =0A= _______________________________________________=0A= seqan-dev mailing list=0A= seqan-dev@lists.fu-berlin.de=0A= https://lists.fu-berlin.de/listinfo/seqan-dev=0A= From jer15@hermes.cam.ac.uk Thu Jun 21 17:33:29 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShjNw-0006g4-3s>; Thu, 21 Jun 2012 17:33:28 +0200 Received: from ppsw-52.csi.cam.ac.uk ([131.111.8.152]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1ShjNv-00076W-W5>; Thu, 21 Jun 2012 17:33:28 +0200 X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from wifi-host-51.mrc-bsu.cam.ac.uk ([193.60.87.51]:50016) by ppsw-52.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:587) with esmtpsa (PLAIN:jer15) (TLSv1:DHE-RSA-CAMELLIA256-SHA:256) id 1ShjNu-0004Rg-Eo (Exim 4.72) for seqan-dev@lists.fu-berlin.de (return-path ); Thu, 21 Jun 2012 16:33:26 +0100 Message-ID: <4FE33EC6.9070906@mail.cryst.bbk.ac.uk> Date: Thu, 21 Jun 2012 16:33:26 +0100 From: John Reid User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: SeqAn Development Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: "J.E. Reid" X-Originating-IP: 131.111.8.152 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340292808-00000D73-881BF4C5/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.379974, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Dschibuti.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none Subject: [Seqan-dev] Performance advice for whole genome ESA X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jun 2012 15:33:29 -0000 Hi, I'm reading the whole mouse genome into a seqan::IndexEsa based on a seqan::StringSet. At the moment I have the genome (2,730,871,774 bp) stored in one uncompressed fasta file on disk. Once I have the genome loaded I'm iterating over it many times looking at all the words < about 20bp. I'm wondering if there is a better way to go about this. Should I be looking at memory mapped files and/or compression on disk? Any pointers or advice would be welcome. Thanks, John. From Sabrina.Krakau@fu-berlin.de Fri Jun 22 13:36:44 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) with esmtp (envelope-from ) id <1Si2AM-0002Ea-O3>; Fri, 22 Jun 2012 13:36:42 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) with esmtp (envelope-from ) id <1Si2AM-0008Qw-KN>; Fri, 22 Jun 2012 13:36:42 +0200 Received: from cas3.campus.fu-berlin.de ([130.133.170.203]) by relay2.zedat.fu-berlin.de (Exim 4.69) with esmtp (envelope-from ) id <1Si2AM-0001RP-Du>; Fri, 22 Jun 2012 13:36:42 +0200 Received: from EX03A.campus.fu-berlin.de ([130.133.170.134]) by CAS3.campus.fu-berlin.de ([130.133.170.203]) with mapi id 14.02.0298.004; Fri, 22 Jun 2012 13:36:37 +0200 From: "Krakau, Sabrina" To: "Krakau, Sabrina" Thread-Topic: SeqAn - BioStore Workshop 2012, Berlin, September the 4th - 6th Thread-Index: AQHNUGtIaUPZrsoqQUKFPEw89WpgtA== Date: Fri, 22 Jun 2012 11:36:35 +0000 Message-ID: Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Content-Type: multipart/related; boundary="_005_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_"; type="multipart/alternative" MIME-Version: 1.0 X-Originating-IP: 130.133.170.203 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340365002-00000D73-F05ECB9A/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.411526, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Gabun.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=ALL_TRUSTED, EXTRA_MPART_TYPE, HTML_MESSAGE Cc: AG ABI ABI , SeqAn Development , "seqan-interests@lists.fu-berlin.de" Subject: [Seqan-dev] SeqAn - BioStore Workshop 2012, Berlin, September the 4th - 6th X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 22 Jun 2012 11:36:44 -0000 --_005_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_ Content-Type: multipart/alternative; boundary="_000_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_" --_000_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Dear SeqAn Users and Developers, The 4th SeqAn user meeting will take place from September the 4th to the 6t= h in Berlin. This year the workshop will include * Detailed description of SeqAn apps * Short, focused tutorials for beginners and advanced programmers * Tutorials about integrating SeqAn apps into a workflow engine * Reports of users about their experience with SeqAn New this year is that you can choose your tutorials of interest !!! Therefor you simply vote on our webpage for the topics you would lik= e to know more about. For beginners we offer: * SeqAn style vs. object oriented programming * Sequence I/O and handling * The SeqAn FragmentStore * Indices * Alignments in SeqAn For advanced users we offer: * BLASTX * Alignment free comparison * Bowtie * RNA-Seq expression * Data compression * Local alignments Additionally we offer a range of SeqAn apps you can choose from. If you have projects going on with SeqAn or any experience with it, which y= ou would like to share, just send us an email. We apreciate your interest and will soon send a final schedule based on you= r preferences. See you in September, The SeqAn team [cid:12D5553D-AD16-40D5-986F-BF6FABF0587B] [cid:53AF5887-D1F2-4BAA-BF6C-C= F01BF1C6DB7] Sabrina Krakau Freie Universit=E4t Berlin Institute of Computer Science Algorithmic Bioinformatics - Project BioStore Takustr. 9, 14195 Berlin Telefon: +49 (0)30 838 75228 --_000_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_ Content-Type: text/html; charset="iso-8859-1" Content-ID: <51E5FFA73F88C948803537503FB98655@campus.fu-berlin.de> Content-Transfer-Encoding: quoted-printable
Dear SeqAn Users and Developers,

The 4th SeqAn user meeting will take place from September the 4th to t= he 6th in Berlin.

This year the workshop will include
  • Detailed description of SeqAn apps
  • Short, focused tutorials for= beginners and advanced programmers
  • Tutorials about integrating Seq= An apps into a workflow engine
  • Reports of users about their experie= nce with SeqAn

New this year is that you can choose your tutorials of interest !!!
Therefor you simply vote on our webpage&nbs= p;for the topics you would like to know more about.

For beginners we offer:
  • SeqAn style vs. object oriented programming
  • Sequence I/O and ha= ndling
  • The SeqAn FragmentStore
  • Indices
  • Alignments i= n SeqAn

For advanced users we offer:
  • BLASTX
  • Alignment free comparison
  • Bowtie
  • RNA-Seq= expression
  • Data compression
  • Local alignments

Additionally we offer a range of SeqAn apps you can choose from.

If you have projects going on with SeqAn or any experience with it, wh= ich you would like to share, just send us an email.
We apreciate your interest and will soon send a final schedule based o= n your preferences.

See you in September,

The SeqAn team
 



<= span class=3D"Apple-style-span" style=3D"border-collapse: separate; color: = rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: nor= mal; font-weight: normal; letter-spacing: normal; line-height: normal; orph= ans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; w= hite-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal= -spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decoratio= ns-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-wid= th: 0px; font-size: medium; ">   


Sabrina Krakau
Freie Universit=E4t Berlin
Institute of Computer Science
Algorithmic Bioinformatics - Project BioStore

Takustr. 9, 14195 Berlin
Telefon: +49 (0)30 838 75228
=


--_000_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_-- --_005_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_ Content-Type: image/png; name="BioStore-Logo-60.png" Content-Description: BioStore-Logo-60.png Content-Disposition: inline; filename="BioStore-Logo-60.png"; size=4697; creation-date="Fri, 22 Jun 2012 11:36:35 GMT"; modification-date="Fri, 22 Jun 2012 11:36:35 GMT" Content-ID: <12D5553D-AD16-40D5-986F-BF6FABF0587B> Content-Transfer-Encoding: base64 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 E2AAfs+WwMxn8X8AAAAASUVORK5CYII= --_005_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_ Content-Type: image/png; name="BMBF_CMYK_Gef_XXL_e-60.png" Content-Description: BMBF_CMYK_Gef_XXL_e-60.png Content-Disposition: inline; filename="BMBF_CMYK_Gef_XXL_e-60.png"; size=8173; creation-date="Fri, 22 Jun 2012 11:36:35 GMT"; modification-date="Fri, 22 Jun 2012 11:36:35 GMT" Content-ID: <53AF5887-D1F2-4BAA-BF6C-CF01BF1C6DB7> Content-Transfer-Encoding: base64 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 MADOw7X/kZPH9QAAAABJRU5ErkJggg== --_005_E79BE16473574FE689D39EC2CCD5247Cfuberlinde_-- From jer15@hermes.cam.ac.uk Tue Jun 26 16:20:06 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjWcf-0003Ti-2k>; Tue, 26 Jun 2012 16:20:05 +0200 Received: from ppsw-41.csi.cam.ac.uk ([131.111.8.141]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjWce-0005N9-Tt>; Tue, 26 Jun 2012 16:20:05 +0200 X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from wifi-host-51.mrc-bsu.cam.ac.uk ([193.60.87.51]:57226) by ppsw-41.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.156]:587) with esmtpsa (PLAIN:jer15) (TLSv1:DHE-RSA-CAMELLIA256-SHA:256) id 1SjWcd-000863-RK (Exim 4.72) for seqan-dev@lists.fu-berlin.de (return-path ); Tue, 26 Jun 2012 15:20:03 +0100 Message-ID: <4FE9C513.1000204@mail.cryst.bbk.ac.uk> Date: Tue, 26 Jun 2012 15:20:03 +0100 From: John Reid User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: SeqAn Development References: <4FE33EC6.9070906@mail.cryst.bbk.ac.uk> In-Reply-To: <4FE33EC6.9070906@mail.cryst.bbk.ac.uk> Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: "J.E. Reid" X-Originating-IP: 131.111.8.141 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340720405-00000D73-1ADDC10C/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.275444, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Gabun.ZEDAT.FU-Berlin.DE X-Spam-Level: x X-Spam-Status: No, score=1.2 required=5.0 tests=HTML_40_50,HTML_MESSAGE, MIME_HTML_ONLY Subject: Re: [Seqan-dev] Performance advice for whole genome ESA X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jun 2012 14:20:06 -0000 Hi,

I've done some more reading ( http://trac.seqan.de/wiki/HowTo/EfficientImportOfMillionsOfSequences) and as far as I can tell I should just be using memory mapped files as a mechanism to read large sequence sets into main memory. Likewise this is the area where compression on disk could help. If I want to iterate over a ESA I'm best off copying the sequences into a standard seqan StringSet in main memory and creating the ESA on top of that. Please let me know if I've got the wrong end of the stick.

Regards,
John.


On 21/06/12 16:33, John Reid wrote:
Hi,

I'm reading the whole mouse genome into a seqan::IndexEsa based on a
seqan::StringSet. At the moment I have the genome (2,730,871,774 bp)
stored in one uncompressed fasta file on disk. Once I have the genome
loaded I'm iterating over it many times looking at all the words < about
20bp. I'm wondering if there is a better way to go about this. Should I
be looking at memory mapped files and/or compression on disk? Any
pointers or advice would be welcome.

Thanks,
John.

_______________________________________________
seqan-dev mailing list
seqan-dev@lists.fu-berlin.de
https://lists.fu-berlin.de/listinfo/seqan-dev


From jer15@hermes.cam.ac.uk Tue Jun 26 16:25:45 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjWi8-0003dH-Q3>; Tue, 26 Jun 2012 16:25:44 +0200 Received: from ppsw-50.csi.cam.ac.uk ([131.111.8.150]) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjWi8-00069m-7T>; Tue, 26 Jun 2012 16:25:44 +0200 X-Cam-AntiVirus: no malware found X-Cam-SpamDetails: not scanned X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from wifi-host-51.mrc-bsu.cam.ac.uk ([193.60.87.51]:40513) by ppsw-50.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.157]:587) with esmtpsa (PLAIN:jer15) (TLSv1:DHE-RSA-CAMELLIA256-SHA:256) id 1SjWi6-0002MC-sL (Exim 4.72) for seqan-dev@lists.fu-berlin.de (return-path ); Tue, 26 Jun 2012 15:25:42 +0100 Message-ID: <4FE9C666.5040400@mail.cryst.bbk.ac.uk> Date: Tue, 26 Jun 2012 15:25:42 +0100 From: John Reid User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: SeqAn Development Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: "J.E. Reid" X-Originating-IP: 131.111.8.150 X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340720744-00000D73-7FEB7A87/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.347225, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Algerien.ZEDAT.FU-Berlin.DE X-Spam-Level: x X-Spam-Status: No, score=1.3 required=5.0 tests=HTML_50_60,HTML_MESSAGE, MIME_HTML_ONLY Subject: [Seqan-dev] ESA on GPU X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jun 2012 14:25:45 -0000 Hi,

The algorithm I'm working on is embarrassingly parallelisable. I wonder if anyone has any experience using Seqan on GPUs?

I did find this page:
http://www.mi.fu-berlin.de/w/ABI/ThesisGPGPUSeqan
but it is more a plan of work to do than practical advice.

Thanks,
John.
From manuel.holtgrewe@fu-berlin.de Tue Jun 26 17:20:59 2012 Received: from outpost1.zedat.fu-berlin.de ([130.133.4.66]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjXZZ-0005N2-I8>; Tue, 26 Jun 2012 17:20:57 +0200 Received: from relay2.zedat.fu-berlin.de ([130.133.4.80]) by outpost1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjXZZ-0003ch-CP>; Tue, 26 Jun 2012 17:20:57 +0200 Received: from cas2.campus.fu-berlin.de ([130.133.170.202]) by relay2.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SjXZZ-0000KQ-2Q>; Tue, 26 Jun 2012 17:20:57 +0200 Received: from EX02A.campus.fu-berlin.de ([130.133.170.132]) by CAS2.campus.fu-berlin.de ([130.133.170.202]) with mapi id 14.02.0309.002; Tue, 26 Jun 2012 17:20:55 +0200 From: "Holtgrewe, Manuel" To: SeqAn Development Thread-Topic: [Seqan-dev] Performance advice for whole genome ESA Thread-Index: AQHNT8M7jfsg7miB0UmGi82CfQfrR5cMjICAgAAxtto= Date: Tue, 26 Jun 2012 15:20:54 +0000 Message-ID: References: <4FE33EC6.9070906@mail.cryst.bbk.ac.uk>, <4FE9C513.1000204@mail.cryst.bbk.ac.uk> In-Reply-To: <4FE9C513.1000204@mail.cryst.bbk.ac.uk> Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Type: multipart/alternative; boundary="_000_FCCAB9D80C3DAB47B5601C5B0E62872B199D13ECex02acampusfube_" MIME-Version: 1.0 X-Originating-IP: 130.133.170.202 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1340724057-00000D73-58F608AB/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.012319, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Burundi.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=ALL_TRUSTED,HTML_50_60, HTML_MESSAGE Subject: Re: [Seqan-dev] Performance advice for whole genome ESA X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jun 2012 15:20:59 -0000 --_000_FCCAB9D80C3DAB47B5601C5B0E62872B199D13ECex02acampusfube_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi John, I would recommend you to use a Double-Pass MMap RecordReader as described h= ere: http://trac.seqan.de/wiki/Tutorial/ReadingSequenceFiles#DocumentReadingAPI I'm not sure how much compression on disk will help you, e.g. where the ove= rhead is. You could also use the GZFile Stream and use a Single-Pass RecordReader for= this. The question is whether your disk (for reading compressed data) or y= our CPU (for decompressing the data) is then the bottleneck. http://trac.seqan.de/wiki/Tutorial/FileIO2#CompressedStreams Cheers, Manuel ________________________________ From: John Reid [j.reid@mail.cryst.bbk.ac.uk] Sent: Tuesday, June 26, 2012 4:20 PM To: SeqAn Development Subject: Re: [Seqan-dev] Performance advice for whole genome ESA Hi, I've done some more reading ( http://trac.seqan.de/wiki/HowTo/EfficientImpo= rtOfMillionsOfSequences) and as far as I can tell I should just be using me= mory mapped files as a mechanism to read large sequence sets into main memo= ry. Likewise this is the area where compression on disk could help. If I wa= nt to iterate over a ESA I'm best off copying the sequences into a standard= seqan StringSet in main memory and creating the ESA on top of that. Please= let me know if I've got the wrong end of the stick. Regards, John. On 21/06/12 16:33, John Reid wrote: Hi, I'm reading the whole mouse genome into a seqan::IndexEsa based on a seqan::StringSet. At the moment I have the genome (2,730,871,774 bp) stored in one uncompressed fasta file on disk. Once I have the genome loaded I'm iterating over it many times looking at all the words < about 20bp. I'm wondering if there is a better way to go about this. Should I be looking at memory mapped files and/or compression on disk? Any pointers or advice would be welcome. Thanks, John. _______________________________________________ seqan-dev mailing list seqan-dev@lists.fu-berlin.de https://lists.fu-berlin.de/listinfo/seqan-dev --_000_FCCAB9D80C3DAB47B5601C5B0E62872B199D13ECex02acampusfube_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi John,

I would recommend you to use a Double-Pass MMap RecordReader as descri= bed here:

http://trac.seqan.de/wiki/Tutorial/ReadingSequenceFiles#DocumentReadin= gAPI

I'm not sure how much compression on disk will help you, e.g. where th= e overhead is.

You could also use the GZFile Stream and use a Single-Pass RecordReade= r for this. The question is whether your disk (for reading compressed data)= or your CPU (for decompressing the data) is then the bottleneck.

http://trac.seqan.de/wiki/Tutorial/FileIO2#CompressedStreams

Cheers,
Manuel

From: John Reid [j.reid@mail.cryst.bbk.a= c.uk]
Sent: Tuesday, June 26, 2012 4:20 PM
To: SeqAn Development
Subject: Re: [Seqan-dev] Performance advice for whole genome ESA

Hi,

I've done some more reading ( http://trac.seqan.de/wiki/HowTo/EfficientImportOfMillionsOfSequences) a= nd as far as I can tell I should just be using memory mapped files as a mec= hanism to read large sequence sets into main memory. Likewise this is the a= rea where compression on disk could help. If I want to iterate over a ESA I'm best off copying the sequences i= nto a standard seqan StringSet in main memory and creating the ESA on top o= f that. Please let me know if I've got the wrong end of the stick.

Regards,
John.


On 21/06/12 16:33, John Reid wrote:
Hi,=0A=
=0A=
I'm reading the whole mouse genome into a seqan::IndexEsa based on a=0A=
seqan::StringSet. At the moment I have the genome (2,730,871,774 bp)=0A=
stored in one uncompressed fasta file on disk. Once I have the genome=0A=
loaded I'm iterating over it many times looking at all the words < about=
=0A=
20bp. I'm wondering if there is a better way to go about this. Should I=0A=
be looking at memory mapped files and/or compression on disk? Any=0A=
pointers or advice would be welcome.=0A=
=0A=
Thanks,=0A=
John.=0A=
=0A=
_______________________________________________=0A=
seqan-dev mailing list=0A=
seqan-dev@lists.fu-berlin.de=0A=
https://lists.fu-berlin.de/listinfo/seqan-=
dev=0A=


--_000_FCCAB9D80C3DAB47B5601C5B0E62872B199D13ECex02acampusfube_-- From krishnamohan.kavs@genotypic.co.in Sat Jun 30 08:52:35 2012 Received: from relay1.zedat.fu-berlin.de ([130.133.4.67]) by list1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SkrXj-0003zf-NE>; Sat, 30 Jun 2012 08:52:32 +0200 Received: from balaji.genotypic.co.in ([182.71.240.210] helo=mailsvr.genotypic.co.in) by relay1.zedat.fu-berlin.de (Exim 4.69) for seqan-dev@lists.fu-berlin.de with esmtp (envelope-from ) id <1SkrXg-0006Gh-GH>; Sat, 30 Jun 2012 08:52:31 +0200 Received: from localhost (localhost [127.0.0.1]) by mailsvr.genotypic.co.in (Postfix) with ESMTP id BA437600EF; Sat, 30 Jun 2012 12:22:17 +0530 (IST) X-Virus-Scanned: amavisd-new at genotypic.co.in Received: from mailsvr.genotypic.co.in ([127.0.0.1]) by localhost (mailsvr.genotypic.co.in [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 8DhyHwcBlBJk; Sat, 30 Jun 2012 12:22:17 +0530 (IST) Received: from [10.0.2.248] (unknown [10.0.2.248]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mailsvr.genotypic.co.in (Postfix) with ESMTPSA id 7B1BC600E7 for ; Sat, 30 Jun 2012 12:22:17 +0530 (IST) Message-ID: <4FEEA248.4030006@genotypic.co.in> Date: Sat, 30 Jun 2012 12:22:56 +0530 From: Krishnamohan KAVS User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1 MIME-Version: 1.0 To: seqan-dev@lists.fu-berlin.de Content-Type: multipart/alternative; boundary="------------070405000501010406030903" X-Originating-IP: 182.71.240.210 X-ZEDAT-Hint: A X-purgate: clean X-purgate-type: clean X-purgate-ID: 151147::1341039151-00000D73-556F430E/0-0/0-0 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.2 X-Spam-Flag: NO X-Spam-Checker-Version: SpamAssassin 3.0.4 on Gabun.ZEDAT.FU-Berlin.DE X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=HTML_40_50,HTML_MESSAGE, MIME_SUSPECT_NAME Subject: [Seqan-dev] FragmentStore - extracting member data X-BeenThere: seqan-dev@lists.fu-berlin.de X-Mailman-Version: 2.1.14 Precedence: list Reply-To: SeqAn Development List-Id: SeqAn Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jun 2012 06:52:35 -0000 This is a multi-part message in MIME format. --------------070405000501010406030903 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dear All, I am a newbie to seqan using it in NGS domain. I am currently (using seqan-1.3.1) reading fastq file using FragmentStore and trying to access the sequences and quality strings for each record. Here is the snippet: #include #include #include #include using namespace seqan; using namespace std; int main(int argc, char **argv) { FragmentStore<> fragstore; if(loadReads(fragstore, "some.fastq")){ for(unsigned i=0; i< length(fragstore.readSeqStore); ++i){ DnaQ5 seq = getRead(fragstore, i); cout << seq << endl; } } return 0; } and I get an error: $ g++ load2.cc -I. -std=c++0x In file included from ./seqan/basic.h:125:0, from ./seqan/sequence.h:50, from ./seqan/file.h:47, from load2.cc:1: ./seqan/basic/basic_alphabet_simple.h: In function 'void seqan::assign(seqan::SimpleType&, const TSource&) [with TTargetValue = unsigned char, TTargetSpec = seqan::Dna5_, TSource = seqan::Segment >, seqan::InfixSegment>]': ./seqan/basic/basic_alphabet_simple.h:101:3: instantiated from 'seqan::SimpleType::SimpleType(const T&) [with T = seqan::Segment >, seqan::InfixSegment>, TValue = unsigned char, TSpec = seqan::Dna5_]' ./seqan/basic/basic_alphabet_simple.h:1901:2: instantiated from 'void seqan::assign(seqan::Dna5Q&, const TSource&) [with TSource = seqan::Segment >, seqan::InfixSegment>, seqan::Dna5Q = seqan::SimpleType]' ./seqan/basic/basic_alphabet_simple.h:118:3: instantiated from 'seqan::SimpleType& seqan::SimpleType::operator=(const T&) [with T = seqan::Segment >, seqan::InfixSegment>, TValue = unsigned char, TSpec = seqan::Dna5Q_, seqan::SimpleType = seqan::SimpleType]' load2.cc:14:35: instantiated from here ./seqan/basic/basic_alphabet_simple.h:352:2: error: cannot convert 'const seqan::Segment >, seqan::InfixSegment>' to 'unsigned char' in assignment Looks like the return type of getRead() is of the type "Segment>" , so How do I extract the sequence info as plain char string / c++ string ? Is there any clear documentation on how to access these data members ? Could someone point me to such resources if any. Thanks! Regards, -- Signature K.A.V.S Krishna Mohan Sr.Scientist - Genome Informatics ------------------------------------------------------------------------ Genotypic Technology Pvt. Ltd. #2/13, Balaji Complex, 80 Feet Road, R.M.V.2nd Stage, Bangalore - 560094 Tel: +91 80 40538200, +91 80 40538215 (Direct) Fax: +91 80 40538222 Email: krishnamohan.kavs@genotypic.co.in Web: http://www.genotypic.co.in --------------070405000501010406030903 Content-Type: multipart/related; boundary="------------070708050207090509050100" --------------070708050207090509050100 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Dear All,

I am a newbie to seqan using it in NGS domain.
I am currently (using seqan-1.3.1) reading fastq file using FragmentStore and trying to access the sequences and quality strings for each record.

Here is the snippet:
#include<seqan/file.h>
#include<seqan/index.h>
#include<seqan/store.h>
#include<iostream>
using namespace seqan;
using namespace std;
int main(int argc, char **argv)
{

FragmentStore<> fragstore;

if(loadReads(fragstore, "some.fastq")){
    for(unsigned i=0; i< length(fragstore.readSeqStore); ++i){
        DnaQ5 seq = getRead(fragstore, i);
        cout << seq << endl;
    }  
}


return 0;
}

and I get an error:

$ g++  load2.cc  -I. -std=c++0x
In file included from ./seqan/basic.h:125:0,
                 from ./seqan/sequence.h:50,
                 from ./seqan/file.h:47,
                 from load2.cc:1:
./seqan/basic/basic_alphabet_simple.h: In function ‘void seqan::assign(seqan::SimpleType<TTargetValue, TTargetSpec>&, const TSource&) [with TTargetValue = unsigned char, TTargetSpec = seqan::Dna5_, TSource = seqan::Segment<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5Q_> >, seqan::InfixSegment>]’:
./seqan/basic/basic_alphabet_simple.h:101:3:   instantiated from ‘seqan::SimpleType<TValue, TSpec>::SimpleType(const T&) [with T = seqan::Segment<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5Q_> >, seqan::InfixSegment>, TValue = unsigned char, TSpec = seqan::Dna5_]’
./seqan/basic/basic_alphabet_simple.h:1901:2:   instantiated from ‘void seqan::assign(seqan::Dna5Q&, const TSource&) [with TSource = seqan::Segment<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5Q_> >, seqan::InfixSegment>, seqan::Dna5Q = seqan::SimpleType<unsigned char, seqan::Dna5Q_>]’
./seqan/basic/basic_alphabet_simple.h:118:3:   instantiated from ‘seqan::SimpleType<TValue, TSpec>& seqan::SimpleType<TValue, TSpec>::operator=(const T&) [with T = seqan::Segment<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5Q_> >, seqan::InfixSegment>, TValue = unsigned char, TSpec = seqan::Dna5Q_, seqan::SimpleType<TValue, TSpec> = seqan::SimpleType<unsigned char, seqan::Dna5Q_>]’
load2.cc:14:35:   instantiated from here
./seqan/basic/basic_alphabet_simple.h:352:2: error: cannot convert ‘const seqan::Segment<seqan::String<seqan::SimpleType<unsigned char, seqan::Dna5Q_> >, seqan::InfixSegment>’ to ‘unsigned char’ in assignment

Looks like the return type of getRead() is of the type "Segment<String<SimpleType<unsigned char, Dna5Q_>>" , so How do I extract the sequence info as plain char string / c++ string ?
Is there any clear documentation on how to access these data members ?  Could someone point me to such resources  if any.

Thanks!

Regards,

--
Signature
K.A.V.S Krishna Mohan
Sr.Scientist - Genome Informatics






Genotypic Technology Pvt. Ltd.
#2/13, Balaji Complex, 80 Feet Road,
R.M.V.2nd Stage, Bangalore - 560094
Tel: +91 80 40538200, +91 80 40538215 (Direct)
Fax: +91 80 40538222

Email: krishnamohan.kavs@genotypic.co.in
Web: http://www.genotypic.co.in



 

--------------070708050207090509050100 Content-Type: image/gif; name="GENOTYPIC.CO.IN\\SERVICES.HTML" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="GENOTYPIC.CO.IN\\SERVICES.HTML" R0lGODlhwgE8AIcRAERERElJSUZGRkxMTGdnZ5ycnGhoaHV1dc/Pz62trU9PT2JiYm1tbfz8 /M3NzU1NTaGhof///6ioqKmpqdDQ0Hh4eGNjY1dXV+jo6PPz8+zs7K+vr/Hx8dLS0pKSkt7e 3lFRUbi4uPT09Pn5+czMzFpaWsHBwdjY2L6+vouLi0hISODg4Obm5m5ubry8vPDw8Orq6vX1 9XZ2dlRUVLu7u/b29vj4+MrKyl9fX/7+/kpKSoCAgO7u7re3t2pqapiYmG9vb+fn55+fn9XV 1dTU1Onp6YKCgpeXl1BQUPr6+vv7+9zc3NPT04ODg2xsbP39/e/v7+Pj49vb2/f393x8fJub m+vr66ysrJWVlYyMjKSkpFZWVkVFRVNTU1lZWUdHR1VVVWVlZXNzc3BwcFhYWIiIiN3d3WBg YGtra3Jycqenp729vVxcXMjIyHFxcVJSUpaWls7Ozl5eXn9/f7Ozs/Ly8uTk5Lq6uq6uroaG huHh4aKiooGBgba2tqurq5SUlHd3d9/f37W1tXt7e6CgoMTExI6Ojp6enrS0tJCQkHl5ebm5 ueLi4pOTk5mZmaWlpWZmZtHR0ZGRkX5+fmRkZNra2rKyssXFxbGxscDAwE5OTsPDw5qammlp abCwsGFhYdbW1sLCwr+/v8nJyaampp2dnaqqqtnZ2Xp6esfHx0tLS42NjY+Pj+3t7X19fVtb W3R0dNfX14qKioeHh8bGxoWFheXl5YmJicvLy11dXaOjo4SEhAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFLAG8ACwA AAAAwgE8AAAI/wAFABBIcKDBgggPKkzIcKHDhhAfSoxIcaLFihgvaszIcaPHjiA/igxJcqTJ kihPSgTAsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRozgFIl3KtKnTp1CjSp1KtarV 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 --------------070708050207090509050100-- --------------070405000501010406030903--