
序列操作
文章平均质量分 52
XH生信ML笔记
无计算机背景的生信入坑者一枚,生物狗一只,读博时初涉linux,以后陆续入坑python,r,Machine Learning,Deep Learning。主页主要是备份代码,如果能帮助到其他朋友就更好。
展开
-
mac 中awk和linux中awk不一致,ARGIND==1不识别的问题。
最近在mac上处理两个文件,发现在centos上用的好好的awk命令mac中无输出,因为以前在grep和sed中遇到mac和centos 使用不一致的问题,整了一下午,发现时mac和centos awk 版本不同$ awk 'BEGIN{OFS=FS="\t"}ARGIND==1{a[$1]=$1}ARGIND==2{print $0}' rep.txt good.txt|head# 无任何输出#查看版本$ man awkNAME awk - pattern-directed sca原创 2021-12-09 10:28:22 · 3342 阅读 · 0 评论 -
不使用循环,如何对numpy array或者list中每个元素进行操作
在使用list或者numpy array时,经常需要对里面的每一个元素进行操作。当然使用for循环是最简单的,但for循环速度非常慢。而numpy array内置科学计算模块,速度大大高于for循环。如我有个list 需要对里面的元素切片...原创 2020-03-28 21:43:29 · 4017 阅读 · 0 评论 -
通过awk字符串处理函数substr遍历字符串(如基因组)
在处理全基因组序列时,有时候需要一段一段的遍历基因组序列,分析各个区域序列的特征。比如我有一个细菌基因组5M,我需要截断成5000bp的片段,或者每隔1000bp截取5000bp,一直到把整个基因组截取完毕,然后对这些所有的片段做分析。当然最简单的是用python的字符串加索引功能,详情见本人文章使用countvectorizer 和tf-idf来编码文字/DNA序列 中的第一部分“1. 对dn...原创 2020-03-19 20:09:28 · 880 阅读 · 0 评论 -
使用sed处理fasta序列中的特殊符号
从网上下载的DNA序列在做生物信息或者机器学习之前,需要对序列进行质控,观察是否有一些特殊字符如“-”,“>"等。sed 是一个字符处理命令,可以使用正则表达式,可以对序列替换,删除,查找等处理,速度非常块,本次使用sed处理序列要处理的序列如下:test$less test.fa>BetaCov/Wuhan/IVDC-HB-01/2019|EPI_ISL_402119ATTA...原创 2020-02-11 05:12:14 · 5670 阅读 · 0 评论 -
一条命令实现fasta序列多行变单行
许多序列处理软件要求fasta序列为单行,但很多时候下载的序列都是多行fasta序列,因此需要转换成单行fasta格式:多行fasta文件未test.fa:test$cat test.fa >seq1ATTAAAGGTTTATACCTTCCAATCTGTGTGGCTGTCACTCACACGAGTAACTCGTCTATC>seq2ATTAAAGGTTTATACCTTCC...原创 2020-02-11 05:08:28 · 9083 阅读 · 2 评论 -
一句代码快速提取fastq文件中的fasta
NGS数据输出一般为fastq格式,包含序列的质量等信息,有时候我们只想提取fasta序列文件,可以通过多种NGS序列处理软件。此外,可以使用一行代码快速提取。可以通过两种方式,第一种用sed,第二种用awd,个人觉得第1种sed 命令比较精妙,分享供大家参考:复习一下典型的fastq文件格式$ cat test.fq@ST-E00126:128:HJFLHCCXX:2:1101:7405...原创 2020-01-29 07:19:32 · 2257 阅读 · 0 评论 -
使用countvectorizer 和tf-idf来编码文字/DNA序列
在做文字识别和自然语言处理时,countvectorizer 和tf-idf是常见的两种常见的对文字进行编码的方式。DNA在打断成kmer后,也可以按照文字编码的方式对kme进行编码。DNA如何编码可参考本人博客文章字符串(如DNA序列,蛋白质序列)的编码和用于机器学习和神经网络.这篇文章展示如何将DNA序列打断成kmer然后用countvectorizer 和tf-idf来编码,当然也可以直接...原创 2020-01-29 02:41:14 · 1175 阅读 · 0 评论 -
一行代码去除序列中含有n或者其他简并碱基的低质量序列
一行代码去除atcg/ATCG之外的碱基的序列不管是测序的序列,还是从数据库中下载的序列,部分序列中含有位置的碱基n或者简并碱基如W,R, K等,这些碱基可能很可能是测序质量不佳或者对后续分析不利需要去除,可以使用一行代码去除去除含有n的序列awk '{if($0~/^>/)a=$0;else{if($0!~/n/)print a"\n"$0}}' yourfile.fa >...原创 2019-12-17 02:23:32 · 5510 阅读 · 6 评论 -
使用kmer的count结果构建numpy的array
在完成kmer生成的count后,汇总所有样本生成numpy array,用于机器学习的训练输入文件不同分类样本的kmer数据文件夹,本文是chrom和plas两类总的kmer listimport numpy as npimport globimport argparseimport pandas as pdparser = argparse.ArgumentParser(...原创 2019-12-17 01:19:46 · 436 阅读 · 0 评论 -
多行fasta文件分解成单个文件
1. 使用for循环在使用kmer进行统计时,需要分别统计每条序列的kmer数目。如果所有样本的fasta文件均在一个多行fasta文件里,如果把每一条序列提取出来?有两种方法,第一种方法先把序列id提取出来,然后采用grp + for循环的方法:#获得序列的IDgrep ">" multiline.fa|sed 's/>//' >fas.id#分拆成单个文件for ...原创 2019-11-28 02:14:55 · 6166 阅读 · 2 评论 -
一行代码统计DNA序列中有多少nn的碱基
一行代码统计DNA序列中有多少nn的碱基从网上下载的dna序列经常由于质量不高序列中含有n,因此统计n的数目十分重要。可以采用awk 一行代码统计序列中n的数目: awk '{if($0~/^>/)a=$0;else {if($0~/n/){gsub(/[atcg]/,"",$0);printf a"\t"length($0)"\n"}}}' test.fa 序列必须为单行序列,如...原创 2019-11-09 05:38:21 · 1744 阅读 · 0 评论 -
使用awk单行脚本实现DNA序列长度过滤
使用awk函数过滤长度NGS的reads过滤或者DNA片段的长度过滤,除了用软件,还可以用awk函数,一行代码即可搞定单行fasta:假设过滤40bp的序列awk '{if($0~/>/) geneName=$0;if(length($0)>40) print geneName"\n"$0;}' seq多行fasta:假设过滤70bp的序列awk 'BEGIN{...原创 2019-11-04 00:22:06 · 1163 阅读 · 0 评论 -
使用awk随机截取细菌DNA基因组指定长度片段
要求:大约10000个细菌基因组序列,每个fasta文件1个基因组,可能有多个contig或者单个contig。要求在每个基因组上随机截取2000bp的片段,每个基因组截取10段。代码联合使用grep,awk,和awk的随机化种子rand#!/bin/bash# this code used for resample seg from a genome contigs files...原创 2019-11-04 00:14:33 · 976 阅读 · 0 评论