amachine.am_create.am_random_structured_composition
1from ..am_hmm import HMM 2from ..am_structured_symbol_set import StructuredSymbolSet 3from .am_structured_isomorphic_rotation import structured_isomorphic_rotation 4from .am_structured_composition import structured_composition 5 6def random_structured_composition( 7 composition_id : str, 8 composition_rigidity : float, 9 instances_per_component : int, 10 composition_connectivity_factor : float, 11 component_repetition_pentalty : float, 12 component_residency_factor : float, 13 component_sizes : list[int], 14 component_connectedness : list[float], 15 component_randomness : list[float], 16 symbol_set : StructuredSymbolSet, 17 end_of_component_symbols : set[str], 18 max_search_time : int = 60, 19 random_seed : int | None = None 20) -> HMM : 21 22 all_components : dict[str,list[am.HMM] ] = {} 23 component_instance_counts : dict[str,list[int]] = {} 24 25 for iso_idx, component_size in enumerate( component_sizes ) : 26 27 iso_id = f"{iso_idx}" 28 29 all_components[ iso_id ] = structured_isomorphic_rotation( 30 isoclass_name=f"c{composition_id}.{iso_idx}", 31 n_states=component_size, 32 symbol_set=symbol_set, 33 connectedness=component_connectedness[ iso_idx ], 34 randomness=component_randomness[ iso_idx ], 35 star_joined=False, 36 max_search_time=max_search_time, 37 random_seed=random_seed 38 ) 39 40 component_instance_counts[ iso_id ] = [ 41 instances_per_component for _ in all_components[ iso_id ] 42 ] 43 44 return structured_composition( 45 composition_id=composition_id, 46 core_alphabet=symbol_set.symbols, 47 composition_rigidity=composition_rigidity, 48 component_groups=all_components, 49 instances_per_component=component_instance_counts, 50 component_residency_factor=component_residency_factor, 51 component_repetition_penalty=component_repetition_pentalty, 52 composition_connectivity_factor=composition_connectivity_factor, 53 instance_cohesion_randomness=0.2, 54 end_of_component_symbols=end_of_component_symbols, 55 symbol_cohesion=symbol_set.symbol_cohesion, 56 max_search_time=max_search_time, 57 random_seed=random_seed 58 )
def
random_structured_composition( composition_id: str, composition_rigidity: float, instances_per_component: int, composition_connectivity_factor: float, component_repetition_pentalty: float, component_residency_factor: float, component_sizes: list[int], component_connectedness: list[float], component_randomness: list[float], symbol_set: amachine.am_structured_symbol_set.StructuredSymbolSet, end_of_component_symbols: set[str], max_search_time: int = 60, random_seed: int | None = None) -> amachine.am_hmm.HMM:
8def random_structured_composition( 9 composition_id : str, 10 composition_rigidity : float, 11 instances_per_component : int, 12 composition_connectivity_factor : float, 13 component_repetition_pentalty : float, 14 component_residency_factor : float, 15 component_sizes : list[int], 16 component_connectedness : list[float], 17 component_randomness : list[float], 18 symbol_set : StructuredSymbolSet, 19 end_of_component_symbols : set[str], 20 max_search_time : int = 60, 21 random_seed : int | None = None 22) -> HMM : 23 24 all_components : dict[str,list[am.HMM] ] = {} 25 component_instance_counts : dict[str,list[int]] = {} 26 27 for iso_idx, component_size in enumerate( component_sizes ) : 28 29 iso_id = f"{iso_idx}" 30 31 all_components[ iso_id ] = structured_isomorphic_rotation( 32 isoclass_name=f"c{composition_id}.{iso_idx}", 33 n_states=component_size, 34 symbol_set=symbol_set, 35 connectedness=component_connectedness[ iso_idx ], 36 randomness=component_randomness[ iso_idx ], 37 star_joined=False, 38 max_search_time=max_search_time, 39 random_seed=random_seed 40 ) 41 42 component_instance_counts[ iso_id ] = [ 43 instances_per_component for _ in all_components[ iso_id ] 44 ] 45 46 return structured_composition( 47 composition_id=composition_id, 48 core_alphabet=symbol_set.symbols, 49 composition_rigidity=composition_rigidity, 50 component_groups=all_components, 51 instances_per_component=component_instance_counts, 52 component_residency_factor=component_residency_factor, 53 component_repetition_penalty=component_repetition_pentalty, 54 composition_connectivity_factor=composition_connectivity_factor, 55 instance_cohesion_randomness=0.2, 56 end_of_component_symbols=end_of_component_symbols, 57 symbol_cohesion=symbol_set.symbol_cohesion, 58 max_search_time=max_search_time, 59 random_seed=random_seed 60 )