Calculating average contig length, excluding Ns
I have a fasta file of assembled contigs that have Ns in them plus IAPUC codes. I want to calculate the average contig length in the fasta file, excluding Ns.
here is a snippet of the fasta file:
>uce-4216_species1 |uce-4216
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGTGGTTCTGAGATGCCTGGCATTCAGGATGATTTGTAATGTAAATTATATAATTGTACTTTCACATATTTTAACATCAAATAGAATGATTGACTACAGAATTTGAGCTGTCTACAGGTGGGGGTCAATTATCATCTGAATAATCACACTGCCACACAAGAATAGCATGGCCATGGAGTGTGACATATTTTTATCTCTATGCATTTCAATGAAGTCAGCCTGGTACATAAAAGGTTATCACCTAGGAAACATATTTTCCTAAGCACAAGTTAAACATGCAAGCAAGATCAGCATAGATATTCAATTTAGCCAGTCAACCCTAACCTATTAATATTTTAACAAAATCCAGTGAGGATAATTTTTTTCTTTGATCCCATCTCATTTGAGCAGCCTGGAAAGGGAAGAAAAATTAAAAACAAAATAGTCAAGCATACAGAATGAGGTTATGTATTAAGTGGGCTATTTAATGTTTTTGGCATATTATAGCCCTAGGGAAAGTGTGGATGGATTTAACAATCAAGATCTGTGTTCCCTGGGCCCACAAAGTTCGAGAAACATAAAATAATCTATACTTCCGAGCTGACAAATCTTACCTGACACACTGCTTCATCTCACTGGGACTCTCTAGCTCAGCATTAATCATATGTTACAGGGAGTAAAAAGAAAAGTAAATCACACTAAGCTGGAATG
>uce-4175_species1 |uce-4175
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGGTGAAATTAAGCTTGCTATTTTTCTGTCACACATATAGATACAGTCAAAGCTTGTTTGATGATAAGAACTCAGTTCAGGATCTCATCTTTTGCCCTTGGCTTTAACTTATGTATGCCTTTGTCTGTATTGTCTGTACTTGTCTGTACTGCAAACACTTATGCATGTTTCTGCTATTATATATAGACTAAATATGTCATAACACATGAATGCAAAAGGATCAAAAATGCCTTCCTACTTTATAATCTGCTCAGCCAGAAACAGACTCTGTTTCTACCCTGCCTTTTCCTACATGTCATATTATCATCAGCTGCTCTTATATCCCAAAAGAATACTAACTACTGATCGATTGCCYGGACATGTCTGGCCGTGGCCTACATGTGCCCCGGGTAGTTCATTTATTTGCCACGGTGGATTTGCTAGAGTGGAATTTAATCAATAGCTAATTCATTAATTCTGGTCCTCGAGTATATAGGGATTGTGCAGTATAAAAATGACTGGCTGGCTTCAGCTTTGATTGAAATATGACAAACACTGCAGCTGACAGCCTTGGCAGTTGCCAGGCTGAATATGAATTTTGCTTATNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTTGTTGCTGCAGAGATTAGAAAAGTTTAAAGAAACCTTTGGGTTGTTTTGCCA
>uce-1234_species1 |uce-1234
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNGTCNCAGAGGGGAATGCAGAATTGAGAAGTATCATTCCTAAACCTTGACAACCTTTCATCAGGCAAGTGATAAGGAATTGCATGTGTGGAGTACAGGCAGGTTCTCTTCTTGCTGTAGAGGATTTCCACCAGTGCCTGTGTTCTTGTTGAGTAATAATGAGATACCATAATGAAACAGTAGAAGATGGTTCTCCAATAACATTAGGAAAAAAGCAGCTGATGTATGGGATATTGAAGGCAGATTATGTTGTTAATGTATATTAGTATATTCTTAATTTCCTTTTAATTGAAAAAGACATATTGACTTTAATTAAAATCATTTCACAGGAACTGTCAATTAGCACATGTCAAACTAGTTAATTCAGAACAGAATTCTTTTAATTAGGGTCTGCTTTCCTTTAACTGTGGGGCCAATGAAATCAGCCTTTCCTTATCAAGACTTTAAATGTCTCTAAGAAATACAATACAAATCTCTAAAAACTCTTATCTATTATTAGAATCCCATATGGATAACATTAAAATRRTSKTKCTKSMAWKSYWYMWKYYWCMKKWWTYWKWKYYWMMTWKMYRKMWAKKWRRMWMWRAWWMMKGWR
>uce-2732_species1 |uce-2732
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNTGAATTTAGTTTTCTGCTACTGATCTGTTTGTACATGATCTCTCCCTTTCCCCCCCTCCCTTTCTCTTTCCCCCTCTCTCTCGCTCTCTTTCATATTTAATGTCTGCGTATNNNNNNNNNNNGGATGTACTTTGTCATTTTAAGGTAATTGCGATTTCTCTCAGAATAMMRRSMWMRSMTYANTNMTAANSYKAGSCTGGTATGTGGCTAACTGAAATGCAAAAGGAAGAAGAGGCTTTTTTTTTTTTTTAAGGGGTGGGGGAGAGTTAATTTCCACATTGACATTTTGGAGATACAAATGCAGAGCAAAATCCTTGGGGGGGGGTGTNNNNNNNNNNNNNNNNNNNNNNNNNGATTGGTAATTTTCTTTTTGGTGGACTGCGCAATAGGTATGGTAATTTTAAAAGAGGGTGATTTATATGAGCTTCAGTAAATGCTGCATATTGTATTTCAAAGAGTTTCCTGTCGTGACCTCATAAAAAGAGGAGGAGGCTTGTATGTGTTGCAGTGCCTAGTATATGTCGATTTTGTTGCATCGTTGGGCAGCAGCGCTGTAAGAAGGAATGTCAGCTTTTACATAACGCTCTTTTTGCTTTTGACTCTGTGAGGGGCTGTAAGGGTCCATCTTTGTGATCACAGATGGAGTGGAATGGCTTGAAAATGGTAAGTGAACGGGGAGAGCCTGCTCGTGGGGTTTTGTCTCG
• 1,124 views
•
link
1 answer
Here's one solution:
grep -v '^>' file.fasta | sed 's/N//g' | awk '{print length}' | awk '{sum += $0; n++}END{if(n>0) print sum/n;}'
This code removes the header lines, removes Ns, calculates the length of each line, and then takes the average.
• 0 views
•
link
Log in to answer this question.