def evolvability(self, repertoire): # Get the dominant genotype network for the repertoire giant = self.caller.dominant_network(repertoire) # Construct a EvolvabilityAnalyzer object evoAnalyzer = EvolvabilityAnalyzer(giant, self.inDataDict, self.seqToRepDict_evo, self.repToGiantDict, self.rcToSeqDict, self.bitsToSeqDict, self.netBuilder, self.isDoubleStranded) # Compute repertoire evolvability and set it as a network # attribute repertoireEvo, targetRepertoires = evoAnalyzer.getReportoireEvo() giant["Evolvability"] = repertoireEvo # Stringify the list, since pythons lists cannot be written to GML. giant["Evolvability_targets"] = json.dumps(targetRepertoires) # Set evolvability values for all vertices, i.e., sequences evoTuples = evoAnalyzer.getEvoAll() evoScores = [evoTuples[i][0] for i in range(len(evoTuples))] evoTargets = [evoTuples[i][1] for i in range(len(evoTuples))] giant.vs["Evolvability"] = evoScores giant.vs["Evolves_to_genotypes_in"] = [ evoTargets[i].keys() for i in range(len(evoTargets)) ] giant.vs["Evolvability_targets"] = evoTargets
def init_evolvability(self): self.seqToRepDict_evo = EvolvabilityAnalyzer.updateSeqToRepDict( self.seqToRepDict, self.repToGiantDict) if self.isDoubleStranded: self.rcToSeqDict = EvolvabilityAnalyzer.buildRcToSeqDict( self.seqToRepDict_evo, self.bitManip) self.bitsToSeqDict = EvolvabilityAnalyzer.buildBitsToSeqDict( self.seqToRepDict_evo, self.rcToSeqDict, self.bitManip, self.isDoubleStranded)