[med-svn] [Git][med-team/pufferfish][master] 5 commits: Adding ITP bug number.

Andrius Merkys (@merkys) gitlab at salsa.debian.org
Tue Mar 29 08:41:26 BST 2022



Andrius Merkys pushed to branch master at Debian Med / pufferfish


Commits:
05b0e764 by Andrius Merkys at 2022-03-24T13:39:10-04:00
Adding ITP bug number.

- - - - -
a261833f by Andrius Merkys at 2022-03-25T05:57:11-04:00
Attempt to use packaged setcover.

- - - - -
7f85f7af by Andrius Merkys at 2022-03-25T06:01:29-04:00
Build depends on libsetcover-dev.

- - - - -
0afff8cb by Andrius Merkys at 2022-03-25T06:05:35-04:00
Yet another attempt to use packaged setcover.

- - - - -
6970c8da by Andrius Merkys at 2022-03-29T03:12:18-04:00
Removing embedded setcover.

- - - - -


13 changed files:

- debian/changelog
- debian/control
- debian/copyright
- debian/patches/use-debian-libs
- − debian/setcover/LICENSE.md
- − debian/setcover/LinearMultiArray.h
- − debian/setcover/Main.cpp
- − debian/setcover/Makefile
- − debian/setcover/README.md
- − debian/setcover/SetCover.cpp
- − debian/setcover/SetCover.h
- − debian/setcover/SetElement.h
- − debian/setcover/testdatafile


Changes:

=====================================
debian/changelog
=====================================
@@ -1,6 +1,6 @@
 pufferfish (1.7.0-1) UNRELEASED; urgency=medium
 
-  * Initial release. (Closes: #XXXXXX)
+  * Initial release. (Closes: #944785)
   TODO: ask upstream to upgrade their use of spdlog, cereal, and fmt
 
  -- Michael R. Crusoe <crusoe at debian.org>  Tue, 19 Jan 2021 08:03:12 +0100


=====================================
debian/control
=====================================
@@ -8,6 +8,7 @@ Build-Depends: debhelper-compat (= 13),
                pkg-config,
                libjemalloc-dev,
                libseqlib-dev,
+               libsetcover-dev,
                libtbb-dev,
                libbz2-dev,
                chrpath


=====================================
debian/copyright
=====================================
@@ -172,10 +172,6 @@ Files: debian/*
 Copyright: 2019 Michael R. Crusoe <michael.crusoe at gmail.com>
 License: GPL-3+
 
-Files: debian/setcover/*
-Copyright: (c) 2013 Martin Steinegger
-License: Expat
-
 License: GPL-3+
  This package is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by


=====================================
debian/patches/use-debian-libs
=====================================
@@ -9,7 +9,7 @@
  
  ##
  # OSX is strange (some might say, stupid in this regard).  Deal with it's quirkines here.
-@@ -363,43 +363,17 @@
+@@ -363,55 +363,12 @@
  message("TBB_LIBRARIES = ${TBB_LIBRARIES}")
  
  
@@ -45,27 +45,39 @@
  
  
  
- ExternalProject_Add(libSetCover
+-ExternalProject_Add(libSetCover
 -        GIT_REPOSITORY https://github.com/martin-steinegger/setcover.git
 -        GIT_TAG        master
-         UPDATE_COMMAND ""
-         CONFIGURE_COMMAND ""
-         UPDATE_DISCONNECTED 1
-+        DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_SOURCE_DIR}/debian/setcover ${CMAKE_CURRENT_SOURCE_DIR}/external/
-         BUILD_IN_SOURCE TRUE
-         DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/setcover
-         SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/setcover
+-        UPDATE_COMMAND ""
+-        CONFIGURE_COMMAND ""
+-        UPDATE_DISCONNECTED 1
+-        BUILD_IN_SOURCE TRUE
+-        DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/setcover
+-        SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/setcover
+-        INSTALL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external/install
+-        BUILD_COMMAND     make -j8
+-        INSTALL_COMMAND     ar rcs libSetCover.a SetCover.o &&
+-        mkdir -p <INSTALL_DIR>/lib && mkdir -p <INSTALL_DIR>/include &&
+-        cp libSetCover.a <INSTALL_DIR>/lib &&
+-        cp SetCover.h <INSTALL_DIR>/include &&
+-        cp SetElement.h <INSTALL_DIR>/include &&
+-        cp LinearMultiArray.h <INSTALL_DIR>/include
+-        )
+ endif() # end of BUILD_PUFF_FOR_SALMON
+ 
+ set(LIB_FLAGS "-L ${CMAKE_CURRENT_SOURCE_DIR}/external/lib")
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
-@@ -163,7 +163,6 @@
+@@ -163,8 +163,6 @@
  )
  target_compile_options(cedar PUBLIC "$<$<CONFIG:DEBUG>:${PUFF_DEBUG_FLAGS}>")
  target_compile_options(cedar PUBLIC "$<$<CONFIG:RELEASE>:${PUFF_RELEASE_FLAGS}>")
 -add_dependencies(cedar libseqlib)
- add_dependencies(cedar libSetCover)
+-add_dependencies(cedar libSetCover)
  
  add_executable(filtersam testing/SAMFilter.cpp)
-@@ -173,7 +172,6 @@
+ target_include_directories(filtersam PRIVATE
+@@ -173,7 +171,6 @@
      )
  target_compile_options(filtersam PUBLIC "$<$<CONFIG:DEBUG>:${PUFF_DEBUG_FLAGS}>")
  target_compile_options(filtersam PUBLIC "$<$<CONFIG:RELEASE>:${PUFF_RELEASE_FLAGS}>")
@@ -73,7 +85,7 @@
  
  #get_target_property(dirs filtersam INCLUDE_DIRECTORIES)
  #foreach(dir ${dirs})
-@@ -200,6 +198,6 @@
+@@ -200,6 +197,6 @@
  target_link_libraries(edgedensity Threads::Threads z puffer ${ASAN_LIB})
  target_link_libraries(edgedensity2 Threads::Threads z puffer ${ASAN_LIB})
  #target_link_libraries(krakmap Threads::Threads puffer ${ASAN_LIB})


=====================================
debian/setcover/LICENSE.md deleted
=====================================
@@ -1,9 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Martin Steinegger 
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


=====================================
debian/setcover/LinearMultiArray.h deleted
=====================================
@@ -1,72 +0,0 @@
-#ifndef __graphcluster__LinearMultiArray__
-#define __graphcluster__LinearMultiArray__
-#include <algorithm>
-#include <cstdlib>
-
-
-
-
-template<class T> class linear_multi_array
-{
-public:
-    linear_multi_array(unsigned int * element_size_lookup,
-                       unsigned int element_size,
-                       unsigned int size)
-    {
-        this->size = std::max((unsigned int)1,size); //at least one
-        multi_array = (T*) malloc( sizeof(T)*size);
-        next_pos_to_write = (T**) malloc( sizeof(T *)*(element_size+1));
-        int last_element=0;
-        for(unsigned int i = 0; i <= element_size; i++){
-            this->xorSwap(&element_size_lookup[0], &element_size_lookup[i+1]);
-            element_size_lookup[i+1] = last_element+element_size_lookup[i+1];
-            last_element = element_size_lookup[i+1];
-        }
-        this->element_offset = element_size_lookup;
-        
-        
-        for(unsigned int i = 0; i <= element_size; i++){
-            next_pos_to_write[i] = &multi_array[element_offset[i]];
-        }
-
-    }
-        
-        
-    
-    ~linear_multi_array() {free(multi_array); free(next_pos_to_write);}
-
-    const std::pair<T*, int> get_array(int i); // get value
-    void add_value_at(int i,T element); // push it
-    T   *multi_array;                   // the array
-    unsigned int size;                  // size of the whole array
-    
-private:
-    unsigned int *element_offset;    // element lookuptable
-    T   **next_pos_to_write;
-    void xorSwap (unsigned int * x, unsigned int * y);
-};
-
-template<class T> void linear_multi_array<T>::xorSwap (unsigned int * x, unsigned int * y) {
-    *x ^= *y;
-    *y ^= *x;
-    *x ^= *y;
-}
-
-template<class T> const std::pair<T*, int> linear_multi_array<T>::get_array(int i)
-{
-    std::pair<T*,int> ret_value;
-    int from = element_offset[i];
-    int to   = element_offset[i+1];
-    int size = to - from;
-    ret_value.second = size;
-    ret_value.first  = &multi_array[from];
-    return ret_value;
-}
-
-template<class T> void linear_multi_array<T>::add_value_at(int i,T element)
-{
-    *(next_pos_to_write[i]) = element;
-    next_pos_to_write[i]++;
-}
-
-#endif


=====================================
debian/setcover/Main.cpp deleted
=====================================
@@ -1,247 +0,0 @@
-//
-//  FixedSizeArrayStack.h
-//  graphcluster
-//
-//  Created by Martin Steinegger on 21.05.13.
-//  Copyright (c) 2013 Martin Steinegger. All rights reserved.
-//
-
-#include <iostream>
-#include "LinearMultiArray.h"
-#include "SetCover.h"
-#include <list>
-#include <map>
-#include <sstream>
-#include <string>
-#include <fstream>
-#include <vector>
-#include <istream>
-#include <cstring>
-#include <stdlib.h> 
-
-//  10 5
-//  5 7 8 9 10
-//  5 7
-//  1 3 6 10
-//  4 6 7 9 10
-//  1 2 8 10
-struct set_data {
-    unsigned int ** sets;
-    unsigned short ** weights;
-    unsigned int * set_sizes;
-    unsigned int * element_size_lookup;
-    unsigned int set_count;
-    unsigned int uniqu_element_count;
-    unsigned int all_element_count;
-    unsigned int max_weight;
-};
-
-
-set_data create_random_set_data(int set_size, int elment_count ){
-    int n,m;
-    m=set_size;
-    n=elment_count;
-    set_data ret_struct;
-    ret_struct.set_count = m;
-    ret_struct.uniqu_element_count = n;
-    
-    
-    unsigned int * element_buffer=(unsigned int *)malloc(n * sizeof(unsigned int));
-    ret_struct.element_size_lookup = (unsigned int *)malloc((n+2) * sizeof(unsigned int));
-    unsigned int * element_size=ret_struct.element_size_lookup;
-    memset(&element_size[0], 0, sizeof(unsigned int)*n+2);
-    
-    ret_struct.set_sizes = (unsigned int *)malloc((m+1) * sizeof(unsigned int));
-    ret_struct.set_sizes[m]=0;
-    unsigned int * set_sizes=ret_struct.set_sizes;
-    
-    ret_struct.sets = (unsigned int **)malloc(m * sizeof(unsigned int*));
-    unsigned int ** sets   = ret_struct.sets;
-
-    
-    ret_struct.weights = (unsigned short **)malloc(m * sizeof(unsigned short*));
-    unsigned short ** weights = ret_struct.weights;
-    
-    ret_struct.max_weight = 0;
-    ret_struct.all_element_count=0;
-    for(int i = 0; i<m; i++){
-        int element_counter=0;
-        for(int j = 0; j < 10; j++)        {
-            int curr_element=rand()%(elment_count-2 + 1) + 1;
-            if(curr_element == 0)
-                continue;
-            element_buffer[element_counter++]=curr_element;
-            element_size[curr_element]++;
-            ret_struct.all_element_count++;
-        }
-        if(ret_struct.max_weight < element_counter){
-            ret_struct.max_weight = element_counter;
-        }
-        
-        unsigned int * elements = new unsigned int[element_counter];
-        memcpy(elements,element_buffer,sizeof(int)*element_counter);
-        unsigned short * weight = new unsigned short[element_counter];
-        std::fill_n(weight, element_counter, 1);
-        
-        weights[i] = weight;
-        sets[i] = elements;
-        set_sizes[i]=element_counter;
-        
-    }
-    free(element_buffer);
-    
-    return ret_struct;
-}
-
-
-
-bool validate_result(std::list<set *> * ret,unsigned int uniqu_element_count){
-    std::list<set *>::const_iterator iterator;
-    unsigned int result_element_count=0;
-    for (iterator = ret->begin(); iterator != ret->end(); ++iterator) {
-        set::element * element =(*iterator)->elements;
-        do{
-            result_element_count++;
-        }while((element=element->next)!=NULL);
-    }
-    return (uniqu_element_count==result_element_count)? true : false;
-}
-
-
-set_data read_in_set_data(char * dbname){
-    // Open the stream
-    std::ifstream file(dbname);
-    
-    if ( !file )
-    {
-        std::cout << "File dosen't exist" << std::endl;
-    }
-    std::stringstream buffer;
-        
-    buffer << file.rdbuf();
-    
-    file.close();
-
-    set_data ret_struct;
-    
-    std::string line;
-    std::getline(buffer, line);
-    std::istringstream line_stream(line);
-    int n,m;
-    line_stream >> n >> m;
-    ret_struct.set_count = m;
-    ret_struct.uniqu_element_count = n;   
-    
-    
-    unsigned int * element_buffer=(unsigned int *)malloc(n * sizeof(unsigned int));
-    unsigned int * element_size=new unsigned int[n+2];
-    memset(&element_size[0], 0, sizeof(unsigned int)*(n+2));
-    ret_struct.element_size_lookup = element_size;
-    unsigned int * set_size=new unsigned int[m];
-    
-    ret_struct.set_sizes = set_size;
-    unsigned int ** sets   = new unsigned int*[m];
-    ret_struct.sets = sets;
-    unsigned short ** weights = new unsigned short*[m];
-    ret_struct.weights = weights;
-    ret_struct.max_weight = 0;
-    ret_struct.all_element_count=0;
-
-    for(int i = 0; i<m; i++){
-        std::getline(buffer, line);
-        std::string token;
-        int element_counter=0;
-        line_stream.clear();
-        line_stream.str(line);
-        while (std::getline(line_stream, token, ' '))
-        {
-            int curr_element=atoi(token.c_str());
-            if(curr_element == 0)
-                continue;
-            element_buffer[element_counter++]=curr_element;
-            element_size[curr_element]++;
-            ret_struct.all_element_count++;
-        }
-        if(ret_struct.max_weight < element_counter){
-            ret_struct.max_weight = element_counter;
-        }
-
-        unsigned int * elements = new unsigned int[element_counter];
-        memcpy(elements,element_buffer,sizeof(int)*element_counter);
-        unsigned short * weight = new unsigned short[element_counter];
-        std::fill_n(weight, element_counter, 1);
-
-        weights[i] = weight;
-        sets[i] = elements;
-        set_size[i]=element_counter;
-
-    }
-
-    return ret_struct;
-}
-
-
-
-int main()
-{
-
-    std::cout << "start readin";
-    std::cout.flush();
-    set_data set_data = read_in_set_data("testdatafile");
-//    set_data set_data = create_random_set_data(29000000,29000000);
-    std::cout << " --- Done" << std::endl;
-    std::cout << "init setcover";
-    std::cout.flush();
-
-
-    
-    set_cover setcover(set_data.set_count,
-                       set_data.uniqu_element_count,
-                       set_data.max_weight,
-                       set_data.all_element_count,
-                       set_data.element_size_lookup
-                       );
-
-    for(int i = 0; i < set_data.set_count; i++){
-        setcover.add_set(i+1, set_data.set_sizes[i]
-                         ,(const unsigned int*)set_data.sets[i],
-                          (const unsigned short*)set_data.weights[i],
-                          set_data.set_sizes[i]);
-        free(set_data.sets[i]);
-        free(set_data.weights[i]);
-
-    }
-    std::cout << " --- Done" << std::endl;
-
-//    readInData("/Users/aluucard/Documents/workspace/graphcluster/graphcluster/test_data/graphdb_final",
-//               "/Users/aluucard/Documents/workspace/graphcluster/graphcluster/test_data/graphdb_final.index");
-
-    std::cout << "execute setcover" ;
-    std::cout.flush();
-
-    std::list<set *> ret= setcover.execute_set_cover();
-    std::cout << " --- Done" << std::endl;
-    std::cout << "validate result ";
-    if(validate_result(&ret,set_data.uniqu_element_count))
-        std::cout << " VALID ";
-    else
-        std::cout << " NOT VALID ";
-
-    std::cout << " --- Done" << std::endl;
-
-    
-    std::cout << "write result setcover" << std::endl;
-    std::cout.flush();
-
-    std::list<set *>::const_iterator iterator;
-    for (iterator = ret.begin(); iterator != ret.end(); ++iterator) {
-        std::cout << "set id " << (*iterator)->set_id << " Element: ";
-        set::element * element =(*iterator)->elements;
-        do{
-            std::cout << element->element_id << ", ";
-        }while((element=element->next)!=NULL);
-        std::cout << std::endl;
-    }
-
-}
-


=====================================
debian/setcover/Makefile deleted
=====================================
@@ -1,38 +0,0 @@
-PROGRAM = setcover 
-C_FILES := $(shell find . ! -name "Test*" -name "*.cpp")
-OBJS := $(patsubst %.cpp, %.o, $(C_FILES))
-CC = g++ 
-CFLAGS = -Wall -m64 -ffast-math -ftree-vectorize -O3 -Wno-write-strings 
-LDFLAGS =
-
-all: $(PROGRAM)
-
-$(PROGRAM): .depend $(OBJS)
-	$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(PROGRAM)
-
-depend: .depend
-
-.depend: cmd = gcc -MM -MF depend $(var); cat depend >> .depend;
-.depend:
-	@echo "Generating dependencies..."
-	@$(foreach var, $(C_FILES), $(cmd))
-	@rm -f depend
-
--include .depend
-
-# These are the pattern matching rules. In addition to the automatic
-# variables used here, the variable $* that matches whatever % stands for
-# can be useful in special cases.
-%.o: %.cpp
-	$(CC) $(CFLAGS) -c $< -o $@
-
-%: %.cpp
-	$(CC) $(CFLAGS) -o $@ $<
-
-clean:
-	rm -f .depend *.o
-
-.PHONY: clean depend
-
-
-


=====================================
debian/setcover/README.md deleted
=====================================
@@ -1,46 +0,0 @@
-# Time/Memory Linear greedy set cover  #
-
-This version of the greedy set cover is a well optimized linear version. 
-
-## input format ##
-The input format is 
-
-    10 5
-    5 7 8 9 10
-    5 7
-    1 3 6 10
-    4 6 7 9 10
-    1 2 8 10
-
-10 = elements
-5  = sets
-Every line represents one set by the ids
-
-## How to use ##
-
-    git clone https://github.com/martin-steinegger/setcover
-    cd setcover
-    make
-    ./setcover testdatafile
-
-
-The program can be called like ./setcover filename
-
-Example output  
-
-    $ ./setcover testdatafile 
-    start readin --- Done
-    init setcover --- Done
-    execute setcover --- Done
-    validate result  VALID  --- Done
-    write result setcover
-    set id 4 Element: 4, 6, 7, 9, 10,
-    set id 5 Element: 1, 2, 8,
-    set id 1 Element: 5,
-    set id 3 Element: 3,
-
-
-## Performance ##
-The calculation for 40.000.000 sets with avg. 10 elements per set takes around 4 Minutes on a m2.2xlarge instance.
-
-![alt tag](https://github.com/martin-steinegger/setcover/blob/master/performance_plot.png?raw=true)


=====================================
debian/setcover/SetCover.cpp deleted
=====================================
@@ -1,180 +0,0 @@
-//
-//  SetCover.cpp
-//  graphcluster
-//
-//  Created by Martin Steinegger on 21.05.13.
-//  Copyright (c) 2013 Martin Steinegger. All rights reserved.
-//
-
-#include "SetCover.h"
-#include <string.h> // memset
-
-
-set_cover::set_cover(unsigned int set_size,
-                     unsigned int uniqu_element_size,
-                     unsigned int weight_range,
-                     unsigned int all_element_count,
-                     unsigned int * element_size_lookup){
-    this->set_size = set_size;
-    this->element_size = uniqu_element_size;
-    this->weight_range = weight_range;
-    this->ordered_by_score_set = new set*[weight_range+1]; // score range
-    memset(this->ordered_by_score_set, 0, sizeof(set *)*(weight_range+1)); // init with 0 (no element is set)
-    
-    this->element_lookup     = new linear_multi_array<set::element*>(element_size_lookup,uniqu_element_size,all_element_count);
-    this->set_elements = (set::element *) malloc(sizeof(set::element)*all_element_count);
-    
-    this->sets = (set *) malloc(sizeof(set)*(set_size+1));
-    this->add_position = 0;
-}
-
-set_cover::~set_cover(){
-    free(set_elements);
-    free(sets);
-    delete element_lookup;
-    delete[] ordered_by_score_set;
-}
-
-
-set * set_cover::create_set_at_weight_position(int weight,set * set_to_add){
-    set * weighted_position_start_set=this->ordered_by_score_set[weight];
-    
-    if(weighted_position_start_set == 0) { // first element is not yet set
-        set_to_add->next = NULL;
-        set_to_add->last = NULL;
-    }else{  // first element is already setted
-        weighted_position_start_set->last = set_to_add;
-        set_to_add->next = weighted_position_start_set;
-    }
-    this->ordered_by_score_set[weight] = set_to_add;
-    return set_to_add;
-}
-
-void set_cover::add_set(const int set_id, const int set_weight,
-                        const unsigned int * element_ids,
-                        const unsigned short * weights,
-                        const int element_size){
-    
-    set::element * element_last_ptr = NULL;
-    set::element * element_first_ptr = NULL;
-    set * curr_set = &this->sets[set_id];
-    curr_set->next = NULL;
-    curr_set->last = NULL;
-    curr_set->elements = NULL;		
-    curr_set =create_set_at_weight_position(set_weight,curr_set);
-    curr_set->set_id = set_id;
-    curr_set->weight = set_weight;
-    
-    // set up doubled linked list + fill element_lookup
-    for(int i = 0 ; i < element_size; i++) {
-        // init elemnt with id, weight information
-        set::element * curr_element_ptr=&set_elements[add_position+i];
-        curr_element_ptr->element_id=element_ids[i];
-        curr_element_ptr->weight=weights[i];
-        if(element_first_ptr == NULL) // first ptr is not yet set
-            element_first_ptr = curr_element_ptr;
-        // navigation (double linked list, parent)
-        curr_element_ptr->parent_set = curr_set;
-        curr_element_ptr->last = element_last_ptr;
-        if(element_last_ptr != NULL) // not in first iteration
-            element_last_ptr->next = curr_element_ptr;
-        element_last_ptr = curr_element_ptr;
-        // element_lookup fill up
-        int element_id=curr_element_ptr->element_id;
-        element_lookup->add_value_at(element_id,curr_element_ptr);
-    }
-    add_position += element_size;
-    if(element_last_ptr!=NULL)
-        element_last_ptr->next = NULL; // last element points to NULL
-    curr_set->elements = element_first_ptr; // set element pointer to current_set
-
-}
-
-
-
-void set_cover::removeSet(set * s){
-    set::element * element=s->elements;
-    int s_set_id = s->set_id;
-    unplug_set(s);
-    do{ // for(Element element in elements
-        set::element * element_to_remove;
-        int element_id=element->element_id;
-        
-        std::pair<set::element**,int> element_lookup_structur=element_lookup->get_array(element_id);
-        set::element ** element_lookup_array = element_lookup_structur.first;
-        int array_size = element_lookup_structur.second;
-        for(int i =0; i < array_size;i++){
-            element_to_remove = element_lookup_array[i];
-            set * parent_set = element_to_remove->parent_set;
-            if(parent_set!=NULL && parent_set->set_id!=s_set_id){
-                unplug_set(parent_set);
-                parent_set->weight  -= element_to_remove->weight;
-                parent_set->elements = unplug_element(element_to_remove,parent_set->elements);
-                create_set_at_weight_position(parent_set->weight,parent_set);
-
-            }
-            //delete element_to_remove;
-        }
-
-    }while((element=element->next) != NULL);
-}
-
-set::element * set_cover::unplug_element(set::element * element_to_unplug,set::element * first_element) {
-    set::element * last_element=element_to_unplug->last;
-    set::element * next_element=element_to_unplug->next;
-    element_to_unplug->last       = NULL;
-    element_to_unplug->next       = NULL;
-    element_to_unplug->parent_set = NULL;
-
-    if(last_element == NULL && next_element==NULL){
-        return NULL;
-    }if(last_element == NULL){ // first element
-        next_element->last = NULL;
-        return next_element;
-    } else if (next_element == NULL) { // end of list
-        last_element->next = NULL;
-    } else { // middle of the list
-        last_element->next = next_element;
-        next_element->last = last_element;
-    }
-    return first_element;
-}
-
-
-void set_cover::unplug_set(set * set_to_unplug){
-    set * last_set = set_to_unplug->last;
-    set * next_set = set_to_unplug->next;
-    set_to_unplug->next = NULL;
-    set_to_unplug->last = NULL;
-    if(last_set == NULL && next_set == NULL){ // only one element left
-        ordered_by_score_set[set_to_unplug->weight] = NULL;
-    }else if(last_set == NULL){ // first set
-        next_set->last = NULL;
-        ordered_by_score_set[set_to_unplug->weight] = next_set;
-    } else if (next_set == NULL) { // last set
-        last_set->next = NULL;
-    } else { // set in the middle
-        last_set->next = next_set;
-        next_set->last = last_set;
-    }
-}
-
-
-
-std::list<set *> set_cover::execute_set_cover(){
-    //covered_vertex is a bit set which holds the covered states for all vertexes
-    std::list<set *> result;
-    for(int i = weight_range; i > 0;) {
-        while(this->ordered_by_score_set[i] == NULL && i > 0){
-            i--;
-        }
-        if(i==0){ // if i == 0 than score = 0 -> no element in set anymore
-            break;
-        }
-        set * max_set = this->ordered_by_score_set[i];
-        
-        removeSet(max_set);
-        result.push_back(max_set); // O(1)
-    }
-    return result;
-}


=====================================
debian/setcover/SetCover.h deleted
=====================================
@@ -1,56 +0,0 @@
-//
-//  SetCover.h
-//  graphcluster
-//
-//  Created by Martin Steinegger on 21.05.13.
-//  Copyright (c) 2013 Martin Steinegger. All rights reserved.
-//
-
-#ifndef __graphcluster__SetCover__
-#define __graphcluster__SetCover__
-
-#include <iostream>
-#include <list>
-#include "SetElement.h"
-#include "LinearMultiArray.h"
-class set_cover {
-public:
-    set_cover(unsigned int set_size,
-              unsigned int element_size,
-              unsigned int weight_range,
-              unsigned int all_element_count,
-              unsigned int * element_size_lookup);
-    ~set_cover();
-
-    void add_set(const int set_id, const int set_weight,
-                 const unsigned int * element_ids,
-                 const unsigned short * weights,
-                 const int element_size);
-    std::list<set *> execute_set_cover();
-/*
-    get_highest_weighted_set 
-    input 
-            int start_pos is the search start position 
-    output
-            returns the highest sets from a certaint position
-*/
-    set * get_highest_weighted_set(int start_pos);
-private:
-    unsigned int add_position;
-    int element_size;
-    int set_size;
-    int weight_range;
-    set ** ordered_by_score_set;
-    set::element * set_elements;
-    set * sets;
-
-    linear_multi_array<set::element *> * element_lookup;
-    linear_multi_array<set::element *> * set_element_lookup;
-    // methodes
-    void removeSet(set * s);
-    set::element * unplug_element(set::element * element_to_unplug,set::element * first_element);
-    void unplug_set(set * set_to_remove);
-    set * create_set_at_weight_position(int weight,set * set_to_add);
-
-};
-#endif /* defined(__graphcluster__SetCover__) */


=====================================
debian/setcover/SetElement.h deleted
=====================================
@@ -1,38 +0,0 @@
-//
-//  element.h
-//  graphcluster
-//
-//  Created by Martin Steinegger on 21.05.13.
-//  Copyright (c) 2013 Martin Steinegger. All rights reserved.
-//
-
-#ifndef __graphcluster__element__
-#define __graphcluster__element__
-#include <iostream>
-#include "SetElement.h"
-
-struct element_meta_data{
-    int element_id;
-    int count;
-};
-
-
-struct set {
-    int set_id;
-    unsigned short weight;
-    struct element {
-        unsigned int element_id;
-        unsigned short weight;
-        element(unsigned int element_id,unsigned short weight) : element_id(element_id), weight(weight){};
-        set * parent_set;
-        element * last;
-        element * next;
-    };
-    element * elements;
-    set * last;
-    set * next;
-};
-
-
-
-#endif /* defined(__graphcluster__element__) */


=====================================
debian/setcover/testdatafile deleted
=====================================
@@ -1,6 +0,0 @@
-10 5
-5 7 8 9 10
-5 7
-1 3 6 10
-4 6 7 9 10
-1 2 8 10



View it on GitLab: https://salsa.debian.org/med-team/pufferfish/-/compare/f2e8adec17d44582d08141cf8deeee39d7a693c1...6970c8da175972a47c3c2d90e4bba548ebc10097

-- 
View it on GitLab: https://salsa.debian.org/med-team/pufferfish/-/compare/f2e8adec17d44582d08141cf8deeee39d7a693c1...6970c8da175972a47c3c2d90e4bba548ebc10097
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20220329/d84a24e6/attachment-0001.htm>


More information about the debian-med-commit mailing list