From 56fda3c7ecdbb937c57eb4a98a812c6f29500b3f Mon Sep 17 00:00:00 2001 From: "sweep-ai[bot]" <128439645+sweep-ai[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 02:09:55 +0000 Subject: [PATCH] feat: Implement PythonDependencyAdapter for Python --- src/Snps/PythonDependencyAdapter.php | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/Snps/PythonDependencyAdapter.php diff --git a/src/Snps/PythonDependencyAdapter.php b/src/Snps/PythonDependencyAdapter.php new file mode 100644 index 0000000..93c1e78 --- /dev/null +++ b/src/Snps/PythonDependencyAdapter.php @@ -0,0 +1,47 @@ +<?php + +namespace Dna\Snps; + +use MathPHP\LinearAlgebra\Matrix; +use MathPHP\Statistics\Descriptive; +use League\Csv\Reader; +use League\Csv\Writer; + +class PythonDependencyAdapter +{ + public function readCsv(string $filePath): array + { + $csv = Reader::createFromPath($filePath, 'r'); + $csv->setHeaderOffset(0); + return $csv->getRecords(); + } + + public function writeCsv(string $filePath, array $data): void + { + $csv = Writer::createFromPath($filePath, 'w+'); + $csv->insertOne(array_keys(reset($data))); + $csv->insertAll($data); + } + + public function matrixMultiplication(array $matrix1, array $matrix2): Matrix + { + $matrixA = new Matrix($matrix1); + $matrixB = new Matrix($matrix2); + return $matrixA->multiply($matrixB); + } + + public function calculateMean(array $data): float + { + return Descriptive::mean($data); + } + + public function filterData(array $data, callable $callback): array + { + return array_filter($data, $callback); + } + + public function mergeData(array $data1, array $data2): array + { + return array_merge($data1, $data2); + } +}