def sample_class_sessions_and_key_concepts()

in glan-instruct/glan.py [0:0]


def sample_class_sessions_and_key_concepts(class_sessions, key_concepts, single_session=True):
    """
    Sample class sessions and key concepts to generate questions of varying difficulty.

    class_sessions: List of class sessions
    key_concepts: List of key concepts for each session.
    single_session: Whether to sample from a single session or multiple sessions.
    :return: Combination of sampled class sessions and core concepts
    """
    if single_session:
        session_index = random.randint(0, len(class_sessions) - 1)
        selected_session = class_sessions[session_index]
        num_concepts = min(5, len(key_concepts[session_index]))
        selected_key_concepts = random.sample(key_concepts[session_index], k=random.randint(1, num_concepts))
    else:
        if len(class_sessions) < 2:
            raise ValueError("Not enough sessions for multi-session sampling")
        session_indices = random.sample(range(len(class_sessions)), k=2)
        selected_sessions = [class_sessions[i] for i in session_indices]
        combined_key_concepts = key_concepts[session_indices[0]] + key_concepts[session_indices[1]]
        num_concepts = min(5, len(combined_key_concepts))
        selected_key_concepts = random.sample(combined_key_concepts, k=random.randint(2, num_concepts))
    
    return selected_session if single_session else selected_sessions, selected_key_concepts