oTree Forum >

How to keep the same grouping in different apps?

#1 by Phoebe (edited )

This question may be simple, but I just don't know how to do it...since I have already used the group_by_arrival_time in the first app, and the grouping will be messed up in the second app...

Checking other discussions, I have added the following to the first app:

def before_next_page(self):
        group_id=self.group.id_in_subsession
        self.participant.vars['group_id']=group_id
        
And second app:

def group_by_arrival_time_methods(self,waiting_players):
        group_id=self.participant.vars['group_id']
        
But I don't know how to make the grouping in the second app has the same ID as first app?

#2 by ccrabbe

Hi Phoebe -

I would do this by getting the first app's group_matrix at the end with subsession.get_group_matrix() and then setting it at the beginning of the second app with subsession.set_group_matrix():  

https://otree.readthedocs.io/en/latest/multiplayer/groups.html#get-group-matrix

The tricky thing for you is that you won't be doing this in creating_session, so you'll need to find a place in your second app's execution at the very start before anybody starts.  You might be able to do this inside your second app's group_by_arrival_time_method, or you might just be able to use a WaitPage with wait_for_all_groups=True and an after_all_players_arrive method.

https://otree.readthedocs.io/en/latest/multiplayer/waitpages.html#after-all-players-arrive

Thanks,
--Chris

#3 by Phoebe

Hi Chris,

Thank you so much for your reply!

I have tried your methods, but still I am not sure how to pass the matrix from the first app to the second app? I have tried:

for player in subsession.get_players():
    matrix = subsession.get_group_matrix()
    players = subsession.get_players()
    for p in players:
        p.participant.vars['matrix']=matrix
        
under subsession class.

And on the second app I tried:

class Subsession(BaseSubsession):
    
   def group_by_arrival_time_methods(self,waiting_players):
        matrix=self.participant.vars['matrix']
        self.set_group_matrix(matrix)
        
        
However, it seems not working, although no error messages. Is there a simpler way to fix it, perhaps...?


Thank you so much for your help!

Phoebe

Write a reply

Set forum username