NCBI C++ ToolKit
thrdslou.c
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: thrdslou.c 32839 2007-03-05 20:41:55Z kazimird $
2 *===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government have not placed any restriction on its use or reproduction.
13 *
14 * Although all reasonable efforts have been taken to ensure the accuracy
15 * and reliability of the software and data, the NLM and the U.S.
16 * Government do not and cannot warrant the performance or results that
17 * may be obtained by using this software or data. The NLM and the U.S.
18 * Government disclaim all warranties, express or implied, including
19 * warranties of performance, merchantability or fitness for any particular
20 * purpose.
21 *
22 * Please cite the author in any work or product based on this material.
23 *
24 * ===========================================================================
25 *
26 * File Name: thrdslou.c
27 *
28 * Author: Stephen Bryant
29 *
30 * Initial Version Creation Date: 08/16/2000
31 *
32 * $Revision: 32839 $
33 *
34 * File Description: threader
35 */
36 
37 
38 
39 /* Update core segment location */
40 
43 
44 /*int*/ void slou(Fld_Mtf* mtf, Cor_Def* cdf, int cs, int ct, int of, Cur_Loc* sli,
45  Cur_Aln* sai, Qry_Seq* qsq) {
46 /*--------------------------------------------------------*/
47 /* mtf: Contact matrices defining the folding motif */
48 /* cdf: Core definition contains min/max segment extents */
49 /* cs: Current segment */
50 /* ct: Current terminus */
51 /* of: New alignment of current segment */
52 /* sli: Current locations of core segments in the motif */
53 /*--------------------------------------------------------*/
54 
55 int i; /* Residue indices in core motif */
56 int nsc; /* Number of threaded core segments */
57 int mx,mn; /* Range of motif indices */
58 int rf; /* Reference point for core segment offsets */
59 int nt; /* Terminus of neighboring segment */
60 int ns; /* Neighbor segment index */
61 int ci, si;
62 
63 /* Number of core segments */
64 nsc=cdf->sll.n;
65 
66 /* Lower in-core flags for all positions in the current element */
67 rf=cdf->sll.rfpt[cs];
68 mn=rf-sli->no[cs];
69 mx=rf+sli->co[cs];
70 for(i=mn; i<=mx; i++) sli->cr[i]=-1;
71 
72 
73 /* Record new element range based on updated n- or c-terminal extent */
74 switch(ct) {
75 
76  case 0: { sli->no[cs]=of;
77  mn=rf-of;
78  ns=cs-1; if(ns>=0) {
79  nt=cdf->sll.rfpt[ns]+sli->co[ns];
80  sli->lp[cs]=mtf->mll[nt][mn]; }
81  break; }
82 
83  case 1: { sli->co[cs]=of;
84  mx=rf+of;
85  ns=cs+1; if(ns<nsc) {
86  nt=cdf->sll.rfpt[ns]-sli->no[ns];
87  sli->lp[cs+1]=mtf->mll[mx][nt]; }
88  break; }
89  }
90 
91 
92 /* Raise in-core flags for all positions in the new element */
93 for(i=mn; i<=mx; i++) sli->cr[i]=cs;
94 
95 /* update aligned residue types */
96 mn=sai->al[cs]-sli->no[cs];
97 mx=sai->al[cs]+sli->co[cs];
98 ci=cdf->sll.rfpt[cs]-sli->no[cs];
99 for(si=mn; si<=mx; si++) {
100  sai->sq[ci]=qsq->sq[si];
101  ci++; }
102 
103 }
static const char si[8][64]
Definition: des.c:146
int i
struct _Cor_Def::@23 sll
int * rfpt
Definition: thrdatd.h:69
int n
Definition: thrdatd.h:74
int * sq
Definition: thrdatd.h:192
int * al
Definition: thrdatd.h:190
int * cr
Definition: thrdatd.h:184
int * lp
Definition: thrdatd.h:182
int * no
Definition: thrdatd.h:179
int * co
Definition: thrdatd.h:180
int ** mll
Definition: thrdatd.h:63
int * sq
Definition: thrdatd.h:92
void slou(Fld_Mtf *mtf, Cor_Def *cdf, int cs, int ct, int of, Cur_Loc *sli, Cur_Aln *sai, Qry_Seq *qsq)
Definition: thrdslou.c:44
Modified on Thu Feb 22 17:08:49 2024 by modify_doxy.py rev. 669887