Je souhaite utiliser des fichiers de données PLINK (.bed, .fam, .map) etc. en Python. Il existe un module appelé pyplink.
Peut être installé avec pip
shell
pip install pyplink
Supposons que vous ayez un ensemble de fichiers dans votre répertoire actuel, comme foo.bed foo.fam foo.bim
python3
from pyplink import PyPlink
pyp = PyPlink("foo")
Cela créera un objet appelé pyp. Il s'agit d'un objet intégré des fichiers .bed, .fam et .bim. Vous pouvez accéder à chaque information avec diverses fonctions membres.
python3
pyp.get_fam()
pyp.get_nb_samples()
pyp.get_bim()
pyp.get_nb_markers()
python3
markerNames = pyp.get_bim().iloc[:,5]
Obtenez le génotype en spécifiant le nom du marqueur. Les informations de base peuvent être obtenues en utilisant acgt.
python3
pyp.get_geno_marker(markerNames[0])
pyp.get_acgt_geno_marker(markerNames[0])
Vous pouvez également obtenir l'ID du marqueur et le génotype sous forme d'itérateur.
python3
markers = ["rs7092431", "rs9943770", "rs1578483"]
for marker_id, genoypes in pyp.iter_geno_marker(markers):
print(marker_id)
print(genotypes, end="\n\n")
Obtenez tous les génotypes d'échantillons mâles pour les marqueurs sur 23 chromosomes
python3
for marker_ID, genotypes in pyp.iter_geno_marker(y_markers):
male_genotypes = genotypes[males]
print("{:d} total genotypes".format(len(genotypes)))
print("{:d} genotypes for {:,d} males ({} on chr{} and position {:,d})".format(
len(male_genotypes),
males.sum(),
marker_ID,
all_markers.loc[marker_ID, "chrom"],
all_markers.loc[marker_ID, "pos"],
))
break
Obtenez la fréquence et le génotype des allèles mineurs du marqueur spécifié
python3
founders = (all_samples.father == "0") & (all_samples.mother == "0")
markers = ["rs7092431", "rs9943770", "rs1587483"]
for marker_ID, genotypes in pyp.iter_geno_marker(markers):
valid_genotypes = genotypes[founders.values & (genotypes != -1)]
maf = valid_genotypes.sum()/(len(valid_genotypes)*2)
print(marker_ID, round(maf, 6), sep="\t")
print(genotypes)
Recommended Posts