最近php7的消息铺天盖地, 忍不住想尝试下。星期天看了下语法, 写个小脚本练下手;

这个脚本读取fasta 文件, 输出序列的长度和GC含量;

<?php
$fasta = "test.fasta";
$meta = array();
$meta = parse_fasta($fasta);
write_res($meta); function parse_fasta($fasta) {
$meta = array();
$file_handle = fopen($fasta, 'r');
$id = '';
$seq = '';
while (!feof($file_handle)) {
$line = fgets($file_handle);
$line = preg_replace("/\s+$/", "", $line);
if (preg_match("/^>/", $line)) {
if ($id) {
$meta[$id] = $seq;
$id = $line;
$seq = '';
} else {
$id = $line;
}
} else {
$seq .= $line;
}
}
$meta[$id] = $seq;
fclose($file_handle);
return $meta;
} function write_res($meta) {
foreach ($meta as $key => $value) {
$len = cal_length($value);
$gc = cal_gc($value);
echo "$key\t$value\t$len\t$gc\n";
}
} function cal_length($seq) {
return strlen($seq); } function cal_gc($seq) {
$gc = array();
preg_match_all("/G|C|g|c/", $seq, $gc);
return count($gc[0]) / strlen($seq);
} ?>

php 统计fasta 序列长度和GC含量的更多相关文章

  1. 【Python小试】判断一条序列GC含量高低

    题目: 随便给定一条序列,如果GC含量超过65%,则认为高. 编程: from __future__ import division #整数除法 def is_gc_rich(dna): length ...

  2. mothur summary.seqs 统计fasta文件中每条序列的长度

    在介绍summary.seqs的用法之前,我们首先需要搞清楚两个概念: 1)ambiguous bases 中文叫做模糊碱基,对于DNA序列来说,只有ATCG 4种碱基,在IUPAC定义的碱基标准中, ...

  3. 统计 fastq 文件 q20 , GC 含量的软件

    二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求:另外还需要统计q20,q30,GC含量等反应测序质量的指标: 在kseq.h 的基础上稍加改造,就可以实现从fastq 文 ...

  4. samtools faidx 命令处理fasta序列

    samtools faidx 能够对fasta 序列建立一个后缀为.fai 的文件,根据这个.fai 文件和原始的fastsa文件, 能够快速的提取任意区域的序列 用法: samtools faidx ...

  5. 题解-洛谷P1020P导弹拦截(求单调序列长度的优化)

    https://www.luogu.org/problemnew/show/P1020 (原题链接) 第一问就是求最长不上升子序列的长度,自然就想到了c++一本通里动态规划里O(n^2)的算法,但题目 ...

  6. bowtie2-inspect 根据bowtie2的索引取得fasta 序列

    今天运行tophat2的时候看到下面这条记录: [2016-02-27 11:40:03] Checking for reference FASTA file Warning: Could not f ...

  7. 通过bed文件获取fasta序列

    一.BED 文件格式 BED 文件格式提供了一种灵活的方式来定义的数据行,以用来描述注释的信息.BED行有3个必须的列和9个额外可选的列. 每行的数据格式要求一致. 必须包含的3列: 1.chrom, ...

  8. JDOJ 1929: 求最长不下降序列长度

    JDOJ 1929: 求最长不下降序列长度 JDOJ传送门 Description 设有一个正整数的序列:b1,b2,-,bn,对于下标i1<i2<-<im,若有bi1≤bi2≤-≤ ...

  9. 【t081】序列长度

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数 ...

随机推荐

  1. 【Cmd】那些年,我们迷恋的cmd命令(一)

    小续 还记得,那些年玩hack的朋友吗,现在玩这个的,基本都是小孩子了(俗称脚本小子). 还记得,那些年敲过的命令吗,现在的孩子,都用工具了(叫工具党). 孩子们,健康的网络环境需要大家一起去维护. ...

  2. 8个超炫酷仿苹果应用的HTML5动画

    苹果的产品一直以精美的UI著称,无论是软件应用还是硬件设备.本文主要分享了8个很不错的HTML5动画应用,这些动画正式模仿了苹果的各类应用,有焦点图.钟表.菜单等HTML5应用和jQuery插件,大家 ...

  3. LeetCode: Binary Search Tree Iterator 解题报告

    Binary Search Tree Iterator Implement an iterator over a binary search tree (BST). Your iterator wil ...

  4. LeetCode: Binary Tree Level Order Traversal 解题报告

    Binary Tree Level Order Traversal Given a binary tree, return the level order traversal of its nodes ...

  5. Mysql下SELECT的结果集作为UPDATE的WHERE条件时的SQL语法

    UPDATE `WarningSendMail` AS alias_1 INNER JOIN (SELECT * FROM `WarningSendMail` WHERE flag=1 AND top ...

  6. 好用的vim插件

    # 好用的vim插件 ### 简介------------------------------ 记录vim好用的插件 ### vimcdoc vim中文帮助文档-------------------- ...

  7. mybatis批量更新的两种实现方式

    mapper.xml文件,后台传入一个对象集合,另外如果是mysql数据库,一点在配置文件上加上&allowMultiQueries=true,这样才可以执行多条sql,以下为mysql: & ...

  8. JS实现多行文本最后是省略号紧随其后还有个超链接在同一行的需求

    1.布局及样式如下图: 2.js获得上图的div对象,然后判断div对象的高度,如果大于一行的高度了表示内容有两行了,再获得span标签里面的内容并用正则将后六个字符替换成“......”这里的实现代 ...

  9. web开发经验

    图片显示不全 网站进行了迁移,更换了新框架,结果出现了图片显示不全的问题,后来发现是nginx权限问题 curl 无报错,无返回 有可能是url错误,而无服务器对错误的url返回空,没返回错误

  10. java 获取参数泛型类型

    import java.lang.reflect.ParameterizedType; public abstract class SampleObjectCallBack<T> { pr ...