Sponsored Content
Top Forums Shell Programming and Scripting awk to output the percentage of a field compared to length Post 302956520 by cmccabe on Wednesday 30th of September 2015 04:10:17 PM
Old 09-30-2015
awk to output the percentage of a field compared to length

The awk below using the sample input would output the following: Basically, it averages the text in $5 that matches if $7 < 30 .
Code:
awk '{if(len==0){last=$5;total=$7;len=1;getline}if($5!=last){printf("%s\t%f\n", last, total/len);last=$5;total=$7;len=1}else{total+=$7;len+=1}}END{printf("%s\t%f\n", last, total/len)}' Input.txt > output.txt

Sample Input
Code:
chr 1   955542  955763  +   AGRN:exon.1 1   0 
chr1   955542  955763  +   AGRN:exon.1 2   0 
chr 1   955542  955763  +   AGRN:exon.1 3   0 
chr 1   955542  955763  +   AGRN:exon.1 4   1 
chr 1   955542  955763  +   AGRN:exon.1 5   1 
chr 1   955542  955763  +   AGRN:exon.1 6   1 
.... 
.... 
chr 1   955542  955763  +   AGRN:exon.1 218 32 
chr 1   955542  955763  +   AGRN:exon.1 219 32 
chr 1   955542  955763  +   AGRN:exon.1 220 32 
chr 1   955542  955763  +   AGRN:exon.1 221 29



Output

Code:
 AGRN:exon.1 4.5714285

My question is I can not seem to add the correct syntax that will also output the total # of lines in $6 that represent $5 and the % of 7 < 30 I know my words may not be all that helpful so hopefully the desired output will help. Thank you Smilie.


Desired output
Code:
  
ID             Average Reads      % of Baits 
AGRN:exon.1    4.5714285          3.16742     (221 (# of lines in $6 /   the # 0f lines < 30 in $7)


the boild is only to show the math and does not need rto be included.

Last edited by cmccabe; 09-30-2015 at 05:57 PM.. Reason: fixed formatting; [mod] extra code tags, added details
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

creating a fixed length output from a variable length input

Is there a command that sets a variable length? I have a input of a variable length field but my output for that field needs to be set to 32 char. Is there such a command? I am on a sun box running ksh Thanks (2 Replies)
Discussion started by: r1500
2 Replies

2. Shell Programming and Scripting

perl or awk, field length check

Hi Everyone, 1.txt a;1234;134;1111111 b;123;123;1111111 c;123;1334;1111111 d;1234;1234;1111111 output a;1234;134;1111111 c;123;1334;1111111 d;1234;1234;1111111 if field2 legth>3 or field3 length >3, then output. Please advice. Thanks (4 Replies)
Discussion started by: jimmy_y
4 Replies

3. Shell Programming and Scripting

awk output field delimiter

Dear All, 1.txt (tab in between each value in a line) a b c a b c a c d you can see below, why with ~ i can output with tab, but = cannot? # awk -F'\t' '$2 ~ /b/' 1 a b c a b c # awk -F'\t' '$2 = "b"' 1 a b c a b c a b d ... (1 Reply)
Discussion started by: jimmy_y
1 Replies

4. Shell Programming and Scripting

Flat file-make field length equal to header length

Hello Everyone, I am stuck with one issue while working on abstract flat file which i have to use as input and load data to table. Input Data- ------ ------------------------ ---- ----------------- WFI001 Xxxxxx Control Work Item A Number of Records ------ ------------------------... (5 Replies)
Discussion started by: sonali.s.more
5 Replies

5. UNIX for Dummies Questions & Answers

awk - output field separator

In awk, how do I print all fields with a specified output field separator? I have tried the following, which does not print the output FS: echo a b c d | awk 'BEGIN{OFS = ";"}{print $0}' (3 Replies)
Discussion started by: locoroco
3 Replies

6. Shell Programming and Scripting

Replace a field with a character as per the field length

Hi all, I have a requirement to replace a field with a character as per the length of the field. Suppose i have a file where second field is of 20 character length. I want to replace second field with 20 stars (*). like ******************** As the field is not a fixed one, i want to do the... (2 Replies)
Discussion started by: gani_85
2 Replies

7. Shell Programming and Scripting

Need an awk script to calculate the percentage of value field and replace

Need an awk script to calculate the percentage of value field and replace I have a input file called file.txt with the following content: john|622.5674603562933|8|br:1;cn:3;fr:1;jp:1;us:2 andy|0.0|12|**:3;br:1;ca:2;de:2;dz:1;fr:2;nl:1 in fourth filed of input file, calulate percentage of each... (1 Reply)
Discussion started by: veeruasu
1 Replies

8. UNIX for Dummies Questions & Answers

Need an awk script to calculate the percentage of value field and replace

I have a input file called file.txt with the following content: john|622.5674603562933|8|br:1;cn:3;fr:1;jp:1;us:2 andy|0.0|12|**:3;br:1;ca:2;de:2;dz:1;fr:2;nl:1 in fourth filed of input file, calulate percentage of each sub filed seperated by ; semicolon and replace value with percentage . i... (11 Replies)
Discussion started by: veeruasu
11 Replies

9. UNIX for Dummies Questions & Answers

Help with awk, where line length and field position are variable

I have several questions about using awk. I'm hoping someone could lend me a hand. (I'm also hoping that my questions make sense.) I have a file that contains pipe separated data. Each line has similar data but the number of fields and the field position on each line is variable. ... (3 Replies)
Discussion started by: Cheese64
3 Replies

10. Shell Programming and Scripting

Using awk to add length of matching characters between field in file

The awk below produces the current output, which will add +1 to $3. However, I am trying to add the length of the matching characters between $5 and $6 to $3. I have tried using sub as a variable to store the length but am not able to do so correctly. I added comments to each line and the... (4 Replies)
Discussion started by: cmccabe
4 Replies
BP_UNFLATTEN_SEQ(1p)					User Contributed Perl Documentation				      BP_UNFLATTEN_SEQ(1p)

NAME
unflatten_seq - unflatten a genbank or genbank-style feature file into a nested SeqFeature hierarchy SYNOPSIS
unflatten_seq.PLS -e 3 -gff ~/cvs/bioperl-live/t/data/AE003644_Adh-genomic.gb unflatten_seq.PLS --detail ~/cvs/bioperl-live/t/data/AE003644_Adh-genomic.gb unflatten_seq.PLS -i foo.embl --from embl --to chadoxml -o out.chado.xml unflatten_seq.PLS --notypemap --detail --to asciitree -ethresh 2 AE003644_Adh-genomic.gb DESCRIPTION
This script will unflatten a genbank or genbank-style file of SeqFeatures into a nested hierarchy. See Bio::SeqFeature::Tools::Unflattener In a GenBank/EMBL representation, features are 'flat' - for example, there is no link between an mRNA and a CDS, other than implicit links (eg via tags or via splice site coordinates) which may be hard to code for. This is most easily illustrated with the default output format, asciitree An unflattened genbank feature set may look like this (AB077698) Seq: AB077698 databank_entry 1..2701[+] gene mRNA CDS hCHCR-G 80..1144[+] exon 80..1144[+] five_prime_UTR 1..79[+] located_sequence_feature 137..196[+] located_sequence_feature 239..292[+] located_sequence_feature 617..676[+] located_sequence_feature 725..778[+] three_prime_UTR 1145..2659[+] polyA_site 1606..1606[+] polyA_site 2660..2660[+] Or like this (portion of AE003734) gene mRNA CG3320-RA CDS CG3320-PA 53126..54971[-] exon 52204..53323[-] exon 53404..53631[-] exon 53688..53735[-] exon 53798..53918[-] exon 54949..55287[-] mRNA CG3320-RB CDS CG3320-PB 53383..54971[-] exon 52204..53631[-] exon 53688..53735[-] exon 53798..53918[-] exon 54949..55287[-] The unflattening will also 'normalize' the containment hierarchy (in the sense of standardising it - e.g. making sure there is always a transcript record, even if genbank just specifies CDS and gene) By default, the GenBank types will be mapped to SO types See Bio::SeqFeature::Tools::TypeMapper COMMAND LINE ARGUMENTS
-i|input FILE input file (can also be specified as last argument) -from FORMAT input format (defaults to genbank) probably doesnt make so much sense to use this for non-flat formats; ie other than embl/genbank -to FORMAT output format (defaults to asciitree) should really be a format that is nested SeqFeature aware; I think this is only asciitree, chadoxml and gff3 -gff with export to GFF3 format (pre-3 GFFs make no sense with unflattened sequences, as they have no set way of representing feature graphs) -o|output FILE outfile defaults to STDOUT -detail show extra detail on features (asciitree mode only) -e|ethresh INT sets the error threshold on unflattening by default this script will throw a wobbly if it encounters weird stuff in the genbank file - raise the error threshold to signal these to be ignored (and reported on STDERR) -nomagic suppress use_magic in unflattening (see Bio::SeqFeature::Tools::Unflattener -notypemap suppress type mapping (see Bio::SeqFeature::Tools::TypeMapper TODO
Bio::SeqFeature::Tools::Unflattener allows fine-grained control over the unflattening process - need to add more options to allow this control at the command line FEEDBACK
Mailing Lists User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to the Bioperl mailing list. Your participation is much appreciated. bioperl-l@bioperl.org - General discussion http://bioperl.org/wiki/Mailing_lists - About the mailing lists Reporting Bugs Report bugs to the Bioperl bug tracking system to help us keep track of the bugs and their resolution. Bug reports can be submitted via email or the web: https://redmine.open-bio.org/projects/bioperl/ AUTHOR
Chris Mungall E<lt>cjm-at-bioperl.orgE<gt> perl v5.14.2 2012-03-02 BP_UNFLATTEN_SEQ(1p)
All times are GMT -4. The time now is 01:45 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy