Plink en Python

Je souhaite utiliser des fichiers de données PLINK (.bed, .fam, .map) etc. en Python. Il existe un module appelé pyplink.

Installation

Peut être installé avec pip

shell


pip install pyplink

Comment utiliser

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")

Exemple de script

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

Plink en Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
SendKeys en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Liste triée en Python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Lire DXF avec python
Daily AtCoder # 53 en Python
Séquence de touches en Python
Utilisez config.ini avec Python
Daily AtCoder # 33 en Python
Résoudre ABC168D en Python
Distribution logistique en Python
AtCoder # 7 tous les jours avec Python
Décomposition LU en Python
GRPC simple en Python