166 lines
5.6 KiB
PHP
Executable File
166 lines
5.6 KiB
PHP
Executable File
<?php
|
|
// Este script gera as matrizes de indexação reduzidas. As entradas são, de cada base, os arquivos caracteristicasreduzidas.csv e matrizindexada.txt. As saídas são, para cada base, a matriz de indexação reduzida para cada cluster.
|
|
|
|
// Diretório de origem
|
|
|
|
$diretorioentrada = "indexados/";
|
|
|
|
// Para cada base em indexados
|
|
|
|
$ponteiro1 = opendir($diretorioentrada);
|
|
|
|
|
|
// Para cada subdiretorio do diretorio de entrada
|
|
|
|
while (($nomequestao = readdir($ponteiro1)))
|
|
{
|
|
|
|
if (($nomequestao<>".") && ($nomequestao<>".."))
|
|
{
|
|
|
|
$diretorio = $diretorioentrada.$nomequestao."/";
|
|
|
|
// Carregar lista de caracteristicas de cada cluster
|
|
|
|
$arquivocaracteristicas=$diretorio."caracteristicasdescritivas.csv";
|
|
|
|
if (file_exists($arquivocaracteristicas))
|
|
{
|
|
|
|
$listacaracteristicas = file($arquivocaracteristicas);
|
|
|
|
$diretorioclusters = $diretorio."clusters/";
|
|
|
|
|
|
$ponteiro2 = opendir($diretorioclusters);
|
|
|
|
|
|
// Para cada subdiretorio do diretorio clusters
|
|
|
|
while (($nomecluster = readdir($ponteiro2)))
|
|
{
|
|
|
|
if (($nomecluster<>".") && ($nomecluster<>"..") && ($nomecluster<>"rd"))
|
|
{
|
|
|
|
// Obter linha das caracteristicas do cluster
|
|
|
|
$numcluster = trim($nomecluster);
|
|
$linhacaracteristicascluster= trim($listacaracteristicas[$numcluster]);
|
|
|
|
$vcaracteristicascluster=explode(" ", $linhacaracteristicascluster);
|
|
|
|
// Carregar matriz de indexacao do cluster
|
|
|
|
$nomematriz=$diretorioclusters.$nomecluster."/matriz.txt";
|
|
$matriz = file($nomematriz);
|
|
$tamanhomatriz = count($matriz);
|
|
|
|
// Obter primeira linha da matriz, que contém as caracteristicas originais
|
|
|
|
$primeiralinha = trim($matriz[0]);
|
|
|
|
$primeiralinhaemvetor = explode(";",$primeiralinha);
|
|
|
|
$indicescaracteristicas = array();
|
|
|
|
|
|
// Obter indices das caracteristicas no vetor de caracteristicas original
|
|
$i=0;
|
|
|
|
foreach ($vcaracteristicascluster as $c)
|
|
{
|
|
|
|
$indicescaracteristicas[$i]=array_search($c, $primeiralinhaemvetor);
|
|
|
|
$i=$i + 1;
|
|
|
|
}
|
|
|
|
|
|
$tamlc = count($indicescaracteristicas);
|
|
$t = $tamlc - 1;
|
|
|
|
$tm = $tamanhomatriz -1;
|
|
|
|
// Para matrizes com tamanho acima de 3, reduz o número de características a uma fração do número de amostras
|
|
//(Exemplo:2/3). A fracao está em arquivoselecao/fracaoselecao.csv
|
|
|
|
if ($tm>3)
|
|
{
|
|
$afracao = file("arquivosselecao/fracaoselecao.csv");
|
|
$af= explode("/",$afracao[0]);
|
|
$den=trim($af[1]);
|
|
if ($den>0)
|
|
{
|
|
$fracao=($af[0]/$den);
|
|
|
|
}
|
|
else
|
|
{
|
|
$fracao=0;
|
|
}
|
|
|
|
$t=round($tm*$fracao);
|
|
|
|
unset($af);
|
|
unset($afracao);
|
|
}
|
|
|
|
// Abrir matriz reduzida
|
|
|
|
$arqmr = $diretorioclusters.$nomecluster."/matrizreduzida.txt" ;
|
|
|
|
$fc= fopen($arqmr,'w');
|
|
|
|
// Gravar matriz reduzida
|
|
|
|
// Gravar primeira linha
|
|
|
|
for($m=0;$m<$t;$m++)
|
|
{
|
|
fwrite($fc, $vcaracteristicascluster[$m].";");
|
|
}
|
|
|
|
fwrite($fc,$vcaracteristicascluster[$m]."\n");
|
|
|
|
for($p=1;$p<$tamanhomatriz;$p++)
|
|
{
|
|
|
|
$mj = trim($matriz[$p]);
|
|
|
|
|
|
$linhamatriz = explode(" ", $mj);
|
|
|
|
for($k=0;$k<$t;$k++)
|
|
{
|
|
$indice= $indicescaracteristicas[$k];
|
|
$valor=$linhamatriz[$indice]." ";
|
|
fwrite($fc, $valor);
|
|
}
|
|
$indice = $indicescaracteristicas[$k];
|
|
$valor=$linhamatriz[$indice]."\n";
|
|
fwrite($fc,$valor);
|
|
unset($linhamatriz);
|
|
|
|
|
|
}
|
|
|
|
fclose($fc);
|
|
|
|
unset($indicescaracteristicas);
|
|
unset($vcaracteristicascluster);
|
|
unset($primeiralinhaemvetor);
|
|
unset($matriz);
|
|
|
|
}
|
|
}
|
|
|
|
unset($listacaracteristicas);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
?>
|