Bottleneck? More efficient regular expression?

Discussion in 'Python' started by Tina Li, Sep 23, 2003.

  1. Tina Li

    Tina Li Guest

    Hello,

    I've been struggling with a regular expression for parsing XML files, which keeps giving the run time error "maximum
    recursion limit exceeded". Here is the pattern string:

    r'<code>(?P<c>.*?)</code>.*?<targetSeq
    name="(?P<tn>.*?)">.*?<target>(?P<t>.*?)</target>.*?<align>(?P<a>.*?)</align>.*?<template>(?P<temp>.*?)</template>.*?<an
    otherTag>(?P<at>.*?)</anotherTag>.*?<yetAnotherTag>(?P<yat>.*?)</yetAnotherTag>'

    The file format is straighforward. Here is a sample:

    <code>1cg2</code>
    <chain>a</chain>
    <settings>abcde</settings>
    <scoreInfo>12345</scoreInfo>
    <targetSeq name="1onc">blah
    </targetSeq>
    <alignment size="335">
    <target>WLTFQKKHITNTRDVDCDNIMS</target>
    <align> :| ..| : . | . |. . :</align>
    <template>QKRDNVLFQAATDEQPAVIKTLEKL</template>
    <anotherTag>foobarfoobar</anotherTag>
    <yetAnotherTag>barfoobarfoo</yetAnotherTag>

    # this group of tags then repeat in the file multiple times

    If I search for the pattern up to "</template>" (i.e. no <anotherTag> onwards), it works fine. As soon as I added the
    later bits into the pattern it gives the error.

    I heard that non-greedy (*?) is inefficient, so I tried replacing all .*? with (?!<target>) etc. which means "if the the
    next piece of text doesn't match the <target> tag keep going". But it gives the same error.

    So my question is: what is the bottleneck in this pattern? Could someone more experienced in REs give some hints here?

    Your help is greatly appreciated!

    Tina




    -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
    http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
    -----== Over 100,000 Newsgroups - 19 Different Servers! =-----
    Tina Li, Sep 23, 2003
    #1
    1. Advertising

  2. Tina Li

    anton muhin Guest

    Tina Li wrote:
    > Hello,
    >
    >[skipped]
    >


    Personally I'd rather split it in several separate re's. Something like
    match_tag(tag_name) that matches tag group at the start of the string.

    hth,
    anton.
    anton muhin, Sep 23, 2003
    #2
    1. Advertising

  3. In article <>,
    "Tina Li" <tina_li23 AT hotmail DOT com> wrote:

    > I've been struggling with a regular expression for parsing XML files,
    > which keeps giving the run time error "maximum recursion limit
    > exceeded".


    Why not use a real XML parser? xml.parsers.expat is easy enough to use,
    doesn't have problems with recursion limits, and will continue working
    when someone generates a valid XML file in a slightly different version
    than the one you expect.

    --
    David Eppstein http://www.ics.uci.edu/~eppstein/
    Univ. of California, Irvine, School of Information & Computer Science
    David Eppstein, Sep 23, 2003
    #3
  4. Tina Li

    Tina Li Guest

    Hello,

    Thanks for the suggestion. It does solve my problem -- but just out of curiosity, I'd like to know what caused the
    over-limit as well.

    Thanks again!

    Tina

    "David Eppstein" <> wrote in message news:...
    | In article <>,
    | "Tina Li" <tina_li23 AT hotmail DOT com> wrote:
    |
    | > I've been struggling with a regular expression for parsing XML files,
    | > which keeps giving the run time error "maximum recursion limit
    | > exceeded".
    |
    | Why not use a real XML parser? xml.parsers.expat is easy enough to use,
    | doesn't have problems with recursion limits, and will continue working
    | when someone generates a valid XML file in a slightly different version
    | than the one you expect.
    |
    | --
    | David Eppstein http://www.ics.uci.edu/~eppstein/
    | Univ. of California, Irvine, School of Information & Computer Science



    -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
    http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
    -----== Over 100,000 Newsgroups - 19 Different Servers! =-----
    Tina Li, Sep 23, 2003
    #4
  5. Tina Li

    Andrew Dalke Guest

    Tina Li:
    > I've been struggling with a regular expression for parsing XML files,
    > which keeps giving the run time error "maximum recursion limit
    > exceeded".

    [ ... in reply to David Eppstein ...]
    > I'd like to know what caused theover-limit as well.


    When matching a pattern against a string, an ambiguity may arise.
    For example the pattern "AX|AY" when matched against text
    which starts with "A" can match the "A" in "AX" or the "A" in
    "AY". There are different ways to resolve this ambiguity.

    The standard way is to use push the current state on the stack
    and try the first possible path. Every ambiguity gets its own
    push on the stack. If that path fails, the system backtracks by
    popping the state off the stack and trying the next possibility.

    Every ambiguity point causes a stack push. (Well, not quite.
    It's possible to collapse some of the ambiguity in some cases.
    For example, Python's sre regular expression system recognizes
    the common prefix and changes the above pattern into
    "A|[XY]".)

    In your pattern you used .*? frequently. The thing about . is that
    it can match the "<" character, so every time you have a .*?<
    you have an ambiguity. Since you use non-greedy .*?, it takes
    the < path first, and pushes the generic capture on the stack.

    What I can't figure out though is why you have any stack
    problems. All your ambiguities are easy to figure out, so you
    have at most one stack term for each .*?.

    I then tried to reproduce it, and wasn't able to do so. Here's
    my code. (I needed to use re.DOTALL because you want
    the .*? to capture the newline as well.)

    >>> import re
    >>> s="""<code>1cg2</code>

    .... <chain>a</chain>
    .... <settings>abcde</settings>
    .... <scoreInfo>12345</scoreInfo>
    .... <targetSeq name="1onc">blah
    .... </targetSeq>
    .... <alignment size="335">
    .... <target>WLTFQKKHITNTRDVDCDNIMS</target>
    .... <align> :| ..| : . | . |. . :</align>
    .... <template>QKRDNVLFQAATDEQPAVIKTLEKL</template>
    .... <anotherTag>foobarfoobar</anotherTag>
    .... <yetAnotherTag>barfoobarfoo</yetAnotherTag>
    .... """
    >>> pattern = (r'<code>(?P<c>.*?)</code>.*?'

    .... r'<targetSeq name="(?P<tn>.*?)">.*?'
    .... r'<target>(?P<t>.*?)</target>.*?'
    .... r'<align>(?P<a>.*?)</align>.*?'
    .... r'<template>(?P<temp>.*?)</template>.*?'
    .... r'<anotherTag>(?P<at>.*?)</anotherTag>.*?'
    .... r'<yetAnotherTag>(?P<yat>.*?)</yetAnotherTag>')
    >>> pat = re.compile(pattern, re.DOTALL)
    >>> m = pat.search(s)
    >>> for k, v in m.groupdict().items():

    .... print k, "=", repr(v)
    ....
    a = ' :| ..| : . | . |. . :'
    c = '1cg2'
    temp = 'QKRDNVLFQAATDEQPAVIKTLEKL'
    yat = 'barfoobarfoo'
    tn = '1onc'
    t = 'WLTFQKKHITNTRDVDCDNIMS'
    at = 'foobarfoobar'
    >>>


    In any case, as others pointed out, if it's XML you should parse
    it as XML. You don't actually have XML (it needs to be
    single rooted and the <alignment size="335"> has no close tag)
    so assuming it was fixed, here's some code which uses the
    standard XML parsing libraries in Python


    >>> s="""<record>

    .... <code>1cg2</code>
    .... <chain>a</chain>
    .... <settings>abcde</settings>
    .... <scoreInfo>12345</scoreInfo>
    .... <targetSeq name="1onc">blah
    .... </targetSeq>
    .... <alignment size="335"/>
    .... <target>WLTFQKKHITNTRDVDCDNIMS</target>
    .... <align> :| ..| : . | . |. . :</align>
    .... <template>QKRDNVLFQAATDEQPAVIKTLEKL</template>
    .... <anotherTag>foobarfoobar</anotherTag>
    .... <yetAnotherTag>barfoobarfoo</yetAnotherTag>
    .... </record>
    .... """
    >>> from xml.sax import handler
    >>> import xml.sax
    >>> class GetFields(handler.ContentHandler):

    .... def startDocument(self):
    .... self.fields = {}
    .... self.save_text = 0
    .... self.text = None
    .... def startElement(self, name, attrs):
    .... if name == "record":
    .... return
    .... if name == "targetSeq":
    .... self.fields["targetSeqName"] = attrs["name"]
    .... elif name == "alignment":
    .... self.fields["alignmentSize"] = attrs["size"]
    .... self.save_text = 1
    .... self.text = ""
    .... def characters(self, text):
    .... if self.save_text:
    .... self.text += text
    .... def endElement(self, name):
    .... if name == "record":
    .... return
    .... self.fields[name] = self.text
    .... self.text = None
    .... self.save_text = 0
    ....
    >>> gf = GetFields()
    >>> xml.sax.parseString(s, gf)
    >>> gf
    >>> for k, v in gf.fields.items():

    .... print k, "=", repr(v)
    ....
    code = u'1cg2'
    yetAnotherTag = u'barfoobarfoo'
    target = u'WLTFQKKHITNTRDVDCDNIMS'
    chain = u'a'
    scoreInfo = u'12345'
    align = u' :| ..| : . | . |. . :'
    settings = u'abcde'
    anotherTag = u'foobarfoobar'
    template = u'QKRDNVLFQAATDEQPAVIKTLEKL'
    alignmentSize = u'335'
    targetSeq = u'blah\n'
    targetSeqName = u'1onc'
    alignment = ''
    >>>


    Another approach is to turn the XML into a DOM but I
    have much less experience with that. (I get confused with
    the DOM API every time I try, and I've never needed
    to get that far with it.)

    > The file format is straighforward. Here is a sample:
    >
    > <code>1cg2</code>
    > <chain>a</chain>


    Hmmm... Looks like you're doing sequence alignments against
    PDB structures. Do you know about biopython.org?

    > So my question is: what is the bottleneck in this pattern? Could someone
    > more experienced in REs give some hints here?


    You're going to have to post your reproducible for me to
    help any further than this.

    Andrew
    Andrew Dalke, Sep 24, 2003
    #5
  6. "Tina Li" <tina_li23 AT hotmail DOT com> wrote in message news:<3f70a03d$>:
    > Thanks for the suggestion. It does solve my problem -- but just out of curiosity, I'd like to know what caused the
    > over-limit as well.


    That was caused by the multitude of non-greedy quantifiers you've got
    in there.

    If you haven't yet read Friedl's "Mastering Regular Expressions," it's
    quite elucidating.

    Jeremy
    Jeremy Fincher, Sep 24, 2003
    #6
  7. Tina Li

    Andrew Dalke Guest

    Jeremy Fincher:
    > That was caused by the multitude of non-greedy quantifiers you've got
    > in there.


    Except it wasn't reproducible on my machine.

    It may be that she was using a Mac, which has an absurdly
    low stack space compared to the other machines I used.
    But still, I couldn't figure out why it would use that much
    stack space. There's only about 300 characters in that
    text, so even if every character caused a stack push it still
    shouldn't have created a problem.

    What I really suspect is that she shortened her data
    before reporting the problem. It claims to have 335
    residues in the alignment but she only reports about 20.

    Tina? If this is the case then please remember next time
    to report something which actually causes the bug rather
    than something you think may cause the bug. Doing so
    may also give you clues to what's wrong and makes our
    life that much easier.

    > If you haven't yet read Friedl's "Mastering Regular Expressions," it's
    > quite elucidating.


    I second that motion.

    Andrew
    Andrew Dalke, Sep 24, 2003
    #7
  8. Andrew Dalke wrote:

    > Another approach is to turn the XML into a DOM but I
    > have much less experience with that. (I get confused with
    > the DOM API every time I try


    the DOM API is designed for consultants, not for humans or
    computers.

    here's the elementtree version, btw:

    s = """<record>
    <code>1cg2</code>
    <chain>a</chain>
    <settings>abcde</settings>
    <scoreInfo>12345</scoreInfo>
    <targetSeq name="1onc">blah
    </targetSeq>
    <alignment size="335"/>
    <target>WLTFQKKHITNTRDVDCDNIMS</target>
    <align> :| ..| : . | . |. . :</align>
    <template>QKRDNVLFQAATDEQPAVIKTLEKL</template>
    <anotherTag>foobarfoobar</anotherTag>
    <yetAnotherTag>barfoobarfoo</yetAnotherTag>
    </record>"""

    from elementtree.ElementTree import XML

    for node in XML(s):
    print node.tag, "=", repr(node.text)

    (more here: http://effbot.org/zone/element-index.htm )

    </F>
    Fredrik Lundh, Sep 24, 2003
    #8
  9. Tina Li

    Max M Guest

    Fredrik Lundh wrote:

    > the DOM API is designed for consultants, not for humans or
    > computers.


    :-D QOTW ?

    regards Max M
    Max M, Sep 24, 2003
    #9
  10. Tina Li

    Tina Li Guest

    Hello all,

    Thanks so much for all your replies. Yes, I've shortened the XML snippet considerably as the data was obscurely long
    (with linebreaks, it would look so ugly that no one would try taking a read), but the format (i.e. tags) isn't that
    complicated at all. And the pattern actually tries to match more tags than I posted, for the same readability reason.

    I'm running Python on Win XP.

    I'll for sure pick up the regular expressions book as soon as I have the time.

    Andrew: Thanks for the XML code. I've written up something similar using xml.parsers.expat, but it's conceivably slower
    than regexp. And thanks for suggesting biopython.org. But I need to have it up quick so maybe cobbling something
    together myself is faster than reading through their documentation.

    Here is a complete XML output and the complete pattern I wanted to search for, for anyone that's interested. Again, I
    really appreciate your efforts!

    Tina

    ----------pattern begins ---------------
    pattern = re.compile (
    r'<pdbcode>(?P<pdbcode>.*?)</pdbcode>.*?<targetSeq
    name="(?P<targetName>.*?)">.*?<target>(?P<target>.*?)</target>.*?<align>(?P<align>.*?)</align>.*?<template>(?P<template>
    ..*?)</template>.*?<pdbBackbone>(?P<pdbBackbone>.*?)</pdbBackbone>.*?<queryGaps>(?P<queryGaps>.*?)</queryGaps>.*?<templat
    eGaps>(?P<templateGaps>.*?)</templateGaps>',
    re.S)

    or

    pattern = re.compile(
    r'<pdbcode>(?P<pdbcode>[^<]*)</pdbcode>(?!<targetSeq)<targetSeq
    name="(?P<targetName>[^"]*)">(?!<target>)<target>(?P<target>*?)</target>(?!<align>)<align>(?P<align>.*?)</align>(?!<temp
    late>)<template>(?P<template>.*?)</template>(?!<pdbBackbone>)<pdbBackbone>(?P<pdbBackbone>.*?)</pdbBackbone>(<?!<queryGa
    ps>)<queryGaps>(?P<queryGaps>[^<]*)</queryGaps>(?!<templateGaps>)<templateGaps>(?P<templateGaps>[^<]*)</templateGaps>',
    re.S)
    ----------pattern ends ---------------

    ----------XML starts ---------------
    <threading name="" source="t0044.seq.ss" template="153l">
    <pdbcode>153l</pdbcode>
    <pdbchain> </pdbchain>
    <templateName>153l</templateName>
    <settings>
    <secondaryStructure>yes</secondaryStructure>
    <useProfile>no</useProfile>
    <alignmentType>global</alignmentType>
    </settings>
    <scoreInfo>
    <seqLen>103</seqLen>
    <tempLen>185</tempLen>
    <rawScore>672.55</rawScore>
    <mutationScore>93.58</mutationScore>
    <singletonScore>-48.57</singletonScore>
    <gapPenalty>1212.00</gapPenalty>
    <ssfit>-584.46</ssfit>
    <anchormatch>0.00</anchormatch>
    <nanchor>0.0</nanchor>
    <nmrBackbone>0.0</nmrBackbone>
    <pairConstrn>0.0</pairConstrn>
    <npair>0</npair>
    <pairViolate>0.0</pairViolate>
    <radiusOfGyration>2.23</radiusOfGyration>
    <svmScore>-1.170</svmScore>
    </scoreInfo>
    <targetSeq name="t0044">
    <seq>DWLTFQKKHITNDRTVDCDNIMSTNLFHCKNDKTFIYSRPEPVKAICKASKASKNVLTTSEFYLSDCNVTSRPCKYKLKKSTNKFCVTCENQAPVHFVGVGSC</seq>
    </targetSeq>
    <templateSeq src="153l">
    <seq>RTDCYGNVNRIDTTGASCKTAKPEGLSYCGVSASKKIAERDLQAMDRYKTIIKKVGEKLCVEPAVIAGIISRESHAGKVLKNGWGDRGNGFGLMQVDKRSHKPQGTWNGEVHITQ
    GTTILINFIKTIQKKFPSWTKDQQLKGGISAYNAGAGNVRSYARMDIGTTHDDYANDVVARAQYYKQHGY</seq>
    </templateSeq>
    <alignment size="170">
    <target_ss>hh hhhhhl lllllllhhhhhhhhhlllllllleeelllhhhhhhhh llllllllllllleeeeelllllllll
    l llllleeeeeee llll leeeeelll</target_ss>
    <target>DW---------------LTFQKKHITNTRDVDCDNIMSTNLFHCKDKNTFIYSRPEPVKAIC------------------KGIIASKNVLTTSEFYLSDCNVTSRPCK----
    ------------------------YKLKKSTNKFCVTC------ENQAPVHFVGVGSC</target>
    <align> | | .. . .| . . || | |. |
    .. </align>
    <template>RTDCYGNVNRIDTTGASCKTAKPEGLSYCGVSASKKIAERDLQ------AMDRYKTIIKKVGEKLCVEPAVIAGIISRESHAGKVLKNGWGDRGNGFGLMQVDKRSHKPQ
    GTWNGEVHITQGTTILINFIKTIQKKFPSWTKDQQLKGGISAYNAGAGNVRSYARMDIGT</template>
    <template_ss>lllllllhhhlllllelhhhhhhhlllllehhhhhhhhhhlhh
    hhhllhhhhhhhhhhhlllhhhhhhhhhhhhllllllellellllleelllleellllllllllllhhhhhhhhhhhhhhhhhhhhhlllllhhhhhhhhhhhhhhlhhhllllllllll
    l</template_ss>
    </alignment>
    <alignmentInfo>
    <nident>8</nident>
    <nalign>170</nalign>
    <nmatched>97</nmatched>
    <alignFreq>4.71</alignFreq>
    <templateFrom>1</templateFrom> <templateFromChar> </templateFromChar>
    <templateTo>164</templateTo> <templateToChar> </templateToChar>
    <targetFrom>1</targetFrom> <targetFromChar>D</targetFromChar>
    <targetTo>103</targetTo> <targetToChar>C</targetToChar>
    </alignmentInfo>
    <pdbBackbone>
    HEADER
    ATOM 1 N ASP 1 6.350 34.124 50.750 1.00 41.90
    ATOM 2 CA ASP 1 6.324 32.707 50.379 1.00 54.68
    ATOM 3 C ASP 1 6.334 32.484 48.874 1.00 14.63
    ATOM 4 O ASP 1 7.356 32.060 48.316 1.00 23.75
    ATOM 5 CB ASP 1 5.009 32.300 50.934 1.00 40.20
    ATOM 12 N TRP 2 5.206 32.767 48.261 1.00 15.22
    ATOM 13 CA TRP 2 5.197 32.618 46.826 1.00 15.40
    ATOM 14 C TRP 2 4.781 33.870 46.108 1.00 23.28
    ATOM 15 O TRP 2 4.716 33.930 44.845 1.00 20.96
    ATOM 16 CB TRP 2 4.452 31.426 46.229 1.00 12.40
    ATOM 19 N ASP 3 4.497 34.900 46.908 1.00 31.19
    ATOM 20 CA ASP 3 4.020 36.132 46.259 1.00 35.11
    ATOM 21 C ASP 3 4.987 37.273 45.992 1.00 19.94
    ATOM 22 O ASP 3 4.530 38.398 45.795 1.00 29.83
    ATOM 23 CB ASP 3 2.951 36.717 47.185 1.00 28.17
    ATOM 27 N CYS 4 6.285 37.076 46.089 1.00 17.27
    ATOM 28 CA CYS 4 7.131 38.210 45.919 1.00 16.83
    ATOM 29 C CYS 4 7.073 38.939 44.605 1.00 15.34
    ATOM 30 O CYS 4 7.459 40.095 44.530 1.00 22.22
    ATOM 31 CB CYS 4 8.597 37.815 46.045 1.00 14.54
    ATOM 33 N TYR 5 6.691 38.264 43.538 1.00 11.91
    ATOM 34 CA TYR 5 6.719 38.935 42.270 1.00 13.01
    ATOM 35 C TYR 5 5.366 39.179 41.653 1.00 13.67
    ATOM 36 O TYR 5 5.254 39.476 40.486 1.00 19.57
    ATOM 37 CB TYR 5 7.599 38.124 41.282 1.00 21.26
    ATOM 45 N GLY 6 4.320 39.020 42.427 1.00 19.79
    ATOM 46 CA GLY 6 2.986 39.221 41.892 1.00 15.13
    ATOM 47 C GLY 6 2.071 38.002 41.992 1.00 17.68
    ATOM 48 O GLY 6 2.522 36.960 42.438 1.00 21.96
    ATOM 49 N ASN 7 0.819 38.158 41.541 1.00 18.97
    ATOM 50 CA ASN 7 -0.269 37.184 41.565 1.00 20.89
    ATOM 51 C ASN 7 -0.922 37.069 40.232 1.00 13.79
    ATOM 52 O ASN 7 -1.584 37.990 39.760 1.00 14.39
    ATOM 53 CB ASN 7 -1.372 37.625 42.536 1.00 19.21
    ATOM 57 N VAL 8 -0.712 35.885 39.670 1.00 11.47
    ATOM 58 CA VAL 8 -1.140 35.549 38.341 1.00 13.53
    ATOM 59 C VAL 8 -2.639 35.725 38.151 1.00 16.44
    ATOM 60 O VAL 8 -3.136 36.042 37.068 1.00 16.78
    ATOM 61 CB VAL 8 -0.510 34.194 38.027 1.00 19.71
    ATOM 64 N ASN 9 -3.372 35.566 39.273 1.00 13.89
    ATOM 65 CA ASN 9 -4.817 35.710 39.211 1.00 15.89
    ATOM 66 C ASN 9 -5.282 37.131 38.900 1.00 19.52
    ATOM 67 O ASN 9 -6.363 37.351 38.370 1.00 24.16
    ATOM 68 CB ASN 9 -5.453 35.209 40.525 1.00 18.62
    ATOM 72 N ARG 10 -4.438 38.091 39.261 1.00 18.23
    ATOM 73 CA ARG 10 -4.704 39.489 39.013 1.00 16.98
    ATOM 74 C ARG 10 -4.263 39.964 37.648 1.00 24.72
    ATOM 75 O ARG 10 -4.425 41.103 37.302 1.00 25.07
    ATOM 76 CB ARG 10 -4.096 40.343 40.107 1.00 16.61
    ATOM 83 N ILE 11 -3.680 39.142 36.833 1.00 12.30
    ATOM 84 CA ILE 11 -3.243 39.663 35.555 1.00 11.67
    ATOM 85 C ILE 11 -4.311 39.453 34.499 1.00 15.07
    ATOM 86 O ILE 11 -4.925 38.395 34.322 1.00 14.87
    ATOM 87 CB ILE 11 -1.974 38.893 35.146 1.00 13.19
    ATOM 91 N ASP 12 -4.476 40.480 33.721 1.00 10.40
    ATOM 92 CA ASP 12 -5.375 40.394 32.630 1.00 9.07
    ATOM 93 C ASP 12 -4.712 39.584 31.541 1.00 14.37
    ATOM 94 O ASP 12 -3.499 39.657 31.264 1.00 15.22
    ATOM 95 CB ASP 12 -5.654 41.801 32.052 1.00 16.23
    ATOM 99 N THR 13 -5.525 38.788 30.877 1.00 13.21
    ATOM 100 CA THR 13 -5.049 37.945 29.754 1.00 8.47
    ATOM 101 C THR 13 -6.057 37.713 28.617 1.00 13.25
    ATOM 102 O THR 13 -7.262 37.494 28.840 1.00 13.51
    ATOM 103 CB THR 13 -4.537 36.539 30.242 1.00 9.34
    ATOM 106 N THR 14 -5.563 37.660 27.389 1.00 9.95
    ATOM 107 CA THR 14 -6.362 37.341 26.199 1.00 10.95
    ATOM 108 C THR 14 -6.104 35.904 25.761 1.00 9.21
    ATOM 109 O THR 14 -6.538 35.495 24.711 1.00 13.31
    ATOM 110 CB THR 14 -6.088 38.262 24.982 1.00 15.36
    ATOM 113 N GLY 15 -5.311 35.227 26.552 1.00 9.11
    ATOM 114 CA GLY 15 -4.936 33.832 26.340 1.00 5.18
    ATOM 115 C GLY 15 -4.211 33.514 25.039 1.00 8.25
    ATOM 116 O GLY 15 -3.504 34.361 24.452 1.00 10.14
    ATOM 117 N ALA 16 -4.417 32.269 24.592 1.00 8.97
    ATOM 118 CA ALA 16 -3.756 31.780 23.367 1.00 8.87
    ATOM 119 C ALA 16 -4.248 32.394 22.083 1.00 17.57
    ATOM 120 O ALA 16 -5.452 32.558 21.876 1.00 19.67
    ATOM 121 CB ALA 16 -3.874 30.254 23.209 1.00 8.52
    ATOM 122 N SER 17 -3.303 32.710 21.202 1.00 12.23
    ATOM 123 CA SER 17 -3.685 33.173 19.913 1.00 14.14
    ATOM 124 C SER 17 -4.115 31.925 19.160 1.00 10.86
    ATOM 125 O SER 17 -3.829 30.799 19.547 1.00 12.73
    ATOM 126 CB SER 17 -2.559 33.888 19.125 1.00 12.37
    ATOM 128 N LEU 18 -4.797 32.103 18.006 1.00 13.77
    ATOM 129 CA LEU 18 -5.198 30.985 17.165 1.00 9.49
    ATOM 130 C LEU 18 -3.982 30.271 16.634 1.00 13.30
    ATOM 131 O LEU 18 -4.062 29.071 16.323 1.00 17.10
    ATOM 132 CB LEU 18 -6.100 31.419 16.012 1.00 16.12
    ATOM 134 N THR 19 -2.844 31.038 16.581 1.00 16.65
    ATOM 135 CA THR 19 -1.557 30.492 16.110 1.00 20.13
    ATOM 136 C THR 19 -1.022 29.422 17.031 1.00 17.62
    ATOM 137 O THR 19 -0.281 28.547 16.641 1.00 17.95
    ATOM 138 CB THR 19 -0.506 31.547 15.866 1.00 22.36
    ATOM 143 N PHE 20 -1.419 29.524 18.281 1.00 12.67
    ATOM 144 CA PHE 20 -1.066 28.574 19.262 1.00 9.28
    ATOM 145 C PHE 20 -2.150 27.511 19.348 1.00 16.27
    ATOM 146 O PHE 20 -1.834 26.333 19.405 1.00 12.35
    ATOM 147 CB PHE 20 -0.901 29.250 20.641 1.00 12.91
    ATOM 150 N GLN 21 -3.437 27.908 19.404 1.00 14.96
    ATOM 151 CA GLN 21 -4.510 26.920 19.569 1.00 14.60
    ATOM 152 C GLN 21 -4.745 25.888 18.490 1.00 15.23
    ATOM 153 O GLN 21 -4.960 24.732 18.804 1.00 14.72
    ATOM 154 CB GLN 21 -5.852 27.599 19.725 1.00 17.27
    ATOM 155 N LYS 22 -4.733 26.342 17.253 1.00 17.44
    ATOM 156 CA LYS 22 -5.049 25.511 16.089 1.00 18.22
    ATOM 157 C LYS 22 -4.242 24.274 15.957 1.00 22.35
    ATOM 158 O LYS 22 -4.822 23.199 15.864 1.00 22.93
    ATOM 159 CB LYS 22 -5.207 26.291 14.787 1.00 39.05
    ATOM 164 N LYS 23 -2.922 24.522 15.986 1.00 21.44
    ATOM 165 CA LYS 23 -1.925 23.502 15.898 1.00 28.71
    ATOM 166 C LYS 23 -2.089 22.511 16.992 1.00 26.51
    ATOM 167 O LYS 23 -1.689 21.375 16.781 1.00 27.28
    ATOM 168 CB LYS 23 -0.557 24.142 15.992 1.00 24.31
    ATOM 171 N HIS 24 -2.689 22.912 18.125 1.00 23.52
    ATOM 172 CA HIS 24 -2.957 22.015 19.246 1.00 17.64
    ATOM 173 C HIS 24 -4.261 21.238 19.037 1.00 25.69
    ATOM 174 O HIS 24 -4.782 20.441 19.828 1.00 24.12
    ATOM 175 CB HIS 24 -3.031 22.814 20.547 1.00 21.94
    ATOM 180 N ILE 25 -4.848 21.498 17.886 1.00 20.33
    ATOM 181 CA ILE 25 -6.039 20.790 17.561 1.00 19.74
    ATOM 182 C ILE 25 -7.309 21.416 18.022 1.00 52.11
    ATOM 183 O ILE 25 -8.293 20.693 18.015 1.00 29.97
    ATOM 184 N THR 26 -7.316 22.696 18.396 1.00 21.00
    ATOM 185 CA THR 26 -8.575 23.274 18.841 1.00 17.97
    ATOM 186 C THR 26 -9.170 24.121 17.750 1.00 23.90
    ATOM 187 O THR 26 -8.491 24.669 16.872 1.00 22.06
    ATOM 188 CB THR 26 -8.417 24.039 20.169 1.00 16.04
    ATOM 192 N ASN 27 -10.489 24.216 17.815 1.00 22.27
    ATOM 193 CA ASN 27 -11.145 25.033 16.835 1.00 30.87
    ATOM 194 C ASN 27 -11.396 26.449 17.333 1.00 20.92
    ATOM 195 O ASN 27 -11.949 27.244 16.630 1.00 25.71
    ATOM 196 CB ASN 27 -12.496 24.404 16.524 1.00 41.55
    ATOM 198 N THR 28 -11.045 26.799 18.531 1.00 12.99
    ATOM 199 CA THR 28 -11.305 28.088 19.117 1.00 10.23
    ATOM 200 C THR 28 -9.958 28.508 19.763 1.00 18.65
    ATOM 201 O THR 28 -9.038 27.720 19.905 1.00 15.87
    ATOM 202 CB THR 28 -12.490 28.044 20.163 1.00 11.69
    ATOM 210 N ARG 29 -9.879 29.796 20.107 1.00 13.59
    ATOM 211 CA ARG 29 -8.702 30.494 20.656 1.00 14.87
    ATOM 212 C ARG 29 -8.971 31.198 21.971 1.00 15.30
    ATOM 213 O ARG 29 -10.032 31.012 22.537 1.00 15.82
    ATOM 214 CB ARG 29 -8.184 31.409 19.558 1.00 12.80
    ATOM 216 N ASP 30 -8.027 31.942 22.511 1.00 11.92
    ATOM 217 CA ASP 30 -8.211 32.652 23.762 1.00 10.10
    ATOM 218 C ASP 30 -7.973 31.916 25.050 1.00 8.06
    ATOM 219 O ASP 30 -7.376 30.871 25.088 1.00 10.09
    ATOM 220 N VAL 31 -8.468 32.528 26.103 1.00 9.23
    ATOM 221 CA VAL 31 -8.347 32.054 27.465 1.00 9.04
    ATOM 222 C VAL 31 -8.845 30.607 27.651 1.00 14.36
    ATOM 223 O VAL 31 -8.176 29.814 28.267 1.00 10.20
    ATOM 224 CB VAL 31 -8.997 32.998 28.493 1.00 13.63
    ATOM 227 N ASP 32 -10.048 30.232 27.150 1.00 13.22
    ATOM 228 CA ASP 32 -10.578 28.880 27.324 1.00 10.21
    ATOM 229 C ASP 32 -9.703 27.879 26.604 1.00 5.16
    ATOM 230 O ASP 32 -9.581 26.773 27.074 1.00 9.41
    ATOM 231 CB ASP 32 -12.065 28.818 26.930 1.00 10.48
    ATOM 233 N CYS 33 -9.087 28.262 25.448 1.00 8.84
    ATOM 234 CA CYS 33 -8.180 27.353 24.716 1.00 13.00
    ATOM 235 C CYS 33 -6.927 27.102 25.553 1.00 8.21
    ATOM 236 O CYS 33 -6.474 25.991 25.723 1.00 6.80
    ATOM 237 CB CYS 33 -7.810 27.964 23.385 1.00 10.03
    ATOM 238 N ASP 34 -6.393 28.175 26.139 1.00 8.82
    ATOM 239 CA ASP 34 -5.237 28.075 27.011 1.00 6.80
    ATOM 240 C ASP 34 -5.496 27.079 28.121 1.00 11.47
    ATOM 241 O ASP 34 -4.659 26.220 28.486 1.00 10.62
    ATOM 242 CB ASP 34 -4.805 29.401 27.630 1.00 10.24
    ATOM 244 N ASN 35 -6.657 27.263 28.747 1.00 8.67
    ATOM 245 CA ASN 35 -7.015 26.387 29.866 1.00 8.73
    ATOM 246 C ASN 35 -7.226 24.929 29.459 1.00 5.35
    ATOM 247 O ASN 35 -6.890 24.029 30.165 1.00 11.18
    ATOM 248 CB ASN 35 -8.229 26.926 30.628 1.00 8.70
    ATOM 253 N ILE 36 -7.798 24.692 28.317 1.00 7.98
    ATOM 254 CA ILE 36 -8.014 23.356 27.773 1.00 12.58
    ATOM 255 C ILE 36 -6.619 22.689 27.526 1.00 11.19
    ATOM 256 O ILE 36 -6.359 21.568 27.882 1.00 8.51
    ATOM 257 CB ILE 36 -8.851 23.471 26.478 1.00 10.10
    ATOM 262 N MET 37 -5.693 23.395 26.911 1.00 11.14
    ATOM 263 CA MET 37 -4.331 22.899 26.657 1.00 10.84
    ATOM 264 C MET 37 -3.647 22.579 27.982 1.00 8.70
    ATOM 265 O MET 37 -3.039 21.520 28.231 1.00 9.28
    ATOM 266 CB MET 37 -3.527 23.855 25.776 1.00 7.01
    ATOM 270 N SER 38 -3.777 23.495 28.968 1.00 7.34
    ATOM 271 CA SER 38 -3.274 23.311 30.319 1.00 8.34
    ATOM 272 C SER 38 -3.820 22.034 30.955 1.00 11.54
    ATOM 273 O SER 38 -3.117 21.272 31.590 1.00 8.64
    ATOM 274 CB SER 38 -3.573 24.483 31.203 1.00 10.66
    ATOM 275 N THR 39 -5.130 21.836 30.794 1.00 8.67
    ATOM 276 CA THR 39 -5.796 20.631 31.296 1.00 9.93
    ATOM 277 C THR 39 -5.271 19.380 30.597 1.00 7.81
    ATOM 278 O THR 39 -5.040 18.401 31.294 1.00 11.77
    ATOM 279 CB THR 39 -7.350 20.713 31.166 1.00 12.96
    ATOM 284 N ASN 40 -5.048 19.357 29.292 1.00 8.20
    ATOM 285 CA ASN 40 -4.494 18.202 28.632 1.00 10.28
    ATOM 286 C ASN 40 -3.113 17.828 29.185 1.00 14.82
    ATOM 287 O ASN 40 -2.685 16.710 29.060 1.00 12.36
    ATOM 288 CB ASN 40 -4.239 18.513 27.182 1.00 13.25
    ATOM 295 N LEU 41 -2.362 18.763 29.739 1.00 12.05
    ATOM 296 CA LEU 41 -1.027 18.542 30.299 1.00 8.70
    ATOM 297 C LEU 41 -1.007 18.310 31.774 1.00 10.32
    ATOM 298 O LEU 41 0.047 18.070 32.307 1.00 11.23
    ATOM 299 CB LEU 41 -0.104 19.761 30.044 1.00 8.68
    ATOM 303 N PHE 42 -2.111 18.384 32.502 1.00 10.28
    ATOM 304 CA PHE 42 -2.123 18.241 33.932 1.00 7.74
    ATOM 305 C PHE 42 -1.584 16.965 34.488 1.00 6.94
    ATOM 306 O PHE 42 -0.856 16.988 35.480 1.00 11.38
    ATOM 307 CB PHE 42 -3.578 18.462 34.393 1.00 10.85
    ATOM 311 N HIS 43 -1.954 15.850 33.884 1.00 11.56
    ATOM 312 CA HIS 43 -1.478 14.572 34.413 1.00 13.43
    ATOM 313 C HIS 43 0.021 14.426 34.328 1.00 9.21
    ATOM 314 O HIS 43 0.655 13.962 35.274 1.00 11.97
    ATOM 315 CB HIS 43 -2.196 13.369 33.789 1.00 22.61
    ATOM 320 N PHE 50 0.557 14.873 33.203 1.00 10.13
    ATOM 321 CA PHE 50 2.031 14.847 33.042 1.00 11.73
    ATOM 322 C PHE 50 2.688 15.830 33.991 1.00 13.22
    ATOM 323 O PHE 50 3.701 15.560 34.606 1.00 14.33
    ATOM 324 CB PHE 50 2.447 15.091 31.608 1.00 12.79
    ATOM 325 N ILE 51 2.074 17.008 34.135 1.00 9.50
    ATOM 326 CA ILE 51 2.541 18.020 35.071 1.00 10.63
    ATOM 327 C ILE 51 2.620 17.513 36.516 1.00 10.86
    ATOM 328 O ILE 51 3.540 17.815 37.317 1.00 10.59
    ATOM 329 CB ILE 51 1.633 19.286 35.046 1.00 9.78
    ATOM 333 N TYR 52 1.548 16.782 36.872 1.00 10.91
    ATOM 334 CA TYR 52 1.419 16.253 38.232 1.00 14.91
    ATOM 335 C TYR 52 2.602 15.415 38.690 1.00 5.40
    ATOM 336 O TYR 52 2.875 15.288 39.902 1.00 10.38
    ATOM 337 CB TYR 52 0.067 15.566 38.493 1.00 13.05
    ATOM 341 N SER 53 3.302 14.863 37.676 1.00 12.21
    ATOM 342 CA SER 53 4.527 14.081 37.992 1.00 15.65
    ATOM 343 C SER 53 5.620 14.884 38.659 1.00 20.98
    ATOM 344 O SER 53 6.488 14.344 39.366 1.00 19.63
    ATOM 345 CB SER 53 5.236 13.394 36.849 1.00 17.41
    ATOM 352 N ARG 54 5.580 16.200 38.412 1.00 14.23
    ATOM 353 CA ARG 54 6.590 17.113 38.921 1.00 18.49
    ATOM 354 C ARG 54 6.061 18.131 39.918 1.00 16.13
    ATOM 355 O ARG 54 6.756 19.072 40.283 1.00 14.22
    ATOM 356 CB ARG 54 7.210 17.867 37.703 1.00 13.25
    ATOM 364 N PRO 55 4.814 17.962 40.315 1.00 12.96
    ATOM 365 CA PRO 55 4.189 18.900 41.197 1.00 13.07
    ATOM 366 C PRO 55 4.938 19.292 42.453 1.00 16.41
    ATOM 367 O PRO 55 5.061 20.486 42.810 1.00 13.03
    ATOM 368 CB PRO 55 2.727 18.556 41.345 1.00 12.33
    ATOM 373 N GLU 56 5.448 18.288 43.125 1.00 20.00
    ATOM 374 CA GLU 56 6.173 18.540 44.355 1.00 17.29
    ATOM 375 C GLU 56 7.384 19.395 44.140 1.00 12.31
    ATOM 376 O GLU 56 7.649 20.304 44.884 1.00 16.80
    ATOM 377 CB GLU 56 6.547 17.262 45.165 1.00 18.24
    ATOM 380 N PRO 57 8.104 19.083 43.092 1.00 18.38
    ATOM 381 CA PRO 57 9.346 19.808 42.740 1.00 22.08
    ATOM 382 C PRO 57 9.038 21.253 42.314 1.00 15.11
    ATOM 383 O PRO 57 9.755 22.161 42.741 1.00 13.96
    ATOM 384 CB PRO 57 10.250 19.045 41.722 1.00 17.45
    ATOM 388 N VAL 58 7.956 21.400 41.494 1.00 11.06
    ATOM 389 CA VAL 58 7.519 22.699 41.018 1.00 13.38
    ATOM 390 C VAL 58 7.181 23.549 42.199 1.00 9.71
    ATOM 391 O VAL 58 7.533 24.727 42.288 1.00 10.85
    ATOM 392 CB VAL 58 6.352 22.566 40.048 1.00 11.30
    ATOM 396 N LYS 59 6.441 22.981 43.149 1.00 9.83
    ATOM 397 CA LYS 59 6.078 23.720 44.318 1.00 8.40
    ATOM 398 C LYS 59 7.256 24.001 45.211 1.00 11.24
    ATOM 399 O LYS 59 7.387 25.072 45.765 1.00 15.98
    ATOM 400 CB LYS 59 4.978 23.016 45.047 1.00 15.35
    ATOM 405 N ALA 60 8.184 23.064 45.360 1.00 18.30
    ATOM 406 CA ALA 60 9.384 23.302 46.166 1.00 15.20
    ATOM 407 C ALA 60 10.212 24.463 45.608 1.00 15.37
    ATOM 408 O ALA 60 10.594 25.374 46.332 1.00 14.78
    ATOM 409 CB ALA 60 10.213 22.023 46.147 1.00 14.50
    ATOM 414 N ILE 61 10.451 24.465 44.292 1.00 13.94
    ATOM 415 CA ILE 61 11.203 25.547 43.674 1.00 11.58
    ATOM 416 C ILE 61 10.510 26.903 43.792 1.00 14.31
    ATOM 417 O ILE 61 11.114 27.927 44.053 1.00 14.43
    ATOM 418 CB ILE 61 11.498 25.222 42.243 1.00 12.19
    ATOM 421 N CYS 62 9.195 26.960 43.588 1.00 14.82
    ATOM 422 CA CYS 62 8.424 28.182 43.699 1.00 13.27
    ATOM 423 C CYS 62 8.533 28.747 45.098 1.00 16.70
    ATOM 424 O CYS 62 8.804 29.926 45.279 1.00 14.11
    ATOM 425 N GLU 63 8.362 27.872 46.087 1.00 13.88
    ATOM 426 CA GLU 63 8.493 28.266 47.485 1.00 17.95
    ATOM 427 C GLU 63 9.932 28.779 47.772 1.00 20.19
    ATOM 428 O GLU 63 10.113 29.771 48.412 1.00 21.99
    ATOM 429 CB GLU 63 7.953 27.171 48.446 1.00 12.98
    ATOM 434 N LYS 64 10.983 28.155 47.273 1.00 14.51
    ATOM 435 CA LYS 64 12.354 28.545 47.470 1.00 15.57
    ATOM 436 C LYS 64 12.653 29.917 46.910 1.00 21.51
    ATOM 437 O LYS 64 13.301 30.719 47.537 1.00 23.57
    ATOM 438 CB LYS 64 13.243 27.532 46.763 1.00 16.54
    ATOM 443 N LEU 65 12.172 30.188 45.725 1.00 14.15
    ATOM 444 CA LEU 65 12.455 31.400 45.023 1.00 15.52
    ATOM 445 C LEU 65 11.390 32.472 45.120 1.00 21.64
    ATOM 446 O LEU 65 11.507 33.542 44.531 1.00 20.21
    ATOM 447 CB LEU 65 12.728 31.035 43.532 1.00 10.42
    ATOM 451 N CYS 66 10.364 32.175 45.858 1.00 15.78
    ATOM 452 CA CYS 66 9.287 33.118 46.044 1.00 16.70
    ATOM 453 C CYS 66 8.582 33.589 44.773 1.00 19.81
    ATOM 454 O CYS 66 8.328 34.791 44.527 1.00 19.59
    ATOM 455 CB CYS 66 9.723 34.272 46.964 1.00 20.96
    ATOM 457 N VAL 67 8.233 32.578 43.989 1.00 11.39
    ATOM 458 CA VAL 67 7.471 32.732 42.747 1.00 13.20
    ATOM 459 C VAL 67 6.328 31.693 42.703 1.00 16.48
    ATOM 460 O VAL 67 6.424 30.576 43.202 1.00 11.05
    ATOM 461 CB VAL 67 8.361 32.832 41.496 1.00 23.12
    ATOM 464 N GLU 68 5.190 32.033 42.131 1.00 13.76
    ATOM 465 CA GLU 68 4.104 31.086 42.114 1.00 10.42
    ATOM 466 C GLU 68 4.413 29.825 41.297 1.00 11.44
    ATOM 467 O GLU 68 4.793 29.916 40.117 1.00 10.73
    ATOM 468 CB GLU 68 2.852 31.795 41.541 1.00 17.22
    ATOM 473 N PRO 69 4.168 28.661 41.924 1.00 15.15
    ATOM 474 CA PRO 69 4.356 27.367 41.245 1.00 13.42
    ATOM 475 C PRO 69 3.520 27.280 39.971 1.00 13.95
    ATOM 476 O PRO 69 3.940 26.759 38.953 1.00 10.03
    ATOM 477 CB PRO 69 3.921 26.338 42.269 1.00 9.23
    ATOM 480 N ALA 70 2.305 27.856 39.992 1.00 9.89
    ATOM 481 CA ALA 70 1.431 27.861 38.836 1.00 5.91
    ATOM 482 C ALA 70 2.082 28.572 37.667 1.00 7.93
    ATOM 483 O ALA 70 1.834 28.174 36.534 1.00 8.41
    ATOM 484 CB ALA 70 0.236 28.667 39.229 1.00 15.77
    ATOM 485 N VAL 71 2.899 29.631 37.913 1.00 12.13
    ATOM 486 CA VAL 71 3.620 30.334 36.816 1.00 10.38
    ATOM 487 C VAL 71 4.664 29.369 36.168 1.00 6.25
    ATOM 488 O VAL 71 4.814 29.238 34.942 1.00 7.15
    ATOM 489 CB VAL 71 4.271 31.648 37.291 1.00 10.96
    ATOM 492 N ILE 72 5.391 28.675 37.031 1.00 9.27
    ATOM 493 CA ILE 72 6.408 27.664 36.575 1.00 10.92
    ATOM 494 C ILE 72 5.700 26.577 35.702 1.00 6.45
    ATOM 495 O ILE 72 6.069 26.242 34.564 1.00 7.07
    ATOM 496 CB ILE 72 7.201 27.066 37.767 1.00 8.69
    ATOM 500 N ALA 73 4.553 26.052 36.233 1.00 8.97
    ATOM 501 CA ALA 73 3.699 25.071 35.542 1.00 10.47
    ATOM 502 C ALA 73 3.224 25.617 34.211 1.00 6.76
    ATOM 503 O ALA 73 3.293 24.924 33.179 1.00 7.09
    ATOM 504 CB ALA 73 2.561 24.528 36.406 1.00 9.86
    ATOM 505 N GLY 74 2.786 26.898 34.166 1.00 5.11
    ATOM 506 CA GLY 74 2.342 27.485 32.941 1.00 2.95
    ATOM 507 C GLY 74 3.425 27.550 31.881 1.00 3.98
    ATOM 508 O GLY 74 3.147 27.263 30.717 1.00 5.47
    ATOM 509 N ILE 75 4.648 27.929 32.310 1.00 5.93
    ATOM 510 CA ILE 75 5.798 27.952 31.393 1.00 5.11
    ATOM 511 C ILE 75 6.097 26.518 30.883 1.00 3.08
    ATOM 512 O ILE 75 6.286 26.307 29.668 1.00 5.66
    ATOM 513 CB ILE 75 7.022 28.608 32.062 1.00 7.97
    ATOM 517 N ILE 76 6.092 25.588 31.822 1.00 6.45
    ATOM 518 CA ILE 76 6.317 24.147 31.502 1.00 5.22
    ATOM 519 C ILE 76 5.371 23.594 30.441 1.00 5.32
    ATOM 520 O ILE 76 5.735 22.961 29.432 1.00 6.53
    ATOM 521 CB ILE 76 6.484 23.254 32.727 1.00 6.81
    ATOM 525 N SER 77 4.076 23.884 30.639 1.00 4.43
    ATOM 526 CA SER 77 3.091 23.480 29.674 1.00 2.55
    ATOM 527 C SER 77 3.367 24.048 28.285 1.00 5.28
    ATOM 528 O SER 77 3.354 23.400 27.227 1.00 5.10
    ATOM 529 CB SER 77 1.670 23.832 30.183 1.00 4.46
    ATOM 531 N ARG 78 3.626 25.386 28.275 1.00 4.16
    ATOM 532 CA ARG 78 3.874 26.029 27.033 1.00 6.88
    ATOM 533 C ARG 78 5.156 25.590 26.339 1.00 4.03
    ATOM 534 O ARG 78 5.156 25.406 25.122 1.00 7.82
    ATOM 535 CB ARG 78 3.882 27.553 27.265 1.00 4.15
    ATOM 542 N GLU 79 6.210 25.500 27.159 1.00 5.53
    ATOM 543 CA GLU 79 7.510 25.182 26.554 1.00 8.48
    ATOM 544 C GLU 79 7.715 23.753 26.067 1.00 10.23
    ATOM 545 O GLU 79 8.332 23.494 25.003 1.00 10.53
    ATOM 546 CB GLU 79 8.607 25.476 27.587 1.00 5.13
    ATOM 551 N SER 80 7.235 22.796 26.899 1.00 5.94
    ATOM 552 CA SER 80 7.465 21.346 26.576 1.00 8.51
    ATOM 553 C SER 80 6.305 20.353 26.751 1.00 6.63
    ATOM 554 O SER 80 6.493 19.131 26.694 1.00 9.17
    ATOM 555 CB SER 80 8.587 20.838 27.454 1.00 5.29
    ATOM 557 N LYS 81 5.141 20.937 27.077 1.00 10.99
    ATOM 558 CA LYS 81 3.960 20.140 27.381 1.00 12.90
    ATOM 559 C LYS 81 4.307 19.165 28.492 1.00 15.83
    ATOM 560 O LYS 81 4.043 17.981 28.438 1.00 15.89
    ATOM 561 CB LYS 81 3.435 19.425 26.152 1.00 9.44
    ATOM 567 N GLY 82 4.983 19.654 29.516 1.00 8.40
    ATOM 568 CA GLY 82 5.366 18.810 30.629 1.00 8.51
    ATOM 569 C GLY 82 6.264 17.619 30.237 1.00 10.11
    ATOM 570 O GLY 82 6.205 16.557 30.821 1.00 12.95
    ATOM 572 N ILE 83 7.132 17.855 29.268 1.00 11.37
    ATOM 573 CA ILE 83 8.078 16.873 28.787 1.00 12.90
    ATOM 574 C ILE 83 7.609 16.001 27.634 1.00 19.08
    ATOM 575 O ILE 83 8.373 15.307 26.972 1.00 17.35
    ATOM 576 N ILE 84 6.312 15.986 27.338 1.00 14.53
    ATOM 577 CA ILE 84 5.767 15.135 26.301 1.00 11.26
    ATOM 578 C ILE 84 6.409 15.330 24.937 1.00 15.30
    ATOM 579 O ILE 84 6.420 14.410 24.146 1.00 18.07
    ATOM 580 CB ILE 84 4.242 15.399 26.208 1.00 15.42
    ATOM 585 N ALA 85 6.858 16.534 24.559 1.00 10.73
    ATOM 586 CA ALA 85 7.383 16.719 23.221 1.00 9.52
    ATOM 587 C ALA 85 8.900 16.768 23.177 1.00 9.45
    ATOM 588 O ALA 85 9.473 17.240 22.194 1.00 19.09
    ATOM 589 CB ALA 85 6.870 17.944 22.469 1.00 20.49
    ATOM 592 N SER 86 9.510 16.275 24.220 1.00 11.07
    ATOM 593 CA SER 86 10.963 16.300 24.311 1.00 7.07
    ATOM 594 C SER 86 11.553 14.941 24.036 1.00 17.65
    ATOM 595 O SER 86 10.877 13.941 24.207 1.00 12.68
    ATOM 596 CB SER 86 11.453 16.711 25.695 1.00 8.36
    ATOM 600 N LYS 87 12.838 14.948 23.670 1.00 10.41
    ATOM 601 CA LYS 87 13.622 13.748 23.388 1.00 11.87
    ATOM 602 C LYS 87 14.845 13.792 24.254 1.00 6.23
    ATOM 603 O LYS 87 15.767 14.571 24.010 1.00 13.01
    ATOM 604 CB LYS 87 13.989 13.573 21.928 1.00 8.65
    ATOM 609 N ASN 88 14.767 13.020 25.298 1.00 9.30
    ATOM 610 CA ASN 88 15.837 12.986 26.251 1.00 16.62
    ATOM 611 C ASN 88 16.071 14.411 26.804 1.00 20.20
    ATOM 612 O ASN 88 17.199 14.857 27.048 1.00 16.05
    ATOM 613 CB ASN 88 17.156 12.396 25.666 1.00 29.09
    ATOM 617 N VAL 89 14.996 15.160 26.973 1.00 14.75
    ATOM 618 CA VAL 89 15.068 16.516 27.483 1.00 12.81
    ATOM 619 C VAL 89 15.256 17.603 26.457 1.00 9.97
    ATOM 620 O VAL 89 15.178 18.765 26.754 1.00 13.01
    ATOM 621 N LEU 90 15.514 17.315 25.205 1.00 9.47
    ATOM 622 CA LEU 90 15.754 18.308 24.180 1.00 10.34
    ATOM 623 C LEU 90 14.559 18.617 23.318 1.00 10.50
    ATOM 624 O LEU 90 13.800 17.733 22.981 1.00 11.67
    ATOM 625 CB LEU 90 16.825 17.844 23.176 1.00 10.11
    ATOM 635 N THR 91 14.404 19.861 22.946 1.00 8.46
    ATOM 636 CA THR 91 13.368 20.293 22.082 1.00 8.15
    ATOM 637 C THR 91 13.704 19.924 20.692 1.00 10.67
    ATOM 638 O THR 91 14.782 19.423 20.464 1.00 11.60
    ATOM 639 N THR 92 12.752 20.130 19.813 1.00 8.12
    ATOM 640 CA THR 92 12.882 19.687 18.436 1.00 11.17
    ATOM 641 C THR 92 13.996 20.229 17.572 1.00 10.62
    ATOM 642 O THR 92 14.249 19.666 16.517 1.00 15.13
    ATOM 643 CB THR 92 11.661 19.891 17.563 1.00 25.12
    ATOM 647 N SER 93 14.571 21.367 17.951 1.00 18.06
    ATOM 648 CA SER 93 15.680 21.978 17.216 1.00 15.88
    ATOM 649 C SER 93 16.994 21.693 17.931 1.00 19.20
    ATOM 650 O SER 93 18.065 22.080 17.516 1.00 19.00
    ATOM 651 CB SER 93 15.477 23.439 16.835 1.00 18.85
    ATOM 658 N GLU 94 16.921 20.999 19.060 1.00 11.20
    ATOM 659 CA GLU 94 18.107 20.667 19.784 1.00 14.57
    ATOM 660 C GLU 94 18.687 21.799 20.573 1.00 18.50
    ATOM 661 O GLU 94 19.744 21.575 21.125 1.00 18.18
    ATOM 662 N PHE 95 18.043 22.962 20.694 1.00 13.75
    ATOM 663 CA PHE 95 18.611 24.062 21.483 1.00 6.08
    ATOM 664 C PHE 95 18.073 24.171 22.895 1.00 11.43
    ATOM 665 O PHE 95 18.735 24.482 23.855 1.00 12.66
    ATOM 666 CB PHE 95 18.352 25.377 20.765 1.00 9.59
    ATOM 670 N TYR 96 16.784 23.902 23.095 1.00 10.06
    ATOM 671 CA TYR 96 16.180 23.965 24.421 1.00 7.84
    ATOM 672 C TYR 96 16.282 22.674 25.185 1.00 5.71
    ATOM 673 O TYR 96 16.063 21.581 24.659 1.00 9.10
    ATOM 674 N LEU 97 16.606 22.788 26.435 1.00 7.42
    ATOM 675 CA LEU 97 16.760 21.648 27.301 1.00 7.70
    ATOM 676 C LEU 97 15.868 21.682 28.552 1.00 9.74
    ATOM 677 O LEU 97 15.803 22.716 29.219 1.00 9.97
    ATOM 678 CB LEU 97 18.221 21.679 27.878 1.00 7.26
    ATOM 685 N SER 98 15.223 20.574 28.926 1.00 9.00
    ATOM 686 CA SER 98 14.452 20.532 30.136 1.00 10.45
    ATOM 687 C SER 98 13.001 20.916 29.962 1.00 4.47
    ATOM 688 O SER 98 12.609 21.416 28.925 1.00 7.46
    ATOM 689 N ASP 99 12.288 20.650 31.043 1.00 6.55
    ATOM 690 CA ASP 99 10.867 20.999 31.096 1.00 7.00
    ATOM 691 C ASP 99 10.587 22.480 30.757 1.00 9.86
    ATOM 692 O ASP 99 9.576 22.814 30.130 1.00 9.19
    ATOM 693 CB ASP 99 10.401 20.767 32.543 1.00 9.32
    ATOM 697 N CYS 100 11.534 23.357 31.134 1.00 5.24
    ATOM 698 CA CYS 100 11.432 24.787 30.941 1.00 7.14
    ATOM 699 C CYS 100 12.151 25.298 29.736 1.00 8.64
    ATOM 700 O CYS 100 12.091 26.479 29.402 1.00 9.00
    ATOM 701 CB CYS 100 11.841 25.537 32.193 1.00 10.25
    ATOM 705 N ASN 101 12.799 24.401 29.046 1.00 6.18
    ATOM 706 CA ASN 101 13.493 24.736 27.811 1.00 6.95
    ATOM 707 C ASN 101 14.552 25.838 27.883 1.00 10.28
    ATOM 708 O ASN 101 14.468 26.794 27.145 1.00 11.40
    ATOM 709 CB ASN 101 12.564 24.900 26.588 1.00 8.65
    ATOM 714 N VAL 102 15.506 25.683 28.773 1.00 9.88
    ATOM 715 CA VAL 102 16.618 26.606 28.812 1.00 9.35
    ATOM 716 C VAL 102 17.409 26.455 27.477 1.00 7.71
    ATOM 717 O VAL 102 17.830 25.369 27.073 1.00 10.09
    ATOM 718 CB VAL 102 17.515 26.242 29.985 1.00 8.26
    ATOM 721 N THR 103 17.674 27.586 26.807 1.00 8.83
    ATOM 722 CA THR 103 18.398 27.605 25.545 1.00 15.08
    ATOM 723 C THR 103 19.922 27.542 25.767 1.00 11.32
    ATOM 724 O THR 103 20.518 28.447 26.338 1.00 11.22
    ATOM 725 CB THR 103 18.013 28.792 24.694 1.00 10.22
    ATOM 729 N SER 104 20.465 26.421 25.298 1.00 15.48
    ATOM 730 CA SER 104 21.867 26.056 25.411 1.00 12.79
    ATOM 731 C SER 104 22.738 27.106 24.777 1.00 19.02
    ATOM 732 O SER 104 23.881 27.220 25.237 1.00 13.26
    ATOM 733 CB SER 104 22.190 24.702 24.816 1.00 8.55
    ATOM 738 N ARG 105 22.205 27.816 23.759 1.00 13.55
    ATOM 739 CA ARG 105 22.963 28.899 23.090 1.00 17.05
    ATOM 740 C ARG 105 23.158 30.096 23.983 1.00 21.62
    ATOM 741 O ARG 105 24.084 30.850 23.764 1.00 19.07
    ATOM 742 CB ARG 105 22.326 29.423 21.819 1.00 14.31
    ATOM 749 N PRO 106 22.295 30.296 24.992 1.00 11.47
    ATOM 750 CA PRO 106 22.406 31.448 25.884 1.00 18.07
    ATOM 751 C PRO 106 22.871 31.141 27.273 1.00 13.75
    ATOM 752 O PRO 106 23.330 31.995 27.964 1.00 15.57
    ATOM 753 CB PRO 106 21.047 32.130 26.107 1.00 16.91
    ATOM 755 N CYS 107 22.569 29.956 27.754 1.00 15.59
    ATOM 756 CA CYS 107 22.911 29.516 29.066 1.00 13.10
    ATOM 757 C CYS 107 23.302 28.052 29.031 1.00 11.80
    ATOM 758 O CYS 107 22.569 27.241 28.459 1.00 15.78
    ATOM 759 CB CYS 107 21.705 29.540 30.017 1.00 14.52
    ATOM 765 N LYS 108 24.412 27.682 29.705 1.00 10.46
    ATOM 766 CA LYS 108 24.760 26.272 29.762 1.00 12.97
    ATOM 767 C LYS 108 23.713 25.600 30.691 1.00 7.76
    ATOM 768 O LYS 108 23.537 26.032 31.844 1.00 12.14
    ATOM 769 CB LYS 108 26.165 26.100 30.377 1.00 16.17
    ATOM 774 N PRO 109 23.111 24.507 30.197 1.00 10.32
    ATOM 775 CA PRO 109 22.098 23.833 30.980 1.00 15.82
    ATOM 776 C PRO 109 22.648 23.025 32.135 1.00 17.43
    ATOM 777 O PRO 109 23.612 22.330 32.001 1.00 17.82
    ATOM 778 CB PRO 109 21.219 23.006 30.013 1.00 11.47
    ATOM 781 N GLN 110 22.063 23.176 33.278 1.00 8.72
    ATOM 782 CA GLN 110 22.401 22.488 34.465 1.00 9.24
    ATOM 783 C GLN 110 21.327 21.456 34.840 1.00 20.32
    ATOM 784 O GLN 110 20.115 21.675 34.630 1.00 14.69
    ATOM 785 CB GLN 110 22.416 23.478 35.617 1.00 15.79
    ATOM 790 N GLY 111 21.764 20.339 35.453 1.00 17.61
    ATOM 791 CA GLY 111 20.904 19.247 35.940 1.00 11.62
    ATOM 792 C GLY 111 20.374 18.303 34.842 1.00 15.53
    ATOM 793 O GLY 111 20.696 18.382 33.644 1.00 17.81
    ATOM 794 N THR 112 19.543 17.346 35.295 1.00 11.83
    ATOM 795 CA THR 112 18.790 16.360 34.520 1.00 16.99
    ATOM 796 C THR 112 17.616 17.203 34.008 1.00 16.97
    ATOM 797 O THR 112 17.316 18.278 34.584 1.00 15.51
    ATOM 798 CB THR 112 18.272 15.245 35.463 1.00 24.35
    ATOM 801 N TRP 113 17.003 16.715 32.945 1.00 14.41
    ATOM 802 CA TRP 113 16.024 17.491 32.258 1.00 12.72
    ATOM 803 C TRP 113 14.742 17.715 32.994 1.00 15.07
    ATOM 804 O TRP 113 13.979 18.611 32.641 1.00 11.07
    ATOM 805 CB TRP 113 15.822 16.929 30.834 1.00 12.69
    ATOM 815 N ASN 114 14.491 16.877 33.959 1.00 11.72
    ATOM 816 CA ASN 114 13.233 16.971 34.660 1.00 14.38
    ATOM 817 C ASN 114 13.328 17.042 36.151 1.00 19.49
    ATOM 818 O ASN 114 12.375 16.651 36.845 1.00 17.03
    ATOM 819 CB ASN 114 12.298 15.871 34.208 1.00 11.23
    ATOM 823 N GLY 115 14.457 17.622 36.618 1.00 14.31
    ATOM 824 CA GLY 115 14.713 17.733 38.065 1.00 12.04
    ATOM 825 C GLY 115 14.716 19.118 38.653 1.00 15.49
    ATOM 826 O GLY 115 14.544 20.084 37.908 1.00 15.90
    ATOM 827 N GLU 116 14.905 19.174 39.962 1.00 9.74
    ATOM 828 CA GLU 116 14.931 20.413 40.729 1.00 12.03
    ATOM 829 C GLU 116 16.027 21.398 40.281 1.00 13.98
    ATOM 830 O GLU 116 15.861 22.613 40.316 1.00 13.31
    ATOM 831 CB GLU 116 14.991 20.118 42.237 1.00 10.55
    ATOM 836 N VAL 117 17.177 20.895 39.843 1.00 13.49
    ATOM 837 CA VAL 117 18.261 21.775 39.393 1.00 15.74
    ATOM 838 C VAL 117 17.871 22.554 38.154 1.00 12.67
    ATOM 839 O VAL 117 18.068 23.765 38.003 1.00 10.80
    ATOM 840 CB VAL 117 19.667 21.144 39.289 1.00 18.26
    ATOM 843 N HIS 118 17.297 21.835 37.257 1.00 12.19
    ATOM 844 CA HIS 118 16.788 22.411 36.031 1.00 14.16
    ATOM 845 C HIS 118 15.667 23.454 36.272 1.00 7.46
    ATOM 846 O HIS 118 15.707 24.555 35.767 1.00 8.27
    ATOM 847 CB HIS 118 16.331 21.310 35.045 1.00 11.27
    ATOM 853 N ILE 119 14.639 23.086 37.001 1.00 9.63
    ATOM 854 CA ILE 119 13.541 24.001 37.272 1.00 11.75
    ATOM 855 C ILE 119 14.097 25.191 37.990 1.00 13.54
    ATOM 856 O ILE 119 13.669 26.311 37.761 1.00 11.30
    ATOM 857 CB ILE 119 12.475 23.274 38.055 1.00 8.22
    ATOM 861 N THR 120 15.069 24.988 38.891 1.00 10.97
    ATOM 862 CA THR 120 15.711 26.119 39.584 1.00 15.25
    ATOM 863 C THR 120 16.357 27.078 38.589 1.00 9.81
    ATOM 864 O THR 120 16.200 28.299 38.649 1.00 10.67
    ATOM 865 CB THR 120 16.705 25.650 40.671 1.00 18.45
    ATOM 868 N GLN 121 17.134 26.536 37.674 1.00 9.28
    ATOM 869 CA GLN 121 17.798 27.340 36.682 1.00 9.22
    ATOM 870 C GLN 121 16.793 28.099 35.834 1.00 13.79
    ATOM 871 O GLN 121 16.901 29.327 35.639 1.00 9.28
    ATOM 872 CB GLN 121 18.736 26.477 35.824 1.00 9.70
    ATOM 877 N GLY 122 15.803 27.402 35.302 1.00 7.73
    ATOM 878 CA GLY 122 14.810 28.067 34.482 1.00 5.23
    ATOM 879 C GLY 122 14.075 29.173 35.233 1.00 8.59
    ATOM 880 O GLY 122 13.815 30.258 34.721 1.00 10.23
    ATOM 881 N THR 123 13.721 28.879 36.472 1.00 9.25
    ATOM 882 CA THR 123 12.976 29.831 37.304 1.00 10.55
    ATOM 883 C THR 123 13.858 31.038 37.617 1.00 16.61
    ATOM 884 O THR 123 13.392 32.169 37.642 1.00 10.88
    ATOM 885 CB THR 123 12.374 29.132 38.544 1.00 10.02
    ATOM 888 N THR 124 15.157 30.802 37.818 1.00 9.65
    ATOM 889 CA THR 124 16.067 31.883 38.088 1.00 9.15
    ATOM 890 C THR 124 16.163 32.805 36.898 1.00 9.35
    ATOM 891 O THR 124 16.209 34.053 36.998 1.00 12.26
    ATOM 892 CB THR 124 17.425 31.326 38.630 1.00 12.73
    ATOM 895 N ILE 125 16.184 32.223 35.707 1.00 7.62
    ATOM 896 CA ILE 125 16.253 33.038 34.530 1.00 7.24
    ATOM 897 C ILE 125 15.011 33.926 34.449 1.00 14.07
    ATOM 898 O ILE 125 15.055 35.095 34.135 1.00 12.59
    ATOM 899 CB ILE 125 16.504 32.188 33.290 1.00 10.38
    ATOM 903 N LEU 126 13.875 33.333 34.719 1.00 10.44
    ATOM 904 CA LEU 126 12.631 34.046 34.728 1.00 9.33
    ATOM 905 C LEU 126 12.693 35.188 35.721 1.00 6.72
    ATOM 906 O LEU 126 12.341 36.339 35.432 1.00 11.13
    ATOM 907 CB LEU 126 11.392 33.151 35.037 1.00 10.72
    ATOM 911 N ILE 127 13.063 34.926 36.957 1.00 9.53
    ATOM 912 CA ILE 127 13.148 35.984 37.955 1.00 11.23
    ATOM 913 C ILE 127 14.046 37.134 37.497 1.00 12.83
    ATOM 914 O ILE 127 13.774 38.314 37.697 1.00 11.96
    ATOM 915 CB ILE 127 13.550 35.396 39.316 1.00 14.26
    ATOM 919 N ASN 128 15.156 36.801 36.836 1.00 14.69
    ATOM 920 CA ASN 128 16.038 37.847 36.344 1.00 15.46
    ATOM 921 C ASN 128 15.353 38.751 35.326 1.00 11.68
    ATOM 922 O ASN 128 15.600 39.956 35.260 1.00 14.39
    ATOM 923 CB ASN 128 17.366 37.300 35.789 1.00 14.60
    ATOM 927 N PHE 129 14.475 38.207 34.508 1.00 10.96
    ATOM 928 CA PHE 129 13.700 38.945 33.523 1.00 9.44
    ATOM 929 C PHE 129 12.667 39.809 34.241 1.00 9.05
    ATOM 930 O PHE 129 12.447 40.917 33.841 1.00 12.67
    ATOM 931 CB PHE 129 13.030 37.961 32.571 1.00 7.95
    ATOM 938 N ILE 130 12.050 39.261 35.279 1.00 10.43
    ATOM 939 CA ILE 130 11.094 39.991 36.104 1.00 11.89
    ATOM 940 C ILE 130 11.779 41.234 36.687 1.00 15.58
    ATOM 941 O ILE 130 11.263 42.367 36.555 1.00 11.63
    ATOM 942 CB ILE 130 10.366 39.183 37.189 1.00 12.13
    ATOM 946 N LYS 131 12.958 41.016 37.321 1.00 12.28
    ATOM 947 CA LYS 131 13.702 42.131 37.878 1.00 11.00
    ATOM 948 C LYS 131 14.061 43.185 36.892 1.00 10.71
    ATOM 949 O LYS 131 14.092 44.330 37.238 1.00 16.34
    ATOM 950 CB LYS 131 14.932 41.649 38.598 1.00 18.62
    ATOM 955 N THR 132 14.413 42.792 35.699 1.00 12.03
    ATOM 956 CA THR 132 14.757 43.722 34.692 1.00 11.61
    ATOM 957 C THR 132 13.580 44.532 34.317 1.00 20.17
    ATOM 958 O THR 132 13.732 45.702 34.143 1.00 12.68
    ATOM 959 CB THR 132 15.232 42.950 33.469 1.00 20.15
    ATOM 962 N ILE 133 12.419 43.913 34.169 1.00 10.38
    ATOM 963 CA ILE 133 11.202 44.641 33.830 1.00 10.00
    ATOM 964 C ILE 133 10.802 45.606 34.985 1.00 8.96
    ATOM 965 O ILE 133 10.309 46.731 34.737 1.00 15.86
    ATOM 966 CB ILE 133 10.050 43.660 33.500 1.00 11.30
    ATOM 970 N GLN 134 10.992 45.169 36.247 1.00 11.06
    ATOM 971 CA GLN 134 10.649 46.016 37.405 1.00 15.50
    ATOM 972 C GLN 134 11.437 47.326 37.365 1.00 22.02
    ATOM 973 O GLN 134 10.947 48.407 37.661 1.00 16.48
    ATOM 974 CB GLN 134 10.905 45.270 38.744 1.00 13.08
    ATOM 979 N LYS 135 12.694 47.215 36.922 1.00 19.07
    ATOM 980 CA LYS 135 13.561 48.374 36.791 1.00 20.66
    ATOM 981 C LYS 135 13.209 49.262 35.607 1.00 12.29
    ATOM 982 O LYS 135 13.290 50.512 35.623 1.00 16.95
    ATOM 983 CB LYS 135 15.051 48.047 36.891 1.00 18.14
    ATOM 988 N LYS 136 12.847 48.601 34.500 1.00 11.25
    ATOM 989 CA LYS 136 12.515 49.212 33.257 1.00 13.33
    ATOM 990 C LYS 136 11.184 49.983 33.305 1.00 28.95
    ATOM 991 O LYS 136 11.041 51.023 32.690 1.00 15.31
    ATOM 992 CB LYS 136 12.581 48.174 32.179 1.00 8.92
    ATOM 997 N TYR 137 10.208 49.495 34.068 1.00 14.03
    ATOM 998 CA TYR 137 8.905 50.158 34.183 1.00 14.14
    ATOM 999 C TYR 137 8.418 50.191 35.635 1.00 14.47
    ATOM 1000 O TYR 137 7.549 49.461 36.112 1.00 14.11
    ATOM 1001 CB TYR 137 7.911 49.299 33.441 1.00 13.96
    ATOM 1008 N LYS 138 9.050 51.046 36.400 1.00 16.20
    ATOM 1009 CA LYS 138 8.757 51.127 37.805 1.00 19.22
    ATOM 1010 C LYS 138 7.409 51.779 38.146 1.00 19.88
    ATOM 1011 O LYS 138 6.980 51.800 39.295 1.00 27.69
    ATOM 1012 CB LYS 138 9.974 51.806 38.416 1.00 39.49
    ATOM 1015 N LEU 139 6.709 52.284 37.145 1.00 24.48
    ATOM 1016 CA LEU 139 5.391 52.859 37.381 1.00 26.04
    ATOM 1017 C LEU 139 4.298 51.807 37.126 1.00 19.37
    ATOM 1018 O LEU 139 3.122 52.083 37.234 1.00 22.09
    ATOM 1019 CB LEU 139 5.158 54.067 36.493 1.00 24.68
    ATOM 1021 N LYS 140 4.669 50.565 36.744 1.00 15.58
    ATOM 1022 CA LYS 140 3.706 49.478 36.574 1.00 10.79
    ATOM 1023 C LYS 140 3.447 48.855 37.956 1.00 11.68
    ATOM 1024 O LYS 140 4.213 48.937 38.929 1.00 11.15
    ATOM 1025 CB LYS 140 4.233 48.296 35.678 1.00 9.33
    ATOM 1035 N LYS 141 2.340 48.121 38.045 1.00 15.23
    ATOM 1036 CA LYS 141 1.995 47.390 39.237 1.00 12.07
    ATOM 1037 C LYS 141 2.828 46.114 39.206 1.00 14.46
    ATOM 1038 O LYS 141 3.448 45.735 38.210 1.00 11.90
    ATOM 1039 CB LYS 141 0.499 47.058 39.334 1.00 14.55
    ATOM 1042 N SER 142 2.963 45.495 40.350 1.00 12.22
    ATOM 1043 CA SER 142 3.768 44.303 40.491 1.00 10.67
    ATOM 1044 C SER 142 3.319 43.220 39.549 1.00 16.73
    ATOM 1045 O SER 142 4.095 42.533 38.938 1.00 10.92
    ATOM 1046 CB SER 142 3.823 43.834 41.941 1.00 11.43
    ATOM 1051 N THR 143 2.003 43.049 39.421 1.00 14.76
    ATOM 1052 CA THR 143 1.433 42.029 38.563 1.00 14.90
    ATOM 1053 C THR 143 1.678 42.302 37.090 1.00 10.06
    ATOM 1054 O THR 143 1.847 41.382 36.317 1.00 10.07
    ATOM 1055 CB THR 143 -0.093 41.833 38.822 1.00 17.12
    ATOM 1059 N ASN 144 1.675 43.567 36.718 1.00 6.65
    ATOM 1060 CA ASN 144 1.946 43.939 35.355 1.00 5.38
    ATOM 1061 C ASN 144 3.402 43.577 35.023 1.00 8.98
    ATOM 1062 O ASN 144 3.734 43.102 33.912 1.00 10.89
    ATOM 1063 CB ASN 144 1.812 45.473 35.178 1.00 7.32
    ATOM 1068 N LYS 145 4.239 43.816 36.028 1.00 8.35
    ATOM 1069 CA LYS 145 5.676 43.518 35.900 1.00 9.51
    ATOM 1070 C LYS 145 5.921 42.019 35.691 1.00 10.98
    ATOM 1071 O LYS 145 6.752 41.612 34.893 1.00 10.62
    ATOM 1072 CB LYS 145 6.558 44.072 37.036 1.00 10.14
    ATOM 1077 N PHE 146 5.186 41.215 36.427 1.00 10.04
    ATOM 1078 CA PHE 146 5.226 39.747 36.315 1.00 9.91
    ATOM 1079 C PHE 146 4.886 39.343 34.875 1.00 9.85
    ATOM 1080 O PHE 146 5.534 38.524 34.266 1.00 9.00
    ATOM 1081 CB PHE 146 4.243 39.128 37.327 1.00 11.43
    ATOM 1085 N CYS 147 3.838 39.919 34.335 1.00 7.24
    ATOM 1086 CA CYS 147 3.467 39.679 33.002 1.00 8.00
    ATOM 1087 C CYS 147 4.581 39.969 32.028 1.00 9.89
    ATOM 1088 O CYS 147 4.862 39.144 31.147 1.00 8.59
    ATOM 1089 CB CYS 147 2.092 40.266 32.662 1.00 9.92
    ATOM 1094 N VAL 148 5.153 41.168 32.151 1.00 8.38
    ATOM 1095 CA VAL 148 6.249 41.598 31.289 1.00 10.83
    ATOM 1096 C VAL 148 7.446 40.665 31.420 1.00 7.16
    ATOM 1097 O VAL 148 8.088 40.317 30.413 1.00 8.02
    ATOM 1098 N THR 149 7.732 40.213 32.652 1.00 8.64
    ATOM 1099 CA THR 149 8.856 39.275 32.882 1.00 11.03
    ATOM 1100 C THR 149 8.675 37.957 32.155 1.00 9.76
    ATOM 1101 O THR 149 9.580 37.441 31.526 1.00 9.26
    ATOM 1102 N CYS 150 7.457 37.441 32.155 1.00 6.83
    ATOM 1103 CA CYS 150 7.121 36.214 31.442 1.00 4.84
    ATOM 1104 C CYS 150 7.254 36.378 29.934 1.00 6.35
    ATOM 1105 O CYS 150 7.700 35.525 29.208 1.00 8.13
    ATOM 1106 CB CYS 150 5.685 35.712 31.795 1.00 7.12
    ATOM 1110 N SER 151 6.838 37.512 29.366 1.00 5.72
    ATOM 1111 CA SER 151 6.942 37.796 27.971 1.00 3.41
    ATOM 1112 C SER 151 8.418 37.853 27.570 1.00 5.98
    ATOM 1113 O SER 151 8.791 37.342 26.499 1.00 7.86
    ATOM 1114 CB SER 151 6.246 39.136 27.771 1.00 10.09
    ATOM 1116 N ALA 152 9.213 38.432 28.464 1.00 5.83
    ATOM 1117 CA ALA 152 10.645 38.567 28.187 1.00 7.53
    ATOM 1118 C ALA 152 11.389 37.230 28.174 1.00 16.39
    ATOM 1119 O ALA 152 12.419 37.019 27.505 1.00 10.71
    ATOM 1120 CB ALA 152 11.270 39.456 29.231 1.00 11.87
    ATOM 1121 N TYR 153 10.871 36.328 28.993 1.00 10.15
    ATOM 1122 CA TYR 153 11.382 34.960 29.078 1.00 9.05
    ATOM 1123 C TYR 153 11.458 34.400 27.656 1.00 14.00
    ATOM 1124 O TYR 153 12.333 33.647 27.293 1.00 13.53
    ATOM 1125 CB TYR 153 10.424 34.099 29.948 1.00 11.22
    ATOM 1133 N ASN 154 10.470 34.709 26.818 1.00 7.86
    ATOM 1134 CA ASN 154 10.408 34.238 25.450 1.00 6.11
    ATOM 1135 C ASN 154 11.192 35.097 24.505 1.00 13.55
    ATOM 1136 O ASN 154 11.879 34.594 23.646 1.00 14.62
    ATOM 1137 CB ASN 154 8.964 34.151 24.884 1.00 7.47
    ATOM 1141 N ALA 155 11.006 36.409 24.559 1.00 9.70
    ATOM 1142 CA ALA 155 11.617 37.253 23.577 1.00 10.16
    ATOM 1143 C ALA 155 12.676 38.247 24.020 1.00 6.98
    ATOM 1144 O ALA 155 13.144 39.009 23.207 1.00 11.43
    ATOM 1145 CB ALA 155 10.494 37.992 22.877 1.00 14.17
    ATOM 1146 N GLY 156 13.049 38.260 25.253 1.00 8.60
    ATOM 1147 CA GLY 156 14.022 39.192 25.729 1.00 18.63
    ATOM 1148 C GLY 156 13.361 40.481 26.238 1.00 13.39
    ATOM 1149 O GLY 156 12.237 40.867 25.860 1.00 13.99
    ATOM 1150 N GLU 157 14.092 41.135 27.137 1.00 14.63
    ATOM 1151 CA GLU 157 13.629 42.366 27.722 1.00 17.59
    ATOM 1152 C GLU 157 13.431 43.505 26.748 1.00 16.40
    ATOM 1153 O GLU 157 12.563 44.360 26.942 1.00 10.25
    ATOM 1154 CB GLU 157 14.270 42.740 29.056 1.00 21.85
    ATOM 1155 N ASN 158 14.253 43.481 25.722 1.00 11.56
    ATOM 1156 CA ASN 158 14.152 44.503 24.770 1.00 10.99
    ATOM 1157 C ASN 158 12.838 44.527 24.067 1.00 16.14
    ATOM 1158 O ASN 158 12.435 45.535 23.497 1.00 14.86
    ATOM 1159 N GLN 159 12.196 43.368 23.989 1.00 10.92
    ATOM 1160 CA GLN 159 10.943 43.258 23.241 1.00 8.61
    ATOM 1161 C GLN 159 9.768 43.866 24.020 1.00 8.23
    ATOM 1162 O GLN 159 8.689 44.048 23.437 1.00 11.66
    ATOM 1163 CB GLN 159 10.620 41.766 22.876 1.00 8.76
    ATOM 1167 N ALA 160 9.981 44.124 25.317 1.00 7.47
    ATOM 1168 CA ALA 160 8.901 44.672 26.156 1.00 9.41
    ATOM 1169 C ALA 160 9.037 46.198 26.177 1.00 9.50
    ATOM 1170 O ALA 160 9.830 46.798 26.859 1.00 11.94
    ATOM 1171 CB ALA 160 8.831 44.035 27.541 1.00 9.51
    ATOM 1174 N PRO 161 8.224 46.849 25.390 1.00 10.38
    ATOM 1175 CA PRO 161 8.311 48.315 25.264 1.00 11.33
    ATOM 1176 C PRO 161 7.096 49.031 25.824 1.00 14.72
    ATOM 1177 O PRO 161 7.105 50.213 25.966 1.00 13.10
    ATOM 1178 CB PRO 161 8.493 48.736 23.808 1.00 12.09
    ATOM 1185 N VAL 162 6.052 48.281 26.102 1.00 12.03
    ATOM 1186 CA VAL 162 4.770 48.721 26.628 1.00 13.36
    ATOM 1187 C VAL 162 4.013 47.553 27.269 1.00 15.78
    ATOM 1188 O VAL 162 4.293 46.381 27.038 1.00 12.62
    ATOM 1189 CB VAL 162 3.914 49.217 25.465 1.00 10.77
    ATOM 1191 N HIS 163 2.992 47.867 28.028 1.00 13.61
    ATOM 1192 CA HIS 163 2.179 46.835 28.610 1.00 10.90
    ATOM 1193 C HIS 163 1.250 46.163 27.603 1.00 10.19
    ATOM 1194 O HIS 163 1.130 44.958 27.509 1.00 12.04
    ATOM 1195 CB HIS 163 1.404 47.405 29.837 1.00 16.16
    ATOM 1203 N PHE 164 0.543 46.955 26.795 1.00 15.06
    ATOM 1204 CA PHE 164 -0.449 46.513 25.864 1.00 13.73
    ATOM 1205 C PHE 164 0.042 45.677 24.726 1.00 17.64
    ATOM 1206 O PHE 164 -0.720 44.815 24.326 1.00 14.17
    ATOM 1207 CB PHE 164 -1.227 47.673 25.262 1.00 15.58
    ATOM 1208 N VAL 165 1.248 45.946 24.185 1.00 9.18
    ATOM 1209 CA VAL 165 1.709 45.192 23.029 1.00 9.36
    ATOM 1210 C VAL 165 2.929 44.315 23.319 1.00 8.11
    ATOM 1211 O VAL 165 3.616 43.851 22.362 1.00 9.81
    ATOM 1212 CB VAL 165 2.081 46.222 21.924 1.00 11.32
    ATOM 1219 N GLY 166 3.199 44.031 24.605 1.00 7.69
    ATOM 1220 CA GLY 166 4.384 43.261 25.009 1.00 7.70
    ATOM 1221 C GLY 166 4.549 41.961 24.266 1.00 25.39
    ATOM 1222 O GLY 166 5.673 41.617 23.908 1.00 10.75
    ATOM 1227 N VAL 167 3.423 41.248 24.015 1.00 9.04
    ATOM 1228 CA VAL 167 3.504 39.932 23.388 1.00 3.70
    ATOM 1229 C VAL 167 3.701 39.963 21.913 1.00 5.33
    ATOM 1230 O VAL 167 4.007 38.937 21.358 1.00 9.98
    ATOM 1231 CB VAL 167 2.331 39.025 23.703 1.00 7.48
    ATOM 1235 N GLY 168 3.589 41.119 21.265 1.00 9.02
    ATOM 1236 CA GLY 168 3.869 41.155 19.821 1.00 8.52
    ATOM 1237 C GLY 168 5.367 40.965 19.625 1.00 8.03
    ATOM 1238 O GLY 168 6.197 41.598 20.284 1.00 13.58
    ATOM 1243 N SER 169 5.657 39.997 18.788 1.00 10.06
    ATOM 1244 CA SER 169 7.051 39.680 18.615 1.00 8.44
    ATOM 1245 C SER 169 7.478 38.427 19.369 1.00 13.39
    ATOM 1246 O SER 169 8.555 37.872 19.156 1.00 13.05
    ATOM 1247 N CYS 170 6.674 37.980 20.335 1.00 11.08
    ATOM 1248 CA CYS 170 6.967 36.755 21.000 1.00 5.15
    ATOM 1249 C CYS 170 6.443 35.647 20.029 1.00 10.65
    ATOM 1250 O CYS 170 5.687 35.840 19.052 1.00 9.31
    ATOM 1251 CB CYS 170 6.161 36.630 22.308 1.00 4.23
    TER
    END
    </pdbBackbone>
    <queryGaps>3-17 | 63-80 | 109-136 | 151-156 </queryGaps>
    <templateGaps>43+50</templateGaps>
    </threading>
    ----------XML ends---------------



    -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
    http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
    -----== Over 100,000 Newsgroups - 19 Different Servers! =-----
    Tina Li, Sep 24, 2003
    #10
  11. Tina Li

    Andrew Dalke Guest

    Me:
    > I get confused with the DOM API every time I try


    /F:
    > the DOM API is designed for consultants, not for humans or
    > computers.


    Here I thought I was making a living the last few years as
    a consultant. Now I find I was making a living being a human.
    I'm feeling much better now. :)

    Andrew
    Andrew Dalke, Sep 24, 2003
    #11
  12. Tina Li

    Andrew Dalke Guest

    Tina Li:
    > Yes, I've shortened the XML snippet considerably as
    > the data was obscurely long ...


    But since there wasn't a problem with the code you posted
    it's hard to figure out what's wrong. (And since it wasn't
    in XML it made it even harder for people to help.)

    If it's too long (and a threaded alignment which includes the
    full PDB structure is too long), put it on a web site somewhere
    and give a URL to it.

    > Andrew: Thanks for the XML code. I've written up something
    > similar using xml.parsers.expat, but it's conceivably slower
    > than regexp.


    Conceivable, yes. But 1) did you test it, and 2) would it make a
    difference?

    > And thanks for suggesting biopython.org. But I need to have it up
    > quick so maybe cobbling something
    > together myself is faster than reading through their documentation.


    Not only that, but I don't know of anything in biopython for
    handling that code. It's a generic XML parsing question, so a
    generic tool is the best, like Fredrick's ElementTree.

    Here's a question for you. When is it easier to read the
    documentation for existing code (which has been tested)
    then it is to write and debug your own code?



    You can write the regex in a way that's easier to read

    pattern = re.compile (
    r'<pdbcode>(?P<pdbcode>.*?)</pdbcode>.*?'
    r'<targetSeq name="(?P<targetName>.*?)">.*?'
    r'<target>(?P<target>.*?)</target>.*?'
    r'<align>(?P<align>.*?)</align>.*?'
    r'<template>(?P<template> .*?)</template>.*?'
    r'<pdbBackbone>(?P<pdbBackbone>.*?)</pdbBackbone>.*?'
    r'<queryGaps>(?P<queryGaps>.*?)</queryGaps>.*?'
    r'<templateGaps>(?P<templateGaps>.*?)</templateGaps>',
    re.S)

    You can also make the pattern a bit less ambiguous,
    eg, use [^>]* instead of .*? when you are inside an element,
    which turns

    r'<pdbcode>(?P<pdbcode>.*?)</pdbcode>.*?'

    into

    r'<pdbcode>(?P<pdbcode>[^<]*)</pdbcode>.*?'

    (and use [^"]* instead of .*? for getting the text of an
    attribute.)

    You can get rid of the other ambiguity (skipping characters
    until the start of the next tag) by using something like

    ([^<]|<(?!queryGaps))*<queryGaps

    instead of

    .*?<queryGaps

    And you can get rid of all ambiguities by having your
    pattern match the text completely, that is, capturing all
    fields even if ignore a few. In that way you don't have to
    write code which skips over tags. That's easily done
    with code which generated your pattern, as in

    def match_tag(tagname, groupname):
    return "<%s>(?P<%s>[^<]*)</%s>" % (tagname, groupname)

    pattern = "[^<]*".join(match_tag("pdbcode", "pdbcode"), ...)

    You'll need to extend it to support matching fields with
    attributes.

    In any case, what you have won't support XML like

    <pdbcode >2PLV</pdbcode>

    (I put extra spaces in the open tag.)

    Instead, you are writing parsing code for the specific XML
    subset your threading code produces, which may change in
    the future. That's why you should use an XML parser.

    And if you want to support only this specific format, it's
    still easier to write a traditional line-oriented parser.

    def readcheck(infile, start):
    line = infile.readline()
    assert line.startswith(start)
    return line

    def simpletag(line, convert = str):
    i = line.find(">")
    j = line.find("<", i)
    return convert(line[i:j])

    infile = open("threading.xml")

    line = readcheck(infile, "<threading")
    _, name, _, source, _, template, _ = line.split('"')

    line = readcheck(infile, "<pdbcode")
    pdbcode = simpletag(line)
    pdbchain = simpletag(readcheck(infile, "<pdbchain"))
    templateName = simpletag(readcheck(infile, "<templateName"))

    # don't save the settings
    while 1:
    line = infile.readline()
    assert line
    if line.startswith("</settings>"):
    break

    ....

    This may be clumsier or more tedious, but it's easy to understand
    and the ways it fails are much easier to diagnose than regexps.

    That said, I like parsing with regexps. But this isn't the right
    place to use them.

    Andrew
    Andrew Dalke, Sep 24, 2003
    #12
  13. Tina Li

    Tina Li Guest

    Hi Andrew,

    | > Thanks for the XML code. I've written up something
    | > similar using xml.parsers.expat, but it's conceivably slower
    | > than regexp.
    |
    | Conceivable, yes. But 1) did you test it, and 2) would it make a
    | difference?

    I tested it in terms of correctness. I didn't do any serious performance bench-marking as it's not the most important.
    The lag is *perceivable* (this is what I meant; sorry) by a human user so it's slower.

    | Here's a question for you. When is it easier to read the
    | documentation for existing code (which has been tested)
    | then it is to write and debug your own code?

    Is it a test question? =) I think it depends on the nature of the task. If it's intrinsically complex and error-prone,
    and that I have little exposure to it, I wouldn't risk re-inventing a wheel that doesn't turn. As well, what would the
    opportunity cost be between the time it takes to understand the documentation and that to code and test? Are the docs
    long, drab and obscure? Sometimes existing code isn't easy to customize for a particular need, then we'd have to redo
    it.

    | You can also make the pattern a bit less ambiguous,
    | eg, use [^>]* instead of .*? when you are inside an element,
    | which turns
    |
    | r'<pdbcode>(?P<pdbcode>.*?)</pdbcode>.*?'
    |
    | into
    |
    | r'<pdbcode>(?P<pdbcode>[^<]*)</pdbcode>.*?'
    |
    | (and use [^"]* instead of .*? for getting the text of an
    | attribute.)
    |
    | You can get rid of the other ambiguity (skipping characters
    | until the start of the next tag) by using something like
    |
    | ([^<]|<(?!queryGaps))*<queryGaps
    |
    | instead of
    |
    | .*?<queryGaps

    I in fact tried that before but the over-limit error still happened. So it's not just the non-greedy .*? that's causing
    the problem. Hmm.

    But again, thanks for the tips. I'm sure they'll come in handy someday. I'm doing this for a quick "hack" rather than a
    generic and robust parser module. It only handles tags without space because all tags are guaranteed to be generated
    without space.

    Thank!

    Tina



    -----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
    http://www.newsfeeds.com - The #1 Newsgroup Service in the World!
    -----== Over 100,000 Newsgroups - 19 Different Servers! =-----
    Tina Li, Sep 25, 2003
    #13
  14. Tina Li

    Andrew Dalke Guest

    Tina Li:
    > The lag is *perceivable* (this is what I meant; sorry) by a human user so

    it's slower.

    Yup, that's what I meant. Too many people make theoretical
    arguments for why to choose one (complicated) approach
    over a simpler one on the basis of performance, when it turns
    out performance isn't the issue. My appreciation goes out to you
    for doing it the right way.

    You may also want to look at pyRXP from ReportLab.
    However, there seems to be some drastic problems on their
    site -- links on reportlab.com fail and reportlab.org goes
    to pair.com's site placeholder page.

    It's a very fast XML parser for Python.

    > I in fact tried that before but the over-limit error still happened. So

    it's
    > not just the non-greedy .*? that's causing the problem. Hmm.


    No, I don't think it is. The stack space increases by one for
    each ambiguity and the .*? should only produce one ambiguity.
    Usually there's a stack problem only if you have an ambiguity
    or empty match inside a repeat, and I didn't see that in your
    pattern.

    If you get really interested in tracking this down, you might look
    around for some of the GUI regexp debugging tools. There's
    one in ActiveState's product, as I recall. Err, but it's based on
    Perl's regexp parser and won't handle (?P<>)

    (I do have an experimental pure-Python regexp engine that
    I would offer for debugging, but it doesn't handle .*? yet and
    needs a rewrite before it does.)

    > It only handles tags without space because all tags are
    > guaranteed to be generated without space.


    Sure. All I was saying was that if you're going to code for
    a specific layout then you don't need to be as general.

    You might even consider using "[^\n]*\n{5}" if you just
    want to skip 5 lines.

    Andrew

    P.S.
    If you are doing anything open-sourceish, or using
    open source in bioinformatics, structural biology, and
    related fields, and will be at ISMB in Edinborough next
    year, you might consider attending the Bioinformatics
    Open Source Conference.
    Andrew Dalke, Sep 26, 2003
    #14
  15. Tina Li

    Robin Becker Guest

    In article <%nNcb.3635$>, Andrew
    Dalke <> writes
    >Tina Li:
    >> The lag is *perceivable* (this is what I meant; sorry) by a human user so

    >it's slower.
    >
    >Yup, that's what I meant. Too many people make theoretical
    >arguments for why to choose one (complicated) approach
    >over a simpler one on the basis of performance, when it turns
    >out performance isn't the issue. My appreciation goes out to you
    >for doing it the right way.
    >
    >You may also want to look at pyRXP from ReportLab.
    >However, there seems to be some drastic problems on their
    >site -- links on reportlab.com fail and reportlab.org goes
    >to pair.com's site placeholder page.



    yup we're reassembling everything again .... sigh :(

    New more dynamic confusion ......

    >
    >It's a very fast XML parser for Python.
    >
    >> I in fact tried that before but the over-limit error still happened. So

    >it's
    >> not just the non-greedy .*? that's causing the problem. Hmm.

    >
    >No, I don't think it is. The stack space increases by one for
    >each ambiguity and the .*? should only produce one ambiguity.
    >Usually there's a stack problem only if you have an ambiguity
    >or empty match inside a repeat, and I didn't see that in your
    >pattern.
    >
    >If you get really interested in tracking this down, you might look
    >around for some of the GUI regexp debugging tools. There's
    >one in ActiveState's product, as I recall. Err, but it's based on
    >Perl's regexp parser and won't handle (?P<>)
    >
    >(I do have an experimental pure-Python regexp engine that
    >I would offer for debugging, but it doesn't handle .*? yet and
    >needs a rewrite before it does.)
    >
    >> It only handles tags without space because all tags are
    >> guaranteed to be generated without space.

    >
    >Sure. All I was saying was that if you're going to code for
    >a specific layout then you don't need to be as general.
    >
    >You might even consider using "[^\n]*\n{5}" if you just
    >want to skip 5 lines.
    >
    > Andrew
    >
    >P.S.
    > If you are doing anything open-sourceish, or using
    >open source in bioinformatics, structural biology, and
    >related fields, and will be at ISMB in Edinborough next
    >year, you might consider attending the Bioinformatics
    >Open Source Conference.
    >
    >


    --
    Robin Becker
    Robin Becker, Sep 26, 2003
    #15
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. VSK
    Replies:
    2
    Views:
    2,272
  2. Glenn

    Performance Bottleneck in ASP.NET

    Glenn, Jan 8, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    564
    Glenn.
    Jan 8, 2004
  3. =?Utf-8?B?bWF0dmRs?=

    Access to remote application and bottleneck

    =?Utf-8?B?bWF0dmRs?=, Jul 10, 2005, in forum: ASP .Net
    Replies:
    0
    Views:
    346
    =?Utf-8?B?bWF0dmRs?=
    Jul 10, 2005
  4. David Zimmerman
    Replies:
    1
    Views:
    2,103
    Harald Kirsch
    Jul 22, 2003
  5. Divya Badrinath

    Help: Efficient regular expression

    Divya Badrinath, Jul 10, 2007, in forum: Ruby
    Replies:
    24
    Views:
    245
    Martin DeMello
    Jul 11, 2007
Loading...

Share This Page