Rosalind: DNA核苷酸计数和DNA翻译成RNA

简介: DNA核苷酸计数问题描述: 给定一行核苷酸序列,长度最长为1000 nt, 返回其中'A', 'T', 'C', 'G'出现的次数C代码如下:#include #include #include #include "dbg.

DNA核苷酸计数

问题描述: 给定一行核苷酸序列,长度最长为1000 nt, 返回其中'A', 'T', 'C', 'G'出现的次数

C代码如下:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include "dbg.h"
#define MAX_SIZE 1001

int main( int argc, char *argv[])
{
    check(argc == 2, "Need an argument"); 
    FILE *filein ;
    if( ( filein = fopen(argv[1], "r")) == NULL){
        printf("unable to open %s \n", argv[1]);
        return 1;
    } 
    
    char nucl[MAX_SIZE];
    char *in = NULL;
    in = fgets(nucl, MAX_SIZE - 1, filein);
    check(in != NULL, "Failed to read file");
    // count
    int count =0;
    char letter;
    int A_NUM = 0, T_NUM = 0, C_NUM = 0 , G_NUM = 0;
    for ( count = 0; nucl[count] != '\0' && nucl[count] != '\n'; count++){
        letter = toupper(nucl[count]);
        switch(letter){
        case 'A':
            A_NUM ++;
            break; 
        case 'T':
            T_NUM ++;
            break; 
        case 'C':
            C_NUM ++;
            break; 
        case 'G':
            G_NUM ++;
            break; 
        default:
            printf("%d: %c is not a valid base\n", count, letter);
        }
    }
    printf("A\tC\tG\tT\n");
    printf("%d\t%d\t%d\t%d\t\n",A_NUM, C_NUM, G_NUM, T_NUM); 

    fclose(filein);
    return 0;
error:
    return -1;
}

DNA转录成RNA

问题描述: RNA由A, C, G, U组成,其中U是对应DNA编码链上的T。给定一段编码链上的序列,将其翻译成RNA序列。

C代码如下:

#include <stdio.h>
#include <ctype.h>
#include "dbg.h"
#define LINE_MAX 80

int main(int argc, char *argv[])
{
    check(argc == 2, "USAGES: ./RNA file");
    char *filename = argv[1]; 
    FILE *in = fopen(filename, "r");
    check(in != NULL, "unable to open file");
    char line[LINE_MAX];
    int i = 0;
    while ( (fgets(line, LINE_MAX - 1, in)) != NULL){
        for (i = 0; line[i] != '\0'; i++){
            int base = toupper(line[i]);
            if ( base == 'T'){
                printf("%c", 'U');
            } else{
                printf("%c", base);
            }

        }
    }
    printf("\n");

    return 0;
error:
    return -1;

}
目录
相关文章
|
9月前
|
XML 数据挖掘 API
1688商品详情数据示例参考,1688API接口系列
在成长的路上,我们都是同行者。这篇关于详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
10月前
|
算法 数据安全/隐私保护
基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计
### 简介 本项目基于DVB-T标准,实现COFDM+16QAM+LDPC码通信链路的MATLAB仿真。通过COFDM技术将数据分成多个子载波并行传输,结合16QAM调制和LDPC编码提高传输效率和可靠性。系统包括载波同步、定时同步和信道估计模块,确保信号的准确接收与解调。MATLAB 2022a仿真结果显示了良好的性能,完整代码无水印。仿真操作步骤配有视频教程,便于用户理解和使用。 核心程序涵盖导频插入、载波频率同步、信道估计及LDPC解码等关键环节。仿真结果展示了系统的误码率性能,并保存为R1.mat文件。
305 76
|
7月前
|
Linux Windows
幻兽帕鲁服务端性能优化mod
这是一个非官方的《PalWorld》服务器Mod,主要用于修复内存泄漏和高CPU负载问题。目前可能存在未知Bug,建议备份游戏数据后自行测试。下载后,根据系统不同,替换对应路径下的文件即可使用。Windows路径为`PalServer\Pal\Binaries\Win64\`,Linux路径为`pal\pal\binaries\Linux\`。更多详情可访问Github或哔哩哔哩提供的下载地址。
254 9
|
缓存 运维 Docker
容器化运维:Docker Desktop 占用磁盘空间过大?教你轻松解决!
Windows Docker Desktop 使用过程中,因镜像、容器数据及构建缓存的累积,可能导致磁盘空间占用过高。通过删除无用镜像与容器、压缩磁盘以及清理构建缓存等方法,可有效释放空间。具体步骤包括关闭WSL、使用`diskpart`工具压缩虚拟磁盘、执行`docker buildx prune -f`清理缓存等。这些操作能显著减少磁盘占用,提升系统性能。
3485 5
|
Kubernetes 虚拟化 容器
带你一分钟看懂 “kubernetes”
从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“K8s”,它是通过将 8 个字母“ubernete ”替换为“8”而导致的一个缩写。
448 2
|
JSON 数据格式
axios实现RESTful请求规范
GET:获取数据后端将参数当做url 参数 接收 this.axios.get('/url/user', { params: { "name": "kevin", "password": "123456" } }) .
5995 0
|
弹性计算 网络协议 安全
阿里云服务器80端口开启教程(安全组配置)
阿里云服务器80端口开启教程(安全组配置)阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
2898 0
|
传感器 算法 定位技术
IMU预积分在优化问题中的建模及外参标定
预积分量约束相邻两帧的状态量(位置、速度、姿态),同时考虑到IMU的零偏的性质,即短时间内变换速率比较慢,因此可以认为两帧之间的零偏不变,也就是还可以约束两帧的零偏变换。 同时,在slam问题中,IMU预积分通常会和其它传感器的约束一起构建一个优化问题 无论是VIO还是LIO,IMU和其它传感器的标定结果往往对最终的里程记和建图性能有着显著的影响。同样,在多传感器融合算法中,传感器之间的标定结果的精度对多传感器融合的效果也有着非常大的影响。 在lidar-imu融合的算法中,lidar和IMU之间的外参标定非常重要,在一些数据集上往往有着经过良好标定的结果,然而,绝大多数情况下,或者实际
IMU预积分在优化问题中的建模及外参标定
|
网络协议 网络虚拟化 虚拟化
EVPN小实验:集中式EVPN网关配置(上)
EVPN小实验:集中式EVPN网关配置
EVPN小实验:集中式EVPN网关配置(上)
|
消息中间件 移动开发 监控
扫盲贴|如何评价一款App的稳定性和质量?
我们不应该为了掩盖代码质量问题,通过手动try catch去规避某些问题,这样有可能会打断用户的正常使用,并造成感知性的阻断反馈,应该从用户使用APP时的真实感知出发,当出现问题时及时捕获和处理问题。 App的稳定性时一个长期不断迭代的过程,在这个过程中U-APM是一个很好的提升效率降低成本的工具,他提供了收集、解析、聚合、分析的能力,下一期我们会从如何通过U-APM解决和处理崩溃、ANR等问题进行讲解,尽情期待。
扫盲贴|如何评价一款App的稳定性和质量?