faSplit how input.fa count outRoot
This tool is part of UCSC Genome Browser's utilities.
-outDirDepth=3
would produce ./1/2/3/outRoot123.fa.$ faSplit sequence dm6.fa 100 dm6_seq
This will break up dm6.fa into 100 (defined by count) files (numbered dm6_seq000.fa, dm6_seq001.fa, ..., dm6_seq099.fa). Files will only be broken at fasta record boundaries. For example, chromosomes in reference genomes are stored in separate fasta records (>chr2L, >chr2R, etc), the sequence mode makes sure sequence for one chromosome (record) will not be split into multiple files.
$ ls dm6_seq* dm6_seq000.fa dm6_seq015.fa dm6_seq030.fa dm6_seq045.fa dm6_seq060.fa dm6_seq075.fa dm6_seq090.fa dm6_seq001.fa dm6_seq016.fa dm6_seq031.fa dm6_seq046.fa dm6_seq061.fa dm6_seq076.fa dm6_seq091.fa dm6_seq002.fa dm6_seq017.fa dm6_seq032.fa dm6_seq047.fa dm6_seq062.fa dm6_seq077.fa dm6_seq092.fa dm6_seq003.fa dm6_seq018.fa dm6_seq033.fa dm6_seq048.fa dm6_seq063.fa dm6_seq078.fa dm6_seq093.fa dm6_seq004.fa dm6_seq019.fa dm6_seq034.fa dm6_seq049.fa dm6_seq064.fa dm6_seq079.fa dm6_seq094.fa dm6_seq005.fa dm6_seq020.fa dm6_seq035.fa dm6_seq050.fa dm6_seq065.fa dm6_seq080.fa dm6_seq095.fa dm6_seq006.fa dm6_seq021.fa dm6_seq036.fa dm6_seq051.fa dm6_seq066.fa dm6_seq081.fa dm6_seq096.fa dm6_seq007.fa dm6_seq022.fa dm6_seq037.fa dm6_seq052.fa dm6_seq067.fa dm6_seq082.fa dm6_seq097.fa dm6_seq008.fa dm6_seq023.fa dm6_seq038.fa dm6_seq053.fa dm6_seq068.fa dm6_seq083.fa dm6_seq098.fa dm6_seq009.fa dm6_seq024.fa dm6_seq039.fa dm6_seq054.fa dm6_seq069.fa dm6_seq084.fa dm6_seq099.fa dm6_seq010.fa dm6_seq025.fa dm6_seq040.fa dm6_seq055.fa dm6_seq070.fa dm6_seq085.fa dm6_seq011.fa dm6_seq026.fa dm6_seq041.fa dm6_seq056.fa dm6_seq071.fa dm6_seq086.fa dm6_seq012.fa dm6_seq027.fa dm6_seq042.fa dm6_seq057.fa dm6_seq072.fa dm6_seq087.fa dm6_seq013.fa dm6_seq028.fa dm6_seq043.fa dm6_seq058.fa dm6_seq073.fa dm6_seq088.fa dm6_seq014.fa dm6_seq029.fa dm6_seq044.fa dm6_seq059.fa dm6_seq074.fa dm6_seq089.fa
$ faSplit base dm6_2L.fa 3 dm6_2L_base
The base mode works when there is only one record in the fasta file, and in the above example, faSplit
breaks up the input file into 3 files:
$ ls dm6_2L_base* dm6_2L_base0.fa dm6_2L_base1.fa dm6_2L_base2.fa
$ faSplit size dm6.fa 200000 dm6_200k
This breaks up dm6.fa into 200,000 base chunks. Sequences will be renamed as dm6_200kNNN
$ head dm6_200k* | head ==> dm6_200k000.fa <== >dm6_200k000 Cgacaatgcacgacagaggaagcagaacagatatttagattgcctctcat tttctctcccatattatagggagaaatatgatcgcgtatgcgagagtagt gccaacatattgtgctctttgattttttggcaacccaaaatggtggcgga tgaaCGAGATGATAATATATTCAAGTTGCCGCTAATCAGAAATAAATTCA TTGCAACGTTAAATACAGCACAATATATGATCGCGTATGCGAGAGTAGTG CCAACATATTGTGCTAATGAGTGCCTCTCGTTCTCTGTCTTATATTACCG CAAACCCAAAAAgacaatacacgacagagagagagagcagcggagatatt tagattgcctattaaatatgatcgcgtatgcgagagtagtgccaacatat
$ faSplit about dm6.fa 200000 dm6_200k_about
This will break up dm6.fa into files of about 200,000 bytes each by record (i.e. sequence from the same chromosome/contig will not be split into multiple files).
$ ls -s dm6_200k_about* | head 23424 dm6_200k_about00.fa 25192 dm6_200k_about01.fa 28004 dm6_200k_about02.fa 31956 dm6_200k_about03.fa 1344 dm6_200k_about04.fa 204 dm6_200k_about05.fa 204 dm6_200k_about06.fa 204 dm6_200k_about07.fa 208 dm6_200k_about08.fa 204 dm6_200k_about09.fa
faSplit byname dm6.fa dm6_chrs/
This breaks up dm6.fa using sequence names as file names. Notes:
$ tree dm6_chrs | head dm6_chrs ├── chr2L.fa ├── chr2R.fa ├── chr3L.fa ├── chr3R.fa ├── chr4.fa ├── chrM.fa ├── chrUn_CP007071v1.fa ├── chrUn_CP007072v1.fa ├── chrUn_CP007073v1.fa
$ faSplit gap chr2L.fa 2000000 chr2_gap
This breaks up chr2L.fa into files of at most 2,000,000 bases each, at gap boundaries if possible. If the sequence ends in N's, the last piece, if larger than 2,000,000, will be all one piece.
$ ls -s chr2_gap* 1996 chr2_gap00.fa 1996 chr2_gap02.fa 1996 chr2_gap04.fa 1996 chr2_gap06.fa 1996 chr2_gap08.fa 1996 chr2_gap10.fa 1996 chr2_gap01.fa 1996 chr2_gap03.fa 1996 chr2_gap05.fa 1996 chr2_gap07.fa 1996 chr2_gap09.fa 1508 chr2_gap11.fa