Convert rows to columns based on condition


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Convert rows to columns based on condition
# 8  
Old 08-15-2013
Try to rename the file to txt, like file.bin -> file.txt

---------- Post updated at 14:46 ---------- Previous update was at 13:38 ----------

I do see several problems.
1. Lines becomes very long so they are wrapped on the screen. Should be no problem since field are tab separated.
2. Your data is not unique. I do store everything into array based on GN name, and since they are not unique this may mess things up.
Code:
GN   Name=HLA-A; Synonyms=HLAA;
RC   TISSUE=Blood;
CC   -!- FUNCTION: Involved in the presentation of foreign antigens to the
CC       immune system.
GN   Name=HLA-A; Synonyms=HLAA;
RC   TISSUE=Blood;
RC   TISSUE=Blood;
RC   TISSUE=Platelet;
CC   -!- FUNCTION: Involved in the presentation of foreign antigens to the
CC       immune system.

As you see here two section describing the same GN, but have different TISSUE
And as you see TISSUE do also have duplicate within one section.

To solve this I may make a script doing section by section, and not all in one array.
# 9  
Old 08-15-2013
Which is the GN name you are looking for? what about Synonyms?
Tissue is not identical, do you want only the uniqe ones or all of them?

--ahamed
# 10  
Old 08-16-2013
There are many isoforms so tissue field may not be identical even if they have same gene name. I want all (only if we consider gene names they appear to be duplicates but when we see other fields there would be some difference). synonyms are also needed sorry for not mentioning that earlier it would be better if it contains following fields
Code:
"GN","synonyms","TISSUE","FUNCTION"

# 11  
Old 08-16-2013
For the sample file you have provided, paste the expected output for first 3 set.

--ahamed
# 12  
Old 08-16-2013
sample output

I made it in .xls format so that the fields would be clearly seperated from each other. please see to it
# 13  
Old 08-16-2013
Try this
Code:
awk '
	/^GN/ {split($0,a,"[=;]");printf "\n%s|",a[2]}
	/^RC/ {split($0,a,"=");printf a[2];f=1}
	/^CC/ {if (f) {printf "|"};sub(/-!- FUNCTION:/,x);split($0,a,"  +");printf "%s ",a[2];f=0}
END {print ""}' uniprot_human_prts_with_tissue_fn

Every field is now separated by |, in TISSUE its separated by ;
What should we do with the Synonyms field? Print it, where?

3 first line:
Code:
YWHAB|Keratinocyte;Thymus;Skin;Colon carcinoma;Platelet;Melanoma;Leukemic T-cell;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner. Negative regulator of osteogenesis. Blocks the nuclear translocation of the phosphorylated form (by AKT1) of SRPK2 and antagonizes its stimulatory effect on cyclin D1 expression resulting in blockage of neuronal apoptosis elicited by SRPK2.
YWHAE|Liver;Brain;Heart;Caudate nucleus, Heart, and Subthalamic nucleus;Placenta;Platelet;B-cell lymphoma;Histiocytic lymphoma;Brain, and Cajal-Retzius cell;Melanoma;Liver;Cervix carcinoma;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner.
YWHAH|Brain;Brain;Lymph;Keratinocyte;Platelet;Platelet;Leukemic T-cell;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner. Negatively regulates the kinase activity of PDPK1.


EDIT: Here synonyms are printed behind original like: YWHAH-YWHA1
Code:
awk '
	/^GN/ {split($0,a,"[=;]");p=(a[4])?a[2]"-"a[4]:a[2];printf "\n%s|",p}
	/^RC/ {split($0,a,"=");printf a[2];f=1}
	/^CC/ {if (f) {printf "|"};sub(/-!- FUNCTION:/,x);split($0,a,"  +");printf "%s ",a[2];f=0}
END {print ""}' uniprot_human_prts_with_tissue_fn

Code:
YWHAB|Keratinocyte;Thymus;Skin;Colon carcinoma;Platelet;Melanoma;Leukemic T-cell;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner. Negative regulator of osteogenesis. Blocks the nuclear translocation of the phosphorylated form (by AKT1) of SRPK2 and antagonizes its stimulatory effect on cyclin D1 expression resulting in blockage of neuronal apoptosis elicited by SRPK2.
YWHAE|Liver;Brain;Heart;Caudate nucleus, Heart, and Subthalamic nucleus;Placenta;Platelet;B-cell lymphoma;Histiocytic lymphoma;Brain, and Cajal-Retzius cell;Melanoma;Liver;Cervix carcinoma;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner.
YWHAH-YWHA1|Brain;Brain;Lymph;Keratinocyte;Platelet;Platelet;Leukemic T-cell;|Adapter protein implicated in the regulation of a large spectrum of both general and specialized signaling pathways. Binds to a large number of partners, usually by recognition of a phosphoserine or phosphothreonine motif. Binding generally results in the modulation of the activity of the binding partner. Negatively regulates the kinase activity of PDPK1.


Last edited by Jotne; 08-16-2013 at 02:48 AM..
This User Gave Thanks to Jotne For This Post:
# 14  
Old 08-16-2013
Thats exactly what i needed
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert rows to columns based on key and count

Team, I am having requirement to convert rows to columns Input is: key ,count, id1, pulse1, id2, pulse2 ,id3, pulse3 12, 2 , 14 , 56 , 15, 65 13, 3, 12, 32, 14, 23, 18, 54 22, 1 , 32, 42 Expected Out put: key, id,pulse 12, 14, 56 12, 15, 65 13 ,12, 32 13, 14 ,23 13, 18 ,54 22 ,32,... (3 Replies)
Discussion started by: syam1406
3 Replies

2. Shell Programming and Scripting

Convert rows to columns

hi folks, I have a sample data like what is shown below: 1,ID=1000 1,Org=CedarparkHospital 1,cn=john 1,sn=doe 1,uid=User001 2,uid=User002 2,ID=2000 2,cn=steve 2,sn=jobs 2,Org=Providence I would like to convert it into the below format: 1,1000,CedarparkHospital,john,doe,User001... (11 Replies)
Discussion started by: vskr72
11 Replies

3. Shell Programming and Scripting

Columns to Rows - Transpose - Special Condition

Hi Friends, Hope all is well. I have an input file like this a gene1 10 b gene1 2 c gene2 20 c gene3 10 d gene4 5 e gene5 6 Steps to reach output. 1. Print unique values of column1 as column of the matrix, which will be a b c (5 Replies)
Discussion started by: jacobs.smith
5 Replies

4. Shell Programming and Scripting

Convert rows to columns

I am looking to print the data in columns and after every 3 words it should be a new row. cat example.out | awk 'END { for (i = 0; ++i < m;) print _;print _ }{ _ = _ x ? _ OFS $1 : $1}' m=1| grep -i INNER I am looking to print in a new line after every 3 words. ... (2 Replies)
Discussion started by: lazydev
2 Replies

5. Shell Programming and Scripting

Extracting rows and columns in a matrix based on condition

Hi I have a matrix with n rows and m columns like below example. i want to extract all the pairs with values <200. Input A B C D A 100 206 51 300 B 206 100 72 48 C 351 22 100 198 D 13 989 150 100 Output format A,A:200 A,C:51 B,B:100... (2 Replies)
Discussion started by: anurupa777
2 Replies

6. Shell Programming and Scripting

How to Convert rows in to columns?

Hi Gurus, How to convert rows in to columns using linux shell scripting Input is like (sample.txt) ABC DEF GHI JKL MNO PQR STU VWX YZA BCD output should be (sampleoutput.csv) ABC,DEF,GHI,JKL,MNO PQR,STU,VWX,YZA,BCD (2 Replies)
Discussion started by: infasriniit
2 Replies

7. Shell Programming and Scripting

Convert few columns to rows

Hi! Does anybody help me in converting following data: INPUT looks like this: 20. 100. 30 200. 40. 400. 50. 100. 60. 200. 70. 400. 80. 200. 150. 210. 30. 100. OUTPUT should look like this: 20. 100. 30 200. 40. 400. 50. 100. 60. 200. 70.... (5 Replies)
Discussion started by: lovelinux
5 Replies

8. Shell Programming and Scripting

convert rows to columns

hi, i have the file as below: abc def ghi jkl i want the output as abc,def,ghi,jki please reply, Thanks (4 Replies)
Discussion started by: namitai
4 Replies

9. Shell Programming and Scripting

convert columns into rows

hi, Apologies if this has been covered. I have requirement where i have to convert a single column into multiple column. My data will be like this - 2 3 4 5 6 Output required - 2 3 4 5 6 (1 Reply)
Discussion started by: Nishithinfy
1 Replies

10. Shell Programming and Scripting

how to convert columns to rows

Hi, I need a shell script for below requirement Input file P1 - 173310 P2 - 173476 P3 - 173230 P4 - 172737 P1 - 173546 P2 - 173765 P3 - 173876 P4 - 172989 Out put file P1 173310 173546 P2 173476 173765 P3 173230 173876 P4 172737 172989 Suresh (6 Replies)
Discussion started by: suresh3566
6 Replies
Login or Register to Ask a Question