amachine.am_create.am_structured_isomorphic_permutations
1from typing import Literal 2 3from ..am_hmm import HMM 4from ..am_structured_symbol_set import StructuredSymbolSet 5from ..am_id_generator import next_group_id 6 7from .am_random_structured import random_structured 8from .am_structured_isomorphic_permutations_of import structured_isomorphic_permutations_of 9 10import numpy as np 11 12def structured_isomorphic_permutations( 13 n_states : int, 14 symbol_set : StructuredSymbolSet, 15 connectedness : float, 16 randomness : float, 17 n_permutations : int, 18 permutation_group : Literal[ "cyclic_product", "symmetric" ] = "symmetric", 19 selection_mode : Literal[ "sequential", "random", "cohesive" ] = "cohesive", 20 invariant_categories : set[int] | None = None, 21 np_rng : np.random.Generator | None = None ) -> tuple[ list[HMM], str ]: 22 23 group_id = next_group_id() 24 25 m = random_structured( 26 n_states=n_states, 27 symbol_set=symbol_set, 28 connectedness=connectedness, 29 randomness=randomness, 30 ensure_strongly_connected=True, 31 ensure_minimal=True, 32 np_rng=np_rng 33 ) 34 35 permutations = structured_isomorphic_permutations_of( 36 m=m, 37 symbol_set=symbol_set, 38 n_permutations=n_permutations, 39 permutation_group=permutation_group, 40 selection_mode=selection_mode, 41 invariant_categories=invariant_categories, 42 np_rng=np_rng 43 ) 44 45 return ( permutations, group_id )
def
structured_isomorphic_permutations( n_states: int, symbol_set: amachine.am_structured_symbol_set.StructuredSymbolSet, connectedness: float, randomness: float, n_permutations: int, permutation_group: Literal['cyclic_product', 'symmetric'] = 'symmetric', selection_mode: Literal['sequential', 'random', 'cohesive'] = 'cohesive', invariant_categories: set[int] | None = None, np_rng: numpy.random._generator.Generator | None = None) -> tuple[list[amachine.am_hmm.HMM], str]:
13def structured_isomorphic_permutations( 14 n_states : int, 15 symbol_set : StructuredSymbolSet, 16 connectedness : float, 17 randomness : float, 18 n_permutations : int, 19 permutation_group : Literal[ "cyclic_product", "symmetric" ] = "symmetric", 20 selection_mode : Literal[ "sequential", "random", "cohesive" ] = "cohesive", 21 invariant_categories : set[int] | None = None, 22 np_rng : np.random.Generator | None = None ) -> tuple[ list[HMM], str ]: 23 24 group_id = next_group_id() 25 26 m = random_structured( 27 n_states=n_states, 28 symbol_set=symbol_set, 29 connectedness=connectedness, 30 randomness=randomness, 31 ensure_strongly_connected=True, 32 ensure_minimal=True, 33 np_rng=np_rng 34 ) 35 36 permutations = structured_isomorphic_permutations_of( 37 m=m, 38 symbol_set=symbol_set, 39 n_permutations=n_permutations, 40 permutation_group=permutation_group, 41 selection_mode=selection_mode, 42 invariant_categories=invariant_categories, 43 np_rng=np_rng 44 ) 45 46 return ( permutations, group_id )