Identifiera matcher i olika cluster
När jag tittar på DNA resultat gör jag det ofta från flera olika bolag – just för att man vill finnas på flera bolag för att kunna få så många DNA träffar som möjligt.
Nackdelen med det är att man får flera olika cluster rapporter, med olika varianter och det är svårt att hitta gemensamma nämnare mellan de olika rapporterna.
Så, för att förenkla det skapade jag ett Python script som tittar på två cluster filer, jämför namn och sen även cM värdet utifrån ett givet tröskelvärde.
Jag vill på ett smidigt sätt hitta personer med liknande namn och någorlunda liknande andel delat DNA – i centiMorgan. Det i sin tur hjälper mig att förstå hur ett kluster från ett testbolag hänger ihop med ett kluster med matchingar från ett annat bolag.
Vad mitt script gör är att det tar Namn och cM värde för matchningarna i listan från kluster ett och jämför varje rad med samtliga rader i motsvarande från kluster två.
Denna jämförelse görs på två premisser – cM värdet får inte skilja sig mer än ett angivet antingen %-värde, eller viss mängd cM.
Vidare jämförs namnet, här kan man ange ett ”fuzzyness” värde, 0.4 – 0.6 ungefär, ju högre värde ju striktare jämförelse, ju lägre desto luddigare. Fuzziness!
Output blir en Excel-fil med Namn och cM värden från Fil 1 och en matching mot ett möjligt namn med relevant cM värde i Fil 2.
Källfilen är en CSV som innehåller kolumnerna ”name” och ”cM”.
Resultatet när man kör scriptet blir en fil som ser ut som de två nedan (mina egna gul-markeringar dock).
Vänster fil ovan använde Fuzzyness 0.6 medans den högra 0.4. Notera de tre gula matchningarna där namnen är snarlika, men ändå inte samma. Det handlar om Lika/liknande förnamn och/eller efternamn osv. Olika matchlistor kräver olika fuzzynessvärde – så prova lite olika värden.
Förutsättningar:
- Python installerat på din dator.
- ”Pandas” Python-bibliotek (pip install pandas / pip3 install pandas).
- Två CSV-filer med kolumnerna ”name” och ”cM”.
Notera: Scriptet är skapat för utdata från kluster som genererats av DNAGedcom-klienten, men det kan fungera med andra klusterfiler också. Om du har filer från andra källor, se till att de har rätt kolumnnamn (”name” och ”cM”).
Hur man använder ClusterCompare:
- Ladda ner scriptet här.
- Öppna en terminal eller kommandotolk.
- Navigera till mappen där du laddade ner scriptet.
- Packa upp med unzip
- Kör scriptet med kommandot:
python ClusterCompare.py [väg_till_första_filen] [väg_till_andra_filen] [tröskelvärde] [fuzzyness]
Exempel:python3 ClusterCompare.py min_första_fil.csv min_andra_fil.csv 10% 0.5
- Exemplet ovan jämför namn och cM i två csv filer, den tittar dels på cM värden som skiljer sig max 10% och använder ett ”fuzzyness” värde för namnjämförelse på 0.5 (du får bäst resultat med 0.4-0.6 ungefär, testa dig fram.
- Scriptet kommer att generera en Excel-fil med namnet ”ClusterCompare_[Aktuell Tidsstämpel].xlsx” som innehåller matchningarna mellan de två filerna, denna sparas i samma mapp sin scriptet.
Anpassa filer från andra källor:
Om du har DNA-klusterfiler från andra källor än DNAGedcom, se till att:
- Filerna är i CSV-format.
- Filerna har kolumnerna ”name” och ”cM”.
- Om det finns ytterligare kolumner i dina filer, se till att de inte stör jämförelsen. Du kan behöva redigera dina filer för att passa scriptets krav.
Avslutningsvis:
ClusterCompare är ett praktiskt verktyg för att hitta potentiellt samma matchingar i olika DNA-kluster från olika källor.
Du använder scriptet på egen risk och det tillgängliggörs helt utan support och andra åtaganden.