haploFT
"haploFT" powiedzmy, że jest to wtyczka (bookmarklet) do przeglądarki internetowej, z nieoficjalnym narzędziem wspierającym projekty FTDNA np. do analizy offline, wszystkich danych haplogrup: (arkusze tabel, dystrybucji w czasie i przestrzeni, itp.). Plugin ten jest tylko pierwszym krokiem (można go użyć do szybkiego i inteligentnego zbierania informacji za pomocą tylko jednego kliknięcia myszką).
The "haploFT" let's just say it's (bookmarklet) plugin for web browser, with unofficial support tool for FTDNA projects for e.g. offline analysis, of haplogroups all data (table sheet, distribution map and timeline, etc.). This plugin is only for first step (gona use it to fast and smart collecting information by only one click mouse).
Korzystasz z Projektów FTDNA? FTDNA, świetnie wykonuje testy! Natomiast zestawienia... o ile się załadują bezbłędnie, ..mijają jakby eony.
Are you using FTDNA Projects? FTDNA, performs tests very well, and end. The results loading, very slow, and not infrequently, there are some error.
Analiza danych w tak niestabilnym środowisku jest niezwykle frustrująca. Dlatego, aby zmniejszyć poziom stresu, napisałem to narzędzie. | Analysis of data in such an unstable environment is extremely frustrating. Therefore, in order to reduce the level of stress, I wrote this code of this tool.
Interaktywny spis treści. | Interactive index of sections this site.
Jak uruchomić/zainstalować? | How do I run/setup?
Są dwie możliwości, możesz skopiować powyższy kod 1: [Ctrl]+[A] , 2: [Ctrl]+[C], a następnie na wybranym przez siebie rezultacie, w przeglądarce Google Chrome, (upewniając się, że wybrany rezultat już się w całości załadował, następnie), wkleić w konsoli Chrome Console Dev Tools, 3: [Ctrl]+[Shift]+[J] , 4: [Ctrl]+[V] , 5: [Enter] ; Drugą możliwością jest przeciągnięcie poniższego linku "haploFT" z błękitnego pola na pasek zakładek, a następnie na wybranym przez siebie rezultacie, w przeglądarce Google Chrome, (upewniając się, że wybrany rezultat już się w całości załadował, następni) klikamy na tę zakładkę.
There are two possibilities, you can copy the above code 1: [Ctrl]+[A] , 2: [Ctrl]+[C] , and then on your chosen any one result, in Google Chrome browser, (making sure that the selected result has been fully loaded, then) paste in Chrome Dev Tools Console, 3: [Ctrl]+[Shift]+[J] , 4: [Ctrl]+[V] , 5: [Enter] ; The second method is drag from below skyblue filed, the smart link "haploFT", to the Google Chrome bookmarks bar in top. And the next (making sure that the selected result is fully loaded), click on the bookmark.
Możesz też kliknąć, na pasku zakładek prawym klawiszem myszy, a następnie z menu wybrać dodaj stronę/zakładkę, następnie ustawić jej dowolną nazwę albo "haploFT" a w polu adresu URL wkleić zawartość powyższego, białego pola z błękitną ramką, następnie zatwierdzić przez zapisz/ok. Lub kliknij [Ctrl]+[D] otworzy się okienko dodawania obecnej strony do zakładek, musisz w nowszych wersjach Chrome, wybrać "więcej", a następnie jak powyżej opisane, wybrać nazwę, i wkleić kod.
You can also click on the bookmarks bar with the right mouse button and then from the menu choose to add a page/bookmark, then set any page name or "haploFT" and in the URL field paste the contents of the above white box with a skyblue frame, then confirm by save/ok. Or click [Ctrl]+[D] to open the window of adding the current page to your bookmarks, (and next in new versions of Chrome, you must, select "more"), and then as described above, choose a name, and paste the code.
KROKI | STEPS [1-4] «START»
Udaj się na stronę FTDNA i zaloguj się, następnie wybierz projekt, następnie przejdź do karty "DNA Results", następnie wybierz jedną z 5 wspieranych opcji (Y-DNA: Classic Chart, Map, SNPs; mtDNA: Results, Map).
Go to the FTDNA website and log in, then select the project, then go to the "DNA Results" tab, then select one of the 5 supported options (Y-DNA: Classic Chart, Map, SNPs; mtDNA: Results, Map).
KROK | STEP [4A & 4B] «Y-DNA Map & mtDNA Map»
Po otwarciu mapy dystrybucji haplogrup Y-DNA lub mtDNA wybierz wszystkie elementy, lub dowolny inny zestaw, (aczkolwiek proponuję wybrać wszystkie), następnie odczekaj chwilkę, aż wszystko się załaduje, i uruchom "haploFT", po chwili zostaniesz poproszony o wskazanie miejsca zapisu, pliku lub, zostanie zapisany w domyślnym miejscu pobierania.
When you open the distribution map of haplogroup Y-DNA or mtDNA, select all the items or any other set (although I suggest you select all), then wait a while for it to load, and run "haploFT", after a while you will be asked to indicate the location of the save file, or file will be saved at the default download folder.
Dane mapy zostaną zapisane jako plik .GEOJSON, możesz go zwizualizować np. w: | The map data will be saved as a .GEOJSON file, you can visualize it e.g. in: https://studio.mapbox.com/, https://kepler.gl/, http://geojson.io/, http://geojson.tools/
KROK | STEP [4C] «Y-DNA Classic Chart»
Po otwarciu klasycznego rezultatu chr:Y STRs, dobrze jest ustawić dość duży rozmiar strony, aby zmniejszyć paginacje, ponieważ dla każdej kolejnej strony, będzie potrzeba uruchomienia "haploFT". Pamiętaj jednak aby przed uruchomieniem przewinąć stronę do samego spodu, upewniając się, że wszystko się załadowało. (UWAGA, ustawiając wysoką wartość, czasami strona lubi się zaciąć, poczekaj chwile dłużej wówczas. Jeżeli wyskoczy strona „Houston we have a problem”, to spróbuj ponownie, jeśli znowu, to spróbuj ponownie i podaj niższą wartość i tak aż do skutku). Pamiętaj, aby przełączając się na następną stronę, zawsze przewinąć je na sam spód, czekając, aż wszytko się załaduje, oraz aby nie zmieniać na kolejnych stronach, ilości elementów, wówczas niestety poszczególne podstrony nie będą kompatybilne z sobą nawzajem. Dane tabeli zostaną zapisane jako plik JSON, na szybko możesz je odczytać online np w: http://json2table.com/#
Once you open the classic chr:Y STRs result, it is good to set a fairly large page size to reduce pagination, because for each subsequent page, you will need to run "haploFT". Remember to scroll to the bottom of the page before starting, making sure everything is loaded. (NOTE, when setting a high value, sometimes the page likes to jam, wait a little longer then. If the "Houston we have a problem" page pops up, try again, if again, then try again and give a lower value and so on until successful). Remember that when switching to the next page, always scroll to the bottom, waiting for everything to load, and do not to change to different page size (the number of items), on the following pages, then unfortunately, the different next pages will not be compatible with each other. The table data will be saved as a JSON file, you can quickly read them online, e.g. in: http://json2table.com/#
Na tej rycinie możesz zaobserwować 3 poziome rzędy, niezawierające wartości, są to wewnętrzne zgrupowania, podobnych ze względu na jakąś cechę, KITów. Nie wszystkie grupy prowadzą subgrupowanie, jednak te, które te zgrupowania prowadzą, często dostarczają nam o potomnych KITach, dodatkowych informacji, nieujętych w standardowych kolumnach, mogą to być głębsze lokalizacje na drzewie haplogrup (np. gdy ktoś wysłał do autora projektu, nowe wyniki z innego laboratorium aniżeli FTDNA; albo o pochodzeniu, lub nazwisku, lub czasie występowania). Te rzędy nie są importowane jako osobna pozycja, lecz kolejnym występującym po nim rekordom, jest przypisana ich wartość.
In above image you can see 3 horizontal rows, which do not contain any values, they are internal groupings dependent on project manger, (not FTDNA). KITs in them are grouped because of their common attribute. e.g. haplotree position; similar surname, similar origins, etc. Not all projects have subgroups, but those that have subgroups often provide us with additional information about KITs that are not included in the standard columns, for example more precise, positions of haplotree, by new SNP results, individually sent to the project managers, originating from a company other than this one. These rows are not imported as a separate item, but the subsequent records that follow are assigned their value.
I tu pojawia się pewien problem, związany z paginacją. Jeżeli widzimy, że jakaś subgrupa rozpoczyna się, i przechodzimy na następną stronę, niestety w pierwszym rzędzie FTDNA, nie informuje nas, że jest to kontynuacja subgrupy z poprzedniej strony! Dlatego po pobraniu wszystkich części, niezbędne jest ich przetworzenie i ponowne scalenie do jednej.
This is where the pagination problem comes in. If we see that a subgroup starts, and we go to the next page, unfortunately we are not informed in the first row that this is a continuation of the subgroup from the previous page, by FTDNA!! Therefore, after downloading all parts, it is necessary to process and reintegrate them into one.
KROK | STEP [4D] «Y-DNA SNP»
Obowiązują tu te same zasady co dla kroku [4C]. Z jedną różnicą, być może w arkuszu SNP, także pojawia się podział na subgrupy, jednakże ze względu na to, że jeszcze nigdy z nim się nie spotkałem, nie został on zaimplementowany, w przypadku, gdyby jednak grupy się pojawiły, nic nie szkodzi, zostaną one pominięte.
The same rules apply as for step [4C]. With one difference, perhaps in the SNP worksheet, there is also a division into subgroups, but because I have never met him before, he has not been implemented, but in case the subgroups appear, it's okay, they'll be omitted.
KROK | STEP [4E] «mtDNA results: RSRS & rCRS»
Obowiązują tu rozszerzone zasady bazujące na tych z kroku [4C]. Mianowicie mamy tu odczynienia z dwoma różnymi arkuszami, domyślnie otwiera się wykaz SNP, w których zachodzi różnica względem modelu RSRS. Wykonujemy czynności dla każdej z podstron, następnie przełączamy na arkusz różnic względem modelu rCRS, i ponownie wykonujemy czynności dla każdej strony. Tu także może zaistnieć problem opisany powyżej z paginacją i subgrupami.
There are extended rules based on those of step [4C]. Namely, here we have two different worksheets, the default is to open the SNP list, in which there is a difference to the RSRS model. Perform actions for each of the subpages, then switch to the sheet of differences from the rCRS model, and again perform actions for each page. The problem described above with pagination and subgroups may also occur here.
KROK | STEP [5] «FINISH»
Po uruchomieniu "haploFT" pozostań na danej stronie, przynajmniej dopóty, dopóki nie wyskoczy stosowny komunikat, informujący, iż zbieranie informacji przebiegło prawidłowo. Dopiero po jego wyłączeniu rozpocznie się zapisywanie JSON/geoJSON pliku. Na spodzie tego komunikatu, znajdują się też niezbędne informacje, takie jak, gdzie szukać pomocy, lub co istotne obecna wersja. Sprawdzaj czasem, czy nowa wersja się pojawi. Nie przewiduję żadnych diametralnych, aczkolwiek kilka usprawnień chodzi mi po głowie, jednakże nie umiem ich zaimplementować, póki co. To by było na tyle.
When "haploFT" is launched, stay on the page, at least until an appropriate message pops up informing you that the information collection was correct gathered. Only after it is turned off will, started to save on storage, file JSON/geoJSON. On the bottom of this message, you will also find the necessary information, such as where to find manual and contact, or what is important, the timestamp of current version. Sometimes check if a new version will appear. I don't predict any big changes, although I have a few improvements in my mind, but I don't know how to do implement them. That is all.
KROK | STEP [6] «odczytywanie danych/plików | reading of datas/files»
Zmiany w stosunku do oryginału. | Changes to the original.
Trudno w to uwierzyć, ale FTDNA nie weryfikuje wprowadzanych przez użytkowników danych GPS. Spotkałem zapisy gdzie, ktoś podał np. 380 stopni długości geograficznej. Oczywiście to jest nie do przyjęcia! Wszystkie pozycje, w których długość geograficzna wykracza poza przedział od -180 stopni do +180 stopni, oraz szerokość geograficzna poza przedział od -90 stopni do +90 stopni, zostaną odrzucone! | It is hard to believe, but FTDNA does not verify GPS data entered by users. I have met records of where, for example, someone gave 380 degrees longitude. Of course, this is unacceptable! All positions where the longitude is outside the range from -180 degrees to +180 degrees and the latitude outside the range from -90 degrees to +90 degrees will be rejected!
Kolejne negatywne pozytywne lub heterozygotyczne, SNP, nie są importowane jako ciąg tekstowy. Są konwertowane na pary, nazwa i wartość, przy czym, "SNP+" są zapisywane jako wartość 1, "SNP-", jako wartość 0, a "SNP*" jako wartość -1; | ySNP: negative, positive or heterozygous, are not imported as a text string, how in original sheet. They are converted into pairs, name and value, where "SNP+" is written as value 1, "SNP-" as value 0 and "SNP*" as value -1;
mtSNP różniące się z modelami RSRS i rCRS, także nie są zapisywane jako ciąg tekstowy. Także konwertuje je na zestaw pary klucza i wartości. Przy czym, w wartości może wystąpić albo para nukleotydów, albo pojedynczy nukleotyd. Albo "-" minus, oznaczający brak tej pozycji , względem modelów RSRS/rCRS. | mtSNP differing from the RSRS and rCRS models are also not written as a text string. It converts them into a set of key and value pairs. Value have, either a nucleotide pair or a single nucleotide or can occur in a value "-" minus meaning no such item, relative to RSRS/rCRS models.
Dodatkowa każda pozycja jest wzbogacona o źródło i datę dostępu. | Each any item is additional enriched with a source and date of access to this.
Iteracja danych - nazewnictwo kluczy. | Data iteration - nomenclature of keys.
Powiedz nam, co uważasz.. | Tell us what you think...
Możesz się podzielić, swoją opinią i przemyśleniami, zostawiając komentarz pod tym postem po prawej stronie
You can share your opinion and thoughts by leaving a comment below this post is right side.
Przyszłe wersje. | Future versions.
Jak wspomniałem, chciałbym zaimplementować pewne ulepszenia, lecz nie potrafię. Bardzo mile by było, gdyby ktoś udzielił wsparcia. | As I said, I would like to implement some improvements, but I cannot. It would be very nice if someone could support me how do it.
Jak zrobić, aby "bookmarklet" ładował najnowszą zawsze aktualną wersję skryptu ze strony. Wszak nie wymaga to wiele trudu sprawdzić, czy posiadana wersja jest aktualną, ale wygodnie by było, gdyby to się samo w tle zmieniało. | How to make that "bookmarklet" loads the latest, always up-to-date version of the script from the website. After all, it does not require much effort to check if your version is current, but it would be convenient if the same changed in the background. | https://stackblitz.com/edit/haploft?file=haploFT.js
Najistotniejsze by było, aby narzędzie potrafiło wykryć czy wszystko jest załadowane na stronie, a jeśli by nie było, czekać do momentu aż będzie, i dopiero wówczas wykonać czynności. | The most important thing would be for the tool to be able to detect if everything is loaded on the page, and if not, wait until it is, and only then perform the actions.
Jeszcze większym udogodnieniem, byłoby pominięcie czasochłonnego renderingu treści (na stronie), i bezpośrednio z requestu (strona otrzymuje dane metodą "post"), je zapisać, wówczas między innymi, (tak przynajmniej myślę) można by zaradzić problemowi z subgrupami i paginacją. | An even greater improvement would be to skip time-consuming content rendering on the page, and directly from the "request" (the page receives data by "post" method), save it. Then, among other things, (at least I think so) we could remedy the problem with subgroups and pagination.
..ciąg dalszy opisu, niebawem..
...the continuation of the description, soon...