Merging the unique values

final_result =
'Genes' 'T0&T2' 'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
'YAR029W' 'dd' 'uu' 'dd' 'uu' 'du'
'YBL095W' 'du' 'ud' 'ud' 'du' 'du'
'YBL111C' 'uu' 'uu' 'ud' 'ud' 'du'
'YBL113C' 'uu' 'uu' 'uu' 'ud' 'ud'
'YBR096W' 'uu' 'uu' 'ud' 'ud' 'dd'
'YBR138C' 'ud' 'ud' 'ud' 'du' 'du'
In these i have to find the genes having same variable(1st variable in each interval) for all the intervals for example
'YAR029W'has 'd'(1st variable) in interval 'T0&T2' ,in same interval i want to find which genes havibg variable'd',for example
'YBL095W','YBR138C',has value 'd'('d' may be 1sy or 2nd variable )
Same should be done for 2nd gene also in interval 'T0&T2'
'YBL111C' has 1st value 'u',the genes having 'u' must be displayed where , 'YBL113C''YBR096W','YBR138C' must be displayed
So i need output as
'Gene1' 'T0&T2'
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
;
;
'Gene3' 'T0&T2'
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
;
;
I have 1000 genes please help

 Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 24 de Jul. de 2012

0 votos

%i'm not sur if i've understood what you meant, but try this
a=final_result;[n,m]=size(a);B=a(2:end,1);
for k=2:m
A=a(2:end,k); C=[B A];
ent1={strcat('out',num2str(2*k-3)) char(a(1,k))};
ent2={strcat('out',num2str(2*k-2)) char(a(1,k))};
s{1,k-1} =[ ent1;C(cellfun(@(x)any(regexp(x,'d')),A),:)];
s{2,k-1}= [ ent2;C(cellfun(@(x)any(regexp(x,'u[u,d]')),A),:)];
disp(s{1,k-1});disp(s{2,k-1})
end

Más respuestas (3)

Andrei Bobrov
Andrei Bobrov el 23 de Jul. de 2012
Editada: Andrei Bobrov el 24 de Jul. de 2012

0 votos

EDIT
final_result = {...
'Genes' 'T0&T2' 'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
'YAR029W' 'dd' 'uu' 'dd' 'uu' 'du'
'YBL095W' 'du' 'ud' 'ud' 'du' 'du'
'YBL111C' 'uu' 'uu' 'ud' 'ud' 'du'
'YBL113C' 'uu' 'uu' 'uu' 'ud' 'ud'
'YBR096W' 'uu' 'uu' 'ud' 'ud' 'dd'
'YBR138C' 'ud' 'ud' 'ud' 'du' 'du' };
fr = final_result(2:end,1:2);
frd = fr(cellfun(@(x)any(ismember(x,'d'),2),fr(:,2)),:);
fru = fr(cellfun(@(x)strcmp(x(1),'u'),fr(:,2)),:);
out = [arrayfun(@(x)frd([1,x:end],:),(2:size(fru,1)-1)','un',0);...
arrayfun(@(x)fru([x:end],:),(1:size(fru,1)-1)','un',0)];

3 comentarios

Pat
Pat el 23 de Jul. de 2012
Andrei as per your code i get output as
out =
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
but i need output as
out1(1st gene)
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
out2
'YAR029W' 'dd'
'YBR138C' 'ud'
out3
;
;
out4;
;
;
out5
'YBR096W' 'uu'
'YBR138C' 'ud'
please help
Jan
Jan el 23 de Jul. de 2012
I do not understand the format of your output. Should "out1", "out2" be separate variables? What are the "; ;" exactly - an [2 x 0] cell string?
Andrei Bobrov
Andrei Bobrov el 24 de Jul. de 2012
Answer was edited.

Iniciar sesión para comentar.

Azzi Abdelmalek
Azzi Abdelmalek el 23 de Jul. de 2012
Editada: Azzi Abdelmalek el 23 de Jul. de 2012

0 votos

combining with Andrei answer:
a=final_result;[n,m]=size(a);B=a(2:end,1);
for k=2:m
A=a(2:end,k);
s{1,k-1} = [ [char(a(1,k)) '/gen1']; B(cellfun(@(x)any(regexp(x,'d')),A),:)];
s{2,k-1}= [[char(a(1,k)) '/gen3'] ;B(cellfun(@(x)any(regexp(x,'u[u,d]')),A),:)];
disp(s{1,k-1});disp(s{2,k-1})
end

1 comentario

Pat
Pat el 24 de Jul. de 2012
Azzi i cannot understand the output of your code ,but i need the output as
out1(1st gene) 'T0&T2'
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
out2(2nd gene)
'YAR029W' 'dd'
'YBR138C' 'ud'
out3
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out4;
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out5
'YBR096W' 'uu'
'YBR138C' 'ud'
The 1st column is the Genes and the 2nd is Interval

Iniciar sesión para comentar.

per isakson
per isakson el 24 de Jul. de 2012
Editada: per isakson el 24 de Jul. de 2012

0 votos

This code
for ii = 2 : 6
out = cell(0,2);
first_character = final_result{ ii, 2 }(1);
for jj = ii : 7
if ismember( first_character, final_result{ jj, 2 } )
out = cat( 1, out, final_result( jj, 1:2 ) );
end
end
out
end
prints
out =
'YAR029W' 'dd'
'YBL095W' 'du'
'YBR138C' 'ud'
out =
'YBL095W' 'du'
'YBR138C' 'ud'
out =
'YBL111C' 'uu'
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out =
'YBL113C' 'uu'
'YBR096W' 'uu'
'YBR138C' 'ud'
out =
'YBR096W' 'uu'
'YBR138C' 'ud'
>>
The columns
'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6'
are confusing.
.
You write:
out2(2nd gene)
'YAR029W' 'dd'
'YBR138C' 'ud'
is that in accordance with your requirements?

2 comentarios

Pat
Pat el 24 de Jul. de 2012
Thanks a lot per isakson, The columns
'T1&T3' 'T2&T4' 'T3&T5' 'T4&T6' has to be prossed another operation i have given out1,out2 because these has to be processed further for another operations
per isakson
per isakson el 24 de Jul. de 2012
Editada: per isakson el 24 de Jul. de 2012
I guessed that regarding the columns, but still not including them here would have made it easier to read the question.
You know, I cannot assign the result to out1, out2, etc. That would have made Jan and Walter very disappointed with me:) See the FAQ.

Iniciar sesión para comentar.

Categorías

Más información sobre Sparse Matrices en Centro de ayuda y File Exchange.

Preguntada:

Pat
el 23 de Jul. de 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by