Community detection with signed edges

I am trying to follow the documentation for doing community detection on networks with edge covariates. Currently my edges have values -1, 0, or +1 representing mutual sentiment between nodes. -1 being negative, 0 neutral, and +1 positive.

I have done something like this:

bstate = gt.minimize_blockmodel_dl(g, 
                                   state_args=dict(deg_corr=True, 
                                                   recs=[g.ep.mapped_sent], 
                                                   rec_types=['discrete-binomial'], 
                                                   pclabel=part))

where g.ep.mapped_sent is a mapping -1 \rightarrow 0, 0 \rightarrow 1, and +1 \rightarrow 2. However, I do not believe this is the right approach as it doesn’t seem to preserve p_{-1} + p_{0} + p_{1} = 1, the probabilities of observing a specific sentiment on an existing edge.

I couldn’t find any reference to a categorical distribution in the documentation, so I was wondering if anyone had any suggestions on how I can model this scenario using the graph-tool api.

Many thanks!

update for anyone in the future: Using a multilayer network with each level representing the different sentiments. I believe this is the more correct modeling approach and is suggested in the documentation.

Representing the ‘sentiment’ as a binomial distribution also seems like a reasonable modelling choice in this context.