Je travaille sur l'utilisation d'itertools pour obtenir une liste de combinaisons, mais je suis coincé avec la manipulation de ces combinaisons une fois que je les ai. Voici ce que j'ai :
k_instances = 3 #Instances of lysine
k_modifications = {'Hydroxylation', 'Carboxylation', #Modifications applicable to lysine
}
k_combinations = itertools.combinations_with_replacement(k_modifications, k_instances) #Possible modifications assigned
k_comb_list = list(k_combinations) #Convert combinations to a list
k_comb_list_str = [k_comb_list[i:i+k_instances] for i in range(0, len(k_comb_list), k_instances)]
for i in range(len(k_comb_list_str)):
k_comb_list_str[i] = 16 if k_comb_list_str[i] == 'Hydroxylation' else k_comb_list_str[i]
print(k_comb_list_str)
En exécutant ceci, j'obtiens :
[[('Carboxylation', 'Carboxylation', 'Carboxylation'), ('Carboxylation', 'Carboxylation', 'Hydroxylation'), ('Carboxylation', 'Hydroxylation', 'Hydroxylation')], [('Hydroxylation', 'Hydroxylation', 'Hydroxylation')]]
Mon idée est de remplacer chacune de ces variables par leur masse, par exemple remplacer toutes les occurrences de Carboxylation par 16. En faisant cela, je voudrais obtenir une liste de chaînes de caractères, quelque chose comme ceci :
[[(16,16,16),(16,16,2),(16,2,2)...]]
J'obtiendrais alors la somme de chacune des cordes :
[[(48),(32),(20)]]
Et ensuite avoir essentiellement une liste de valeurs possibles en fonction des combinaisons.
Je suis sûr qu'il existe un moyen plus simple d'effectuer cette opération, donc toute suggestion sur la façon de l'exécuter serait appréciée. J'ai essayé de remplacer chaque valeur à l'aide d'instructions else if, mais cela ne fonctionne pas car je n'arrive pas à trouver comment manipuler la chaîne de caractères. Je ne peux donc que rechercher la chaîne de caractères, ce qui va à l'encontre du but recherché.