<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?action=history&amp;feed=atom&amp;title=Reparaci%C3%B3n_de_redes_metab%C3%B3licas_%28c%C3%B3digo%29</id>
	<title>Reparación de redes metabólicas (código) - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?action=history&amp;feed=atom&amp;title=Reparaci%C3%B3n_de_redes_metab%C3%B3licas_%28c%C3%B3digo%29"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Reparaci%C3%B3n_de_redes_metab%C3%B3licas_(c%C3%B3digo)&amp;action=history"/>
	<updated>2026-09-21T03:39:51Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Reparaci%C3%B3n_de_redes_metab%C3%B3licas_(c%C3%B3digo)&amp;diff=253&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;prolog&quot;&gt; % Red Regulatoria Genética % Tenemos una serie de genes y sus interacciones representado por un grafo de influencia G=(N,E,s) dónde los vértices…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LCyTM2018/index.php?title=Reparaci%C3%B3n_de_redes_metab%C3%B3licas_(c%C3%B3digo)&amp;diff=253&amp;oldid=prev"/>
		<updated>2020-02-12T12:11:47Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt; % Red Regulatoria Genética % Tenemos una serie de genes y sus interacciones representado por un grafo de influencia G=(N,E,s) dónde los vértices…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang = &amp;quot;prolog&amp;quot;&amp;gt;&lt;br /&gt;
% Red Regulatoria Genética&lt;br /&gt;
% Tenemos una serie de genes y sus interacciones representado por un grafo de influencia G=(N,E,s) dónde los vértices N son los genes, las aristas E son las interacciones y s:E--&amp;gt;{-,+} una función parcial.&lt;br /&gt;
% Tenemos una serie de datos experimentales que sabemos ciertos y queremos imponer que nuestro modelo los cumpla. No solo esto, sino que a ser posible buscamos encontrar el menor número de pasos necesario para modificar nuestro modelo y convertirlo en uno consistente.&lt;br /&gt;
&lt;br /&gt;
% Importante!!!&lt;br /&gt;
% El grafo G es dirigido y debe cumplir que si (u,v) es una arista, entonces el producto signo(u)*signo(u,v)=signo(v).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Predicados %%&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% vertice(X): X es un vértice.&lt;br /&gt;
% arco(X,Y): G tiene un arco de X en Y.&lt;br /&gt;
% entrada(X): X es un vértice de entrada.&lt;br /&gt;
% signoV(X,S): El modelo tiene signo S en el vértice X.&lt;br /&gt;
% signoA(X,Y,S): El modelo tiene signo S en el arco de X a Y.&lt;br /&gt;
% observadoV(X,S): Se ha observado que el vértice X tiene signo S.&lt;br /&gt;
% observadoA(X,Y,S): Se ha observado que el arco de X a Y tiene signo S.&lt;br /&gt;
&lt;br /&gt;
% Definimos los signos&lt;br /&gt;
signo(mas;menos).&lt;br /&gt;
&lt;br /&gt;
% Añadimos que son opuestos para hacer el &amp;quot;producto&amp;quot; de signos&lt;br /&gt;
opuesto(mas,menos).&lt;br /&gt;
opuesto(menos,mas).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Generación %%&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Asignar signos a arcos y vértices para nuestros múltiples modelos:&lt;br /&gt;
1 {signoV(V,S): signo(S)} 1 :- vertice(V).&lt;br /&gt;
1 {signoA(U,V,S): signo(S)} 1 :- arco(U,V).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Restricciones %%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Si se observa un signo en un vértice, debe aparecer en el modelo:&lt;br /&gt;
signoV(V,S) :- observadoV(V,S).&lt;br /&gt;
&lt;br /&gt;
% Si se observa un signo en un arco, debe aparecer en el modelo siempre que sea consistente:&lt;br /&gt;
signoA(U,V,S) :- observadoA(U,V,S), not error(U,V).&lt;br /&gt;
signoA(U,V,S) :- observadoA(U,V,T), opuesto(S,T), error(U,V).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%&lt;br /&gt;
%% Signo %% &lt;br /&gt;
%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Si tenemos un arco (u,v), entonces signo(u)*signo(u,v)=signo(v):&lt;br /&gt;
resultado(V,mas) :- arco(U,V), signoA(U,V,S), signoV(U,S).&lt;br /&gt;
resultado(V,menos) :- arco(U,V), signoA(U,V,T), signoV(U,S), opuesto(S,T).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Consistencia %%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% No podemos tener un vértice que no sea añadido (entrada) y le asignemos un signo sin una razón (resultado):&lt;br /&gt;
:- signoV(U,S), not resultado(U,S), not entrada(U).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Generación de arcos erroneos %%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Hacemos partes de E para considerar todas las posibilidades:&lt;br /&gt;
{error(U,V)} :- arco(U,V).&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Optimización %%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
%errores(N) :- N = #count{1 : error(U,V)}.&lt;br /&gt;
&lt;br /&gt;
%#minimize{1,U,V : error(U,V)}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%% Visualización %%&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%#show error/2.&lt;br /&gt;
#show signoV/2.&lt;br /&gt;
#show signoA/3.&lt;br /&gt;
%#show resultado/2.&lt;br /&gt;
&lt;br /&gt;
% Paso a realizar:&lt;br /&gt;
% 1. Generar un modelo&lt;br /&gt;
		% Simplemente comentamos la sección de optimización.&lt;br /&gt;
% 2. Añadir observaciones distintas&lt;br /&gt;
		% En función del modelo jugamos con cambiar algún signo.&lt;br /&gt;
% 3. Estudiar el número de modificaciones necesarias.&lt;br /&gt;
% 4. Es interesante escoger un subconjunto del modelo y ver si hay varias soluciones&lt;br /&gt;
		% Para ello debemos imponer un solo resultado por vertice.&lt;br /&gt;
&lt;br /&gt;
:- signo(S), opuesto(S,T), vertice(V),&lt;br /&gt;
	 resultado(V,S), resultado(V,T).&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>