Beispiel #1
0
/**
 * Get synthenies between two sets of grouped loci.
 *
 * @param $qtldb database for eQTL
 * @param $comparadb
 * @param $groups1
 * 		= groupnr -> ('loci' -> lociOfGroup, 'start', 'end', 'Chr')
 * @param $groups2
 * 		= groupnr -> ('loci' -> lociOfGroup, 'start', 'end', 'Chr')
 * @param $species_names
 * 		at pos. 0 is name of species one, at pos 1 is name of species 2
 * @param $genome_db_ids
 * 		at pos. 0 is genome_db_id of species one, at pos 1 is genome_db_id of species 2
 * @param $databases
 * 		at pos. 0 is database of species one, at pos 1 is database of species 2
 *
 */
function getSyntenyGroups($qtldbs, $comparadb, $groups1, $groups2, $species_names, $genome_db_ids, $databases)
{
    $synteny_ex1 = array();
    $result = array();
    useDB($databases[0], $qtldbs[0]);
    $bps1 = groups2bps($qtldbs[0], $groups1, $species_names[0]);
    useDB($databases[1], $qtldbs[1]);
    $bps2 = groups2bps($qtldbs[1], $groups2, $species_names[1]);
    $dnafragids1 = get_dnafragids($comparadb, $genome_db_ids[0], get_chromo_names_from_group($groups1));
    $dnafrag2name = get_all_dnafragids($comparadb, $genome_db_ids[1]);
    $group2region = array();
    for ($i = 0; $i < sizeof($bps1); $i++) {
        $group2region[$i] = getGroupSyntenyIDs($comparadb, $bps1[$i], $dnafragids1[$groups1[$i]['Chr']], $dnafrag2name, $species_names[1]);
    }
    $synteny1to2 = array();
    foreach ($group2region as $group1nr => $regions) {
        $synteny1to2[$group1nr] = array();
        foreach ($regions as $region) {
            foreach ($groups2 as $group2nr => $group2) {
                if ($group2['Chr'] == $region['chr']) {
                    if ($group2['start'] <= $region['end'] && $group2['end'] >= $region['start']) {
                        //add the groupnumber
                        $synteny1to2[$group1nr][] = $group2nr;
                        //filter array for duplicate entries
                        $synteny1to2[$group1nr] = array_unique($synteny1to2[$group1nr]);
                    }
                }
            }
        }
    }
    return $synteny1to2;
}
$sql = 'select Name from ' . $db1 . '.locus
where Chr = ' . $chr1 . ' 
and cMorgan >= ' . $start1 . ' 
and cMorgan <= ' . $end1 . ';';
$loci_ex1 = get_only_loci_from_sql($sql, $experiment1['connection']);
$db2 = $experiment2["db_name"];
$sql = 'select Name from ' . $db2 . '.locus
where Chr = ' . $chr2 . ' 
and cMorgan >= ' . $start2 . ' 
and cMorgan <= ' . $end2 . ';';
$loci_ex2 = get_only_loci_from_sql($sql, $experiment2['connection']);
// Loci to genes
useDB($db1, $experiment1['connection']);
$loci2stable_ids_ex1 = loci2stable_ids($loci_ex1, $experiment1['connection']);
$unique_ens_ids_ex1 = get_unique_vals_from_2d_array($loci2stable_ids_ex1[0]);
useDB($db2, $experiment2['connection']);
$loci2stable_ids_ex2 = loci2stable_ids($loci_ex2, $experiment2['connection']);
$unique_ens_ids_ex2 = get_unique_vals_from_2d_array($loci2stable_ids_ex2[0]);
//exit('Exit: Debbuging in compara.php!');
// HOMOLOGY => do it on the fewer genes
$n_ens_ids_ex1 = sizeof($unique_ens_ids_ex1);
$n_ens_ids_ex2 = sizeof($unique_ens_ids_ex2);
$traits12traits2 = array();
if ($n_ens_ids_ex1 < $n_ens_ids_ex2) {
    // homology on experiment 1
    $homology_ex1 = get_homologue_ens_ids($compara, $unique_ens_ids_ex1, $experiment2['ensembl_species']);
    //intersection
    foreach ($homology_ex1 as $unique_id_ex1 => $corr_homologue_ens_ids_ex2) {
        $intersect = array_intersect(array_keys($corr_homologue_ens_ids_ex2), $unique_ens_ids_ex2);
        foreach ($intersect as $id_ex2) {
            $traits12traits2[$unique_id_ex1][$id_ex2] = $corr_homologue_ens_ids_ex2[$id_ex2];
Beispiel #3
0
}
// display arguments:
//include 'display_args.php';
// SYNTENY
$species_names = array("Mus musculus", "Rattus norvegicus");
$genome_db_ids = array(57, 3);
$dbs = array('eqtl_rostock_eae', 'eqtl_stockholm_eae_logplier');
$synteny_ex12ex2 = getSynteny($qtldb, $compara, $loci_ex1, $loci_ex2, $species_names, $genome_db_ids, $dbs);
// Loci to genes
//"Mus musculus"
useDB('eqtl_rostock_eae', $qtldb);
//loci2stable_
$loci2stable_ids_ex1 = loci2stable_ids($loci_ex1, $qtldb);
$unique_ens_ids_ex1 = get_unique_vals_from_2d_array($loci2stable_ids_ex1[0]);
//"Rat"
useDB('eqtl_stockholm_eae_logplier', $qtldb);
$loci2stable_ids_ex2 = loci2stable_ids($loci_ex2, $qtldb);
$unique_ens_ids_ex2 = get_unique_vals_from_2d_array($loci2stable_ids_ex2[0]);
// HOMOLOGY => do it on the fewer
$n_loci_ex1 = sizeof($unique_ens_ids_ex1);
$n_loci_ex2 = sizeof($unique_ens_ids_ex2);
$traits12traits2 = array();
if ($n_loci_ex1 < $n_loci_ex2) {
    $homology_ex1 = get_homologue_ens_ids($compara, $unique_ens_ids_ex1, $genome_db_ids[1]);
    //intersection
    foreach ($homology_ex1 as $unique_id_ex1 => $corr_homologue_ens_ids_ex1) {
        $traits12traits2[$unique_id_ex1] = array_intersect($corr_homologue_ens_ids_ex1, $unique_ens_ids_ex2);
    }
} else {
    $homology_ex2 = get_homologue_ens_ids($compara, $unique_ens_ids_ex2, $genome_db_ids[0]);
    //intersection
Beispiel #4
0
//getChromosoms($compara, $experiment1['genome_db_id']);
//initialize array for mapping groupnumbers to regions
$group2region2 = array();
$ex2 = get_loci_from_sql($database2, $experiment2['connection'], 'wholeGenome', $chromosomsEx2, $confidence_int, $group2region2);
// converts $ex2 in 2 arrays: $groups2 = groupnr -> ('loci' -> lociOfGroup, 'start', 'end') $mapEx2 = index -> (locus,groupNr)
list($groups2, $mapEx2) = $ex2;
// generates an arrays with index -> locinames
$loci_ex2 = array_map('current', $mapEx2);
// SYNTENY
$genome_db_ids = getGenomeDBIDs($compara, array($experiment1['ensembl_species'], $experiment2['ensembl_species']));
$groupSynteny_ex12ex2 = getSyntenyGroups(array($experiment1['connection'], $experiment2['connection']), $compara, $groups1, $groups2, $species_names, $genome_db_ids, $dbs);
// h**o
useDB($database1, $experiment1['connection']);
$loci2stable_ids_ex1 = loci2stable_ids($loci_ex1, $experiment1['connection']);
$unique_ens_ids_ex1 = get_unique_vals_from_2d_array($loci2stable_ids_ex1[0], $n_qtls1);
useDB($database2, $experiment2['connection']);
$loci2stable_ids_ex2 = loci2stable_ids($loci_ex2, $experiment2['connection']);
$n_qtls2 = 0;
$unique_ens_ids_ex2 = get_unique_vals_from_2d_array($loci2stable_ids_ex2[0], $n_qtls2);
// HOMOLOGY => do it on the fewer genes
$n_ens_ids_ex1 = sizeof($unique_ens_ids_ex1);
$n_ens_ids_ex2 = sizeof($unique_ens_ids_ex2);
$traits12traits2 = array();
//$cnt_homo = array();
if ($n_ens_ids_ex1 < $n_ens_ids_ex2) {
    // homology on experiment 1
    $homology_ex1 = get_homologue_ens_ids($compara, $unique_ens_ids_ex1, $experiment2['ensembl_species']);
    //intersection
    foreach ($homology_ex1 as $unique_id_ex1 => $corr_homologue_ens_ids_ex2) {
        $intersect = array_intersect(array_keys($corr_homologue_ens_ids_ex2), $unique_ens_ids_ex2);
        foreach ($intersect as $id_ex2) {