⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 antigenic.cpp

📁 ncbi源码
💻 CPP
字号:
/* * =========================================================================== * PRODUCTION $Log: antigenic.cpp,v $ * PRODUCTION Revision 1000.1  2004/06/01 18:10:22  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * PRODUCTION * =========================================================================== *//*  $Id: antigenic.cpp,v 1000.1 2004/06/01 18:10:22 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Josh Cherry * * File Description:  Predict antigenic determinants as described by *                    Kolaskar and Tongaonkar, 1990 * */#include <ncbi_pch.hpp>#include <corelib/ncbistd.hpp>#include <objects/seqloc/Seq_interval.hpp>#include <algo/sequence/antigenic.hpp>BEGIN_NCBI_SCOPEUSING_SCOPE(objects);// Antigenic propensities by NCBIstdaa:const double CAntigenic::sm_Pa_table[26] =    {        0,        1.06383,  // A        0.77624,  // B (min of D and N)        1.41226,  // C        0.86646,  // D        0.85083,  // E        1.09132,  // F        0.87413,  // G        1.10505,  // H        1.15173,  // I        0.93026,  // K        1.25039,  // L        0.82567,  // M        0.77624,  // N        1.06383,  // P        1.01542,  // Q        0.87254,  // R        1.01219,  // S        0.90884,  // T        1.38428,  // V        0.89290,  // W        0.77624,  // X (min of standard 20)        1.16148,  // Y        0.85083,  // Z (min of E and Q)        0,        // U (not known)        0         // * (what's appropriate?)    };template<class Seq>void x_PredictAGSites(const Seq& seq, CAntigenic::TLocVec& results,                      int min_len){    // First build vector giving local average of Pa (over 7 residues).    // Along the way, calculate the average for the whole protein.        vector<double> Pa(seq.size());    double local_sum = 0, global_sum = 0;    for (int i = 0;  i < 7;  i++) {        local_sum += CAntigenic::sm_Pa_table[seq[i]];        global_sum += CAntigenic::sm_Pa_table[seq[i]];    }    Pa[3] = local_sum / 7;        for (unsigned int i = 4;  i < seq.size() - 3;  i++) {        local_sum -= CAntigenic::sm_Pa_table[seq[i-4]];        local_sum += CAntigenic::sm_Pa_table[seq[i+3]];        global_sum += CAntigenic::sm_Pa_table[seq[i+3]];        Pa[i] = local_sum / 7;    }    double global_mean = global_sum / seq.size();    double thresh = min(global_mean, 1.0);    // now look for runs of Pa >= thresh of length >= min_len    int count = 0;    int begin;    // NOTE: we go one extra residue, in the knowledge that    // its Pa entry will be zero, so it will end any run    for (unsigned int i = 3;  i < seq.size() - 2;  i++) {        if (Pa[i] >= thresh) {            if (count == 0) {                begin = i;  // the beginning of a run            }            count++;        } else {            // the end of a (possibly empty) run            if (count >= min_len) {                // an antigenic site                int end = i - 1;                                CRef<objects::CSeq_loc> loc(new objects::CSeq_loc());                loc->SetInt().SetFrom(begin);                loc->SetInt().SetTo(end);                results.push_back(loc);            }            count = 0;        }    }}void CAntigenic::PredictSites(const string& seq,                              TLocVec& results,                              unsigned int min_len){    x_PredictAGSites(seq, results, min_len);}void CAntigenic::PredictSites(const vector<char>& seq,                              TLocVec& results,                              unsigned int min_len){    x_PredictAGSites(seq, results, min_len);}void CAntigenic::PredictSites(const objects::CSeqVector& seq,                              TLocVec& results,                              unsigned int min_len){    string seq_ncbistdaa;    CSeqVector vec(seq);    vec.SetNcbiCoding();    vec.GetSeqData(0, vec.size(), seq_ncbistdaa);    x_PredictAGSites(seq_ncbistdaa, results, min_len);}END_NCBI_SCOPE/* * =========================================================================== * $Log: antigenic.cpp,v $ * Revision 1000.1  2004/06/01 18:10:22  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4 * * Revision 1.4  2004/05/21 21:41:04  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.3  2003/09/10 16:20:40  ucko * Tweak to avoid undefined symbols with WorkShop. * * Revision 1.2  2003/09/09 16:09:38  dicuccio * Moved lookup table to implementation file * * Revision 1.1  2003/09/02 14:53:11  jcherry * Initial version * * =========================================================================== */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -