精华内容
下载资源
问答
  • 根据国内外最新资料,论述了限制性片段长度多态性、随机扩增多态性、扩增片段多态性和微卫星等DNA分子标记的基本原理及其优缺点;同时,论述了DNA分子标记在保护生物学中检测遗传多样性、遗传管理及确定分类地位和...
  • [编程题]DNA分子匹配

    千次阅读 2017-03-13 21:23:06
    题目来源:牛客网DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。 碱基互补配对原则:A和T是配对的,C和G是配对的。 如果两条碱基链长度是相同的并且每个位置的碱基是...

    题目来源:牛客网

    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。
    碱基互补配对原则:A和T是配对的,C和G是配对的。
    如果两条碱基链长度是相同的并且每个位置的碱基是配对的,
    那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,
    允许在其中一条上做替换操作:把序列上的某个位置的碱基更换为另外一种碱基。
    问最少需要多少次让两条碱基链配对成功

    #include<iostream>
    #include<string>
    
    using namespace std;
    
    int main()
    {
        string chain1, chain2;
        //scanf("%s %s",&chain1,&chain2);
        cin >> chain1 >> chain2;
        if (chain1.size() != chain2.size())
        {
            return 0;
        }
        int size = chain1.size();
        int correctnum = 0;
        for (int i = 0; i < size; i++)
        {
            if ((chain1[i] == 'A'&&chain2[i] == 'T') || (chain1[i] == 'T' && chain2[i] == 'A') ||
                (chain1[i] == 'C'&&chain2[i] == 'G') || (chain1[i] == 'G'&&chain2[i] == 'C'))
            {
                continue;
            }
            else
            {
                correctnum++;
            }
    
        }
        cout << correctnum;
        //cin.get();
        //cin.get();
        return 0;
    }
    展开全文
  • 以抗病材料Ryau96172I和感病材料Rutagus以及所需鉴定的番茄品种为试验材料,根据Mi-1.2和Mi- 1.1设计引物,利用改良SDS法提取番茄基因组DNA ,用锚定引物扩增多态性DNA分子标记法标记不同番茄品种。同时利用爪哇根结...
  • DNA的 (G+C)%为06.6,限制性片段积加法测得该DNA分子量为75.61×106道尔 顿,109.57Kb,电镜法测得DNA分子长度为35.8μm,相当于分子量为74.1×106 道尔顿,107.4Kb.电镜观察证实该病毒含有一些超螺旋环状DNA分子...
  • 用来表示DNA长度的单位,也就是我们常说的碱基数(bp) 1Mb=1000kb=1000000bp

    用来表示DNA长度的单位,也就是我们常说的碱基数(bp) 1Mb=1000kb=1000000bp

    展开全文
  • DNA合成

    2019-07-15 16:36:00
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...

    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以配对合成为DNA的双螺旋结构。现在给出两条碱基链,允许在其中一条上做替换操作:把序列上的某个位置的碱基更换为另外一种碱基。问最少需要多少次让两条碱基链配对成功


    输入描述:
    输入包括一行: 包括两个字符串,分别表示两条链,两个字符串长度相同且长度均小于等于50。

    输出描述:
    输出一个整数,即最少需要多少次让两条碱基链配对成功

    输入例子1:
    ACGT TGCA

    输出例子1:
    0

    算法:动态规划
    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    bool issame(char a, char b){
        return abs((a-'0')-(b-'0'))==19||abs((a-'0')-(b-'0'))==4;
    }
    int dp(string& s, string& t){
        int n=s.size();
        vector<vector<int>>f(n+1,vector<int>(n+1));
        for(int i=0;i<=n;i++)f[0][i]=i,f[i][0]=i;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++){
                f[i][j]=f[i-1][j-1]+(!issame(s[i-1],t[j-1]));
            }
        return f[n][n];
    }
    int main(void){
    
        string s,t;
        cin>>s>>t;
        int n=s.size();
        cout<<dp(s,t)<<endl;
    
        return 0;
    }

     



    转载于:https://www.cnblogs.com/programyang/p/11189749.html

    展开全文
  • 编写一个程序来找到一个DNA分子中出现次数超过一次的长度为10的子序列(子串)。Tags: Hash Table, Bit Manipulation

    原题地址

    https://leetcode.com/problems/repeated-dna-sequences/

    题目描述

    All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
    所有的DNA都是由简写为A``C``G``T的核苷酸构成的,例如ACGAATTCCG。在研究DNA时,辨别DNA中重复的序列在有些时候是很有用的。

    Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
    编写一个程序来找到一个DNA分子中出现次数超过一次的长度为10的子序列(子串)。

    For example,
    例如,

    Given s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT",
    给出 s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT",

    Return:
    返回:

    ["AAAAACCCCC", "CCCCCAAAAA"].
    

    Tags Hash Table Bit Manipulation

    解题思路

    嗯,这个题,如果时间上没有要求的话,用find和substr搞定是没问题的,然而在测试数据较大的时候这种方法必然会超时。

    这个题的标签是Hash Table和Bit Manipulation,参考https://leetcode.com/discuss/24478/i-did-it-in-10-lines-of-c中的方案,现做如下整理。

    测试数据中只会出现4种字符’A’,’C’,’G’,’T’,其ASC值分别为65,67,71,84,对应的二进制位如下所示,这里仅列取32位情况下的低8位,前24位全部为0。

    A --- 65 --- 0100 0001
    C --- 67 --- 0100 0011
    G --- 71 --- 0100 0111
    T --- 84 --- 0101 0100
    

    我们可以发现,仅通过低3位就能把4种字符区分开来,题目又要求了是长度为10的子串10-letter-long),试想为什么不是11或者更大呢,因为10个字符每个用3位表示一个字符的话刚好是30位,而一个int是32位,刚好能放下,如果是11+就放不下了。因此,我们可以把一个长度为10的字符串映射成一个int数,用其低30位表示这个串,作为这个串的key,然后把key存在Hash Table中,当key重复出现时就代表子串重复出现了。

    详细代码请见下文。

    除了上述方法外,受其启发,我们其实只用2个二进制位就可以唯一区分4中字符,比如A-00,C-01,G-10,T-11,这样,我们只用int的低20位就可以表示一个字符串的key,这种方法甚至可以最多用于处理长度为16的子串。比上面一种方法略显复杂的是,需要手动将ACGT映射成2位二进制数,方法也是多种多样的。比如:

    方法一

    /** @return 字符到2位二进制数的映射 */
    int function(char c) {
        int ret = 0;
        switch (c) {
            case 'A': break;
            case 'G': ret = 1; break;
            case 'C': ret = 2; break;
            case 'T': ret = 3; break;
        }
        return ret;
    }

    方法二

    /* 数组映射,调用时使用nums[c - 65]即可得到字符c的映射码 */
    int nums[20]; 
    nums[0] = 0; 
    nums[2] = 1; 
    nums[6] = 2; 
    nums[19] = 3;

    除此外,在讨论贴中还看到了另外一种很巧妙的映射方法:

    方法三

    /** 
     * (s[i] - 64) % 5完成映射
     * A : ('A' - 64) % 5 = 1  (mod 5) = 1 = 01
     * B : ('C' - 64) % 5 = 3  (mod 5) = 3 = 11
     * C : ('G' - 64) % 5 = 7  (mod 5) = 2 = 10
     * D : ('T' - 64) % 5 = 20 (mod 5) = 0 = 00
     */
    key = key << 2 & 0xfffff | (s[i] - 64) % 5;

    代码

    代码一

    首先是用ACGT的ASC码的后3位来映射的解法。在代码编写中,对于最开始的9个字符是为了构造第一个key而做功,一般说来从第10个字符开始才开始判定key的重复出现情况。然而由于AGCT的映射码均为三位且没有任何一个码是000,因此在前面9个字符也是可以与其他字符一致处理的,不会出现误判。一致处理的代码大致如下:

    class Solution {
    public:
        vector<string> findRepeatedDnaSequences(string s) {
            vector<string> strs;
            unordered_map<int, int> map;
            int key = 0; 
            for (int i = 0, end = s.size(); i < end; ++i) {
                key = ((key << 3) | (s[i] & 0x7)) & 0x3fffffff;
                if (map[key]++ == 1)
                    strs.push_back(s.substr(i - 9, 10));
            }
            return strs; 
        }
    };

    不一致处理的代码大概如下,先处理前9个字符,然后处理后面的:

    class Solution {
    public:
        vector<string> findRepeatedDnaSequences(string s) {
            vector<string> strs;
            if (s.size() <= 10) return strs;
            unordered_map<int, int> map;
            int key = 0, i = 0; 
            for (; i < 9; ++i)
                key = ((key << 3) | (s[i] & 0x7)) & 0x3fffffff;
            for (int end = s.size(); i < end; ++i) {
                key = ((key << 3) | (s[i] & 0x7)) & 0x3fffffff;
                if (map[key]++ == 1)
                    strs.push_back(s.substr(i - 9, 10));
            }
            return strs; 
        }
    };

    完整代码https://github.com/Orange1991/leetcode/blob/master/187/cpp/main.cpp

    很难说到底哪种代码更好。如果从代码精简的方面来看,前面一个代码数量更少;但是前面一种代码对于前9个字符也会把key放入map中且会判定是否key重复出现,这个操作是多余的,相比于后面的解法来说就多了一些无用的操作,在实际的运行中也证实了这一点,前一种时间为100ms,而后一种为96ms。另外,对于前面一种方案,是否可以将前9个字符与其他字符一致处理而不致于误判,还要看AGCT映射码中是否有全0的码,如果有则不能一致处理,就拿接下来马上要说的解法二来说,我们把A映射为00,假如我们的串是AA(你没看错,就是只有2位的串),那对于第一个字符,key计算后得到结果为0(你没看错,就是0),我们把0放入map并且其value为0,然后,在第二个字符,key计算后仍然为0,这时候根据规则,以第二个A为结尾的10个字符要放入结果集中,这时候程序一定会崩溃的(s.substr(-8, 10))。因此,我们还是直接用后面一种解法就好,代码不过多了两行,而且不会出现误判,哪怕映射码中有全0码也没问题。

    代码二 自定义映射码

    在前面解题思路中已经说的比较详细了,因此不再赘述,仅列出代码

    class Solution {
    public:
        vector<string> findRepeatedDnaSequences(string s) {
            vector<string> strs;
            if (s.size() <= 10) return strs;
            unordered_map<int, int> map;
            int key = 0, i = 0; 
            /* 映射逻辑: A-01, C-11, G-10, T-00  */
            for (; i < 9; ++i)
                key = ((key << 2) | ((s[i] - 64) % 5)) & 0xfffff;
            for (int end = s.size(); i < end; ++i) {
                key = ((key << 2) | ((s[i] - 64) % 5)) & 0xfffff;
                if (map[key]++ == 1)
                    strs.push_back(s.substr(i - 9, 10));
            }
            return strs; 
        }
    };

    完整代码https://github.com/Orange1991/leetcode/blob/master/187/cpp/solution2.cpp

    参考

    https://leetcode.com/discuss/24478/i-did-it-in-10-lines-of-c
    http://blog.csdn.net/ljiabin/article/details/44488619


    2015/8/5

    展开全文
  • 检测DNA

    2009-12-31 20:16:00
    一、1、杂交过程将2个互补的DNA链结合成单个的双链分子。2、探针一个长度为20-30的核苷酸的单链DNA片段,其序列已知具有荧光标记。3、探针与未知DNA片段杂交后,就可知,在这个大的DNA片段中是否存在与探针互补的...
  • DNA合成算法

    2017-03-08 09:55:40
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • 高质量的DNA编码可以避免DNA分子间的非特异性杂交,提高DNA计算的有效性和可靠性。首先对DNA编码的约束条件进行归类,分析了各编码约束对编码质量的影响;然后研究了编码质量、编码数量、序列长度与DNA计算可靠性、...
  • RFLP分子标记及其在牧草研究中的应用,史威威,董宽虎,RFLP分子标记是用限制性酶(RE)消化不同个体的同源DNA分子,经电泳表现的限制性片段长度的差异。它反映了DNA 分子水平上的变异,可能是限�
  • 牛客模拟一:DNA合成

    2017-03-13 17:04:14
    * DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。 * 碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的, * ...
  • [编程题] DNA合成

    2017-08-02 21:20:40
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A, T, C, G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就...
  • 编写一个函数来查找 DNA 分子中所有出现超多一次的10个字母长的序列(子串)。 分析:先把所有长度为10的字串枚举出来,统计出现次数。暴力法。 示例: 输入: s = "AAAAACCCCCAAAAACCCCCCAAAA...
  • 25.暴力枚举-DNA

    2018-03-15 16:25:46
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • [编程题]DNA合成

    2017-09-20 15:01:44
    题目来源:牛客网 链接:... ...DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每
  • 牛客网-DNA合成

    千次阅读 2017-03-25 17:42:46
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • js程序-- DNA相关问题

    2019-10-05 13:58:27
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • DNA在静止流场中构象统计特性的计算机模拟,左春柽,冀封,在合理构建高分子蠕虫链模型的基础上,利用布朗动力学模拟了静止流场中不同链长度情况下,DNA链均方末端距、均方旋转半径和末端距
  • 算法--水题-DNA合成

    千次阅读 2017-03-08 01:31:31
    DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。碱基互补配对原则:A和T是配对的,C和G是配对的。如果两条碱基链长度是相同的并且每个位置的碱基是配对的,那么他们就可以...
  • 生物信息学家在进行分子计算研究DNA序列时需要将若干长度相同的DNA串按其逆序数从小到大排序。 编写程序,对于给定长度相同的DNA串,按其逆序数从小到大的顺序排序。 DNA中的字符按照字符顺序比较大小,数据从...
  • 遗传基因科普(2):人体DNA有多长?...那么,在人体体内DNA的总长度是多少呢? 人体有许多细胞,而在每个细胞里面都有一个遗传基因大分子,即一串DNA。这个DNA序列(好似一个“字符串”、一根线绳)又
  • 利用合成的中等分子量的线性聚丙烯酰胺(LPA)和羟乙基纤维素(HEC)构成的共混聚合物网络对标准DNA样品BigDye Teminator V 3.1进行测序研究。研究了LPA/HEC的比例,温度,电压等对分离效果的影响。实验证明该聚合物...
  • 是转录因子的DNA结合片段

    千次阅读 2014-03-31 15:31:34
    转录因子结合位点(转录因子结合位点, TFBS )是转录因子的DNA结合片段,其长度通常为5 ? 20碱基的范围内,在一定的转录因子调节基因通常也同时它被绑定到不同的基因位点具有一定的保守性,而不是相同的。 DNA片段...
  • 渤海鱼类寄生异尖属线虫的分子鉴定,史梅青,明珠,利用rDNA ITS区的PCR-RFLP (DNA扩增片段长度多态性) 结合序列分析,首次对我国渤海5种鱼类宿主体内寄生的612条异尖属线虫幼虫进行分子分类
  • 通过常规合成的硫和氰基修饰的不同分子大小(20n-200n)和相同长度的常规聚(dNTP)和聚(NTP)种类的单链聚(dNTP)序列,通过分子生物学的良好服务获得了。然后由俄罗斯联邦生物有机产品小组和ThermoFischer,Inc....

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

dna分子长度