$pgas) { $invert_matrix = array(); foreach ($pgas as $line_number => $line_content) { foreach ($line_content as $column_number => $column_content) { $invert_matrix[$line_number][$column_headers[$file_name][$column_number]] = $column_content; } } $all_tables_inverted[$file_name] = $invert_matrix; } // Comparison algorithm $counter = 0; $basic_matrix = array(); $new_key = generate_new_key($all_tables_inverted); // Merge every matrices to the others still merged foreach ($all_tables_inverted as $file_name => $lines) { if ($counter == 0) { // First matrix $basic_matrix[$file_name] = $lines; } else { // 2nd+ matrices $tmp_matrix = array(); // for each line in secondary matrix foreach ($lines as $line_number => $entry) { // Set exists flag $entry_exists = FALSE; // Generate array of search keys $secondary_entry_searcharray = explode(";", $entry[$access_key]); // for each column in basic matrix foreach ($basic_matrix as $basic_file_name => $basic_lines) { // for each line in basic matrix foreach ($basic_lines as $basic_line_number => $basic_entry) { // Generate array of search keys $basic_entry_searcharray = explode(";", $basic_entry[$access_key]); // Main comparison of access keys if (count(array_intersect($secondary_entry_searcharray, $basic_entry_searcharray)) > 0) { // entry already exists if (count(array_diff($tmp_matrix[$file_name][$basic_line_number], $entry)) > 0) { echo("Entry already in array
"); echo("Replicate match from ". $file_name ." to ". $basic_file_name ."
"); echo("Line number: ". $line_number ."/". $basic_line_number ."
"); echo("Gene name: ". $entry["Gene names"] ."
"); echo("Gene name (". $basic_file_name ."): ". $basic_entry["Gene names"] ."
"); echo("Former gene name: ". $tmp_matrix[$file_name][$basic_line_number]["Gene names"] ."

"); } // Assign entry to temporary matrix $tmp_matrix[$file_name][$basic_line_number] = $entry; $entry_exists = TRUE; } } } if (!$entry_exists) { $tmp_matrix[$file_name][$new_key] = $entry; $new_key++; } } // Assign temporary matrix to basic matrix foreach ($tmp_matrix as $file_name => $lines ){ foreach ($lines as $line_number => $entry) { $basic_matrix[$file_name][$line_number] = $entry; } } unset($tmp_matrix); } $counter++; } // Output in csv file // Create merge file if ($write_output) { $merge_csv = fopen($merge_file_name, "w"); // Write column headers $line = array(); foreach ($basic_matrix as $file_name => $content) { foreach ($column_headers[$file_name] as $column_name) { $line[] = $file_name ."_". $column_name; } } fputcsv($merge_csv, $line); // Write data $max_line = $new_key - 1; for ($i = 1; $i <= $max_line; $i++) { $line = array(); foreach ($basic_matrix as $basic_file_name => $basic_lines) { if (array_key_exists($i, $basic_lines)) { foreach ($column_headers[$basic_file_name] as $column_header) { $line[] = $basic_lines[$i][$column_header]; } } else { foreach ($column_headers[$basic_file_name] as $column_header) { $line[] = "-"; } } } fputcsv($merge_csv, $line); } // Close file fclose($merge_csv); // Screen read-out echo("

Merge_intersect v0.2

"); echo("

developed in the Sieber research group, TUM, 2016

"); echo("
"); echo("Access key for comparison: '". $access_key ."'
"); echo("
");
        print_r($basic_matrix);
        echo("
"); } echo("---FINISHED---") ?>