def unrelated_model(modelWh, modelPu): 'model mom, dad, child as independent' pstate = model.VarFilterState('Pu', modelPu) wstate = model.VarFilterState('Wh', modelWh) prior = model.StateGraph({'START': {pstate: 0.9, wstate: 0.1}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ pstate: { stop: 1. }, wstate: { stop: 1. }, robomendel.noneState: { stop: 1. } }) dg = model.DependencyGraph({ 'START': { 'mom': prior, 'dad': prior, 'child': prior }, 'mom': { 'STOP': term }, 'dad': { 'STOP': term }, 'child': { 'STOP': term } }) return dg
def mixture_model2(modelWh, modelPu): 'model process as single species, with mixture emission, supports multiple matingID' mixModel = get_mix_model(modelWh, modelPu) peaSpecies = model.VarFilterState('pea', mixModel) prior = model.StateGraph({'START': {peaSpecies: 1.0}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ peaSpecies: { stop: 1. }, robomendel.noneState: { stop: 1. } }) sct = robomendel.SpeciesCrossTransition() moms = model.BranchGenerator('mom', prior, iterTag='matingID') dads = model.BranchGenerator('dad', prior, iterTag='matingID') dg = model.DependencyGraph( { 'START': { moms: {}, dads: {} }, ('mom', 'dad'): { 'child': sct }, 'child': { 'STOP': term } }, joinTags=('matingID', )) return dg
def mixture_model(modelWh, modelPu): 'model process as single species, with mixture emission' mixModel = get_mix_model(modelWh, modelPu) peaSpecies = model.VarFilterState('pea', mixModel) prior = model.StateGraph({'START': {peaSpecies: 1.0}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ peaSpecies: { stop: 1. }, robomendel.noneState: { stop: 1. } }) sct = robomendel.SpeciesCrossTransition() dg = model.DependencyGraph({ 'START': { 'mom': prior, 'dad': prior }, ('mom', 'dad'): { 'child': sct }, 'child': { 'STOP': term } }) return dg
def multicond_setup(modelWh, modelPu, pHybrid=0.): pstate = model.VarFilterState('Pu', modelPu) wstate = model.VarFilterState('Wh', modelWh) prior = model.StateGraph({'START': {pstate: 0.9, wstate: 0.1}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ pstate: { stop: 1. }, wstate: { stop: 1. }, robomendel.noneState: { stop: 1. } }) sct = robomendel.SpeciesCrossTransition(pHybrid=pHybrid) return pstate, wstate, prior, stop, term, sct
def unrelated_model2(modelWh, modelPu): 'model mom, dad, child as independent, supports multiple matingID' pstate = model.VarFilterState('Pu', modelPu) wstate = model.VarFilterState('Wh', modelWh) prior = model.StateGraph({'START': {pstate: 0.9, wstate: 0.1}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ pstate: { stop: 1. }, wstate: { stop: 1. }, robomendel.noneState: { stop: 1. } }) moms = model.BranchGenerator('mom', prior, iterTag='matingID') dads = model.BranchGenerator('dad', prior, iterTag='matingID') kids = model.BranchGenerator('child', prior, iterTag='matingID') dg = model.DependencyGraph( { 'START': { moms: {}, dads: {}, kids: {} }, 'mom': { 'STOP': term }, 'dad': { 'STOP': term }, 'child': { 'STOP': term } }, joinTags=('matingID', )) return dg
def environmental_model(modelWh, modelPu): 'model wh / pu as random extrinsic variable' def filter_from_node(fromNode, *args): return dict(var=fromNode.var.label) pstate = model.VarFilterState('Pu', modelPu, filter_f=filter_from_node) wstate = model.VarFilterState('Wh', modelWh, filter_f=filter_from_node) peaSpecies = model.SilentState('pea') prior = model.StateGraph({'START': {peaSpecies: 1.}}) extSG = model.StateGraph({peaSpecies: {pstate: 0.9, wstate: 0.1}}) stop = model.StopState(useObsLabel=False) term = model.StateGraph({pstate: {stop: 1.}, wstate: {stop: 1.}}) sct = robomendel.SpeciesCrossTransition() dg = model.DependencyGraph({ 'START': { 'mom': prior, 'dad': prior }, 'mom': { 'ext': extSG }, 'dad': { 'ext': extSG }, ('mom', 'dad'): { 'child': sct }, 'child': { 'ext': extSG }, 'ext': { 'STOP': term } }) return dg
def environmental_model2(modelWh, modelPu): 'model wh / pu as random extrinsic variable, supports multiple matingID' def filter_from_node(fromNode, *args): return dict(var=fromNode.var.label) pstate = model.VarFilterState('Pu', modelPu, filter_f=filter_from_node) wstate = model.VarFilterState('Wh', modelWh, filter_f=filter_from_node) peaSpecies = model.SilentState('pea') prior = model.StateGraph({'START': {peaSpecies: 1.}}) noSpecies = model.SilentState('no-species') extNone = model.VarFilterState('ext-none', model.EmissionDict({None: 1.}), filter_f=filter_from_node) extSG = model.StateGraph({ peaSpecies: { pstate: 0.9, wstate: 0.1 }, noSpecies: { extNone: 1. } }) stop = model.StopState(useObsLabel=False) term = model.StateGraph({ pstate: { stop: 1. }, wstate: { stop: 1. }, extNone: { stop: 1. } }) sct = robomendel.SpeciesCrossTransition(noneState=noSpecies) moms = model.BranchGenerator('mom', prior, iterTag='matingID') dads = model.BranchGenerator('dad', prior, iterTag='matingID') dg = model.DependencyGraph( { 'START': { moms: {}, dads: {} }, 'mom': { 'ext': extSG }, 'dad': { 'ext': extSG }, ('mom', 'dad'): { 'child': sct }, 'child': { 'ext': extSG }, 'ext': { 'STOP': term } }, joinTags=('matingID', )) return dg