Skip to content

Commit

Permalink
feat: Updated 1 files
Browse files Browse the repository at this point in the history
  • Loading branch information
sweep-ai[bot] committed May 12, 2024
1 parent 88c916b commit eb594b6
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions src/Triangulation.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,31 @@

class Triangulation {

public static function compareMultipleKits($kitsData) {
$snpsLists = array_map(function($kit) { return $kit->getSnps(); }, $kitsData);
$commonSnps = call_user_func_array('array_intersect_key', $snpsLists);
foreach ($commonSnps as $key => $snp) {
if (!self::isSnpCommonAcrossAllKits($snp, $kitsData)) {
unset($commonSnps[$key]);
}
}
return array_values($commonSnps);
public static function compareMultipleKits(array $kitsData): array {
$snpsLists = self::extractSnpLists($kitsData);
$commonSnps = self::findCommonSnps($snpsLists);
return self::filterNonCommonSnps($commonSnps, $kitsData);
}

private static function isSnpCommonAcrossAllKits($snp, $kitsData) {
foreach ($kitsData as $kit) {
private static function extractSnpLists(array $kitsData): array {
return array_map(function($kit) { return $kit->getSnps(); }, $kitsData);
}

private static function findCommonSnps(array $snpsLists): array {
return call_user_func_array('array_intersect_key', $snpsLists);
}

private static function filterNonCommonSnps(array $commonSnps, array $kitsData): array {
return array_filter($commonSnps, function($snp) use ($kitsData) {
return self::isSnpCommonAcrossAllKits($snp, $kitsData);
});
}

private static function isSnpCommonAcrossAllKits(array $snp, array $kitsData): bool {
return count(array_filter($kitsData, function($kit) use ($snp) {
$snps = $kit->getSnps();
if (!array_key_exists($snp['pos'], $snps) || $snps[$snp['pos']]['genotype'] !== $snp['genotype']) {
return false;
}
}
return true;
return isset($snps[$snp['pos']]) && $snps[$snp['pos']]['genotype'] === $snp['genotype'];
})) === count($kitsData);
}
}
?>

0 comments on commit eb594b6

Please sign in to comment.