Skip to content

Commit 10bc86e

Browse files
committed
Improved updateStreams checks
1 parent 2115eb8 commit 10bc86e

File tree

6 files changed

+137
-52
lines changed

6 files changed

+137
-52
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package ldbc.snb.datagen.generator;
2+
3+
import ldbc.snb.datagen.dictionary.Dictionaries;
4+
import ldbc.snb.datagen.objects.Knows;
5+
import ldbc.snb.datagen.objects.Person;
6+
import ldbc.snb.datagen.util.RandomGeneratorFarm;
7+
8+
import java.util.ArrayList;
9+
10+
/**
11+
* Created by aprat on 11/15/14.
12+
*/
13+
public class ClusteringKnowsGenerator implements KnowsGenerator {
14+
15+
private RandomGeneratorFarm randomFarm;
16+
17+
public ClusteringKnowsGenerator() {
18+
this.randomFarm = new RandomGeneratorFarm();
19+
}
20+
21+
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound ) {
22+
randomFarm.resetRandomGenerators(seed);
23+
for( int i = 0; i < persons.size(); ++i ) {
24+
Person p = persons.get(i);
25+
for( int j = i+1; (p.maxNumKnows()*upperBound > p.knows().size()) /*&& (j < (i + 1000))*/ && (j < persons.size()); ++j ) {
26+
if( know(p, persons.get(j), j - i, upperBound)) {
27+
createKnow(p, persons.get(j));
28+
}
29+
}
30+
}
31+
}
32+
33+
boolean know( Person personA, Person personB, int dist, float upperBound ) {
34+
if((float)(personA.knows().size()) >= (float)(personA.maxNumKnows())*upperBound ||
35+
personB.knows().size() >= (float)(personB.maxNumKnows())*upperBound ) return false;
36+
double randProb = randomFarm.get(RandomGeneratorFarm.Aspect.UNIFORM).nextDouble();
37+
double prob = Math.pow(DatagenParams.baseProbCorrelated, dist);
38+
if ((randProb < prob) || (randProb < DatagenParams.limitProCorrelated)) {
39+
return true;
40+
}
41+
return false;
42+
}
43+
44+
void createKnow( Person personA, Person personB ) {
45+
long creationDate = Dictionaries.dates.randomKnowsCreationDate(
46+
randomFarm.get(RandomGeneratorFarm.Aspect.DATE),
47+
personA,
48+
personB);
49+
creationDate = creationDate - personA.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personA.creationDate()));
50+
creationDate = creationDate - personB.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personB.creationDate()));
51+
if( creationDate <= Dictionaries.dates.getEndDateTime() ) {
52+
float similarity = Person.Similarity(personA,personB);
53+
personB.knows().add(new Knows(personA, creationDate, similarity));
54+
personA.knows().add(new Knows(personB, creationDate, similarity));
55+
}
56+
}
57+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package ldbc.snb.datagen.generator;
2+
3+
import ldbc.snb.datagen.dictionary.Dictionaries;
4+
import ldbc.snb.datagen.objects.Knows;
5+
import ldbc.snb.datagen.objects.Person;
6+
import ldbc.snb.datagen.util.RandomGeneratorFarm;
7+
8+
import java.util.ArrayList;
9+
10+
/**
11+
* Created by aprat on 11/15/14.
12+
*/
13+
public class DistanceKnowsGenerator {
14+
15+
private RandomGeneratorFarm randomFarm;
16+
17+
public DistanceKnowsGenerator() {
18+
this.randomFarm = new RandomGeneratorFarm();
19+
}
20+
21+
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound ) {
22+
randomFarm.resetRandomGenerators(seed);
23+
for( int i = 0; i < persons.size(); ++i ) {
24+
Person p = persons.get(i);
25+
for( int j = i+1; (p.maxNumKnows()*upperBound > p.knows().size()) /*&& (j < (i + 1000))*/ && (j < persons.size()); ++j ) {
26+
if( know(p, persons.get(j), j - i, upperBound)) {
27+
createKnow(p, persons.get(j));
28+
}
29+
}
30+
}
31+
}
32+
33+
boolean know( Person personA, Person personB, int dist, float upperBound ) {
34+
if((float)(personA.knows().size()) >= (float)(personA.maxNumKnows())*upperBound ||
35+
personB.knows().size() >= (float)(personB.maxNumKnows())*upperBound ) return false;
36+
double randProb = randomFarm.get(RandomGeneratorFarm.Aspect.UNIFORM).nextDouble();
37+
double prob = Math.pow(DatagenParams.baseProbCorrelated, dist);
38+
if ((randProb < prob) || (randProb < DatagenParams.limitProCorrelated)) {
39+
return true;
40+
}
41+
return false;
42+
}
43+
44+
void createKnow( Person personA, Person personB ) {
45+
long creationDate = Dictionaries.dates.randomKnowsCreationDate(
46+
randomFarm.get(RandomGeneratorFarm.Aspect.DATE),
47+
personA,
48+
personB);
49+
creationDate = creationDate - personA.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personA.creationDate()));
50+
creationDate = creationDate - personB.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personB.creationDate()));
51+
if( creationDate <= Dictionaries.dates.getEndDateTime() ) {
52+
float similarity = Person.Similarity(personA,personB);
53+
personB.knows().add(new Knows(personA, creationDate, similarity));
54+
personA.knows().add(new Knows(personB, creationDate, similarity));
55+
}
56+
}
57+
}
Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,7 @@
11
package ldbc.snb.datagen.generator;
22

3-
import ldbc.snb.datagen.dictionary.Dictionaries;
4-
import ldbc.snb.datagen.objects.Knows;
5-
import ldbc.snb.datagen.objects.Person;
6-
import ldbc.snb.datagen.util.RandomGeneratorFarm;
7-
8-
import java.util.ArrayList;
9-
103
/**
11-
* Created by aprat on 11/15/14.
4+
* Created by aprat on 11/06/15.
125
*/
13-
public class KnowsGenerator {
14-
15-
private RandomGeneratorFarm randomFarm;
16-
17-
public KnowsGenerator() {
18-
this.randomFarm = new RandomGeneratorFarm();
19-
}
20-
21-
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound ) {
22-
randomFarm.resetRandomGenerators(seed);
23-
for( int i = 0; i < persons.size(); ++i ) {
24-
Person p = persons.get(i);
25-
for( int j = i+1; (p.maxNumKnows()*upperBound > p.knows().size()) /*&& (j < (i + 1000))*/ && (j < persons.size()); ++j ) {
26-
if( know(p, persons.get(j), j - i, upperBound)) {
27-
createKnow(p, persons.get(j));
28-
}
29-
}
30-
}
31-
}
32-
33-
boolean know( Person personA, Person personB, int dist, float upperBound ) {
34-
if((float)(personA.knows().size()) >= (float)(personA.maxNumKnows())*upperBound ||
35-
personB.knows().size() >= (float)(personB.maxNumKnows())*upperBound ) return false;
36-
double randProb = randomFarm.get(RandomGeneratorFarm.Aspect.UNIFORM).nextDouble();
37-
double prob = Math.pow(DatagenParams.baseProbCorrelated, dist);
38-
if ((randProb < prob) || (randProb < DatagenParams.limitProCorrelated)) {
39-
return true;
40-
}
41-
return false;
42-
}
43-
44-
void createKnow( Person personA, Person personB ) {
45-
long creationDate = Dictionaries.dates.randomKnowsCreationDate(
46-
randomFarm.get(RandomGeneratorFarm.Aspect.DATE),
47-
personA,
48-
personB);
49-
creationDate = creationDate - personA.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personA.creationDate()));
50-
creationDate = creationDate - personB.creationDate() >= DatagenParams.deltaTime ? creationDate : creationDate + (DatagenParams.deltaTime - (creationDate - personB.creationDate()));
51-
if( creationDate <= Dictionaries.dates.getEndDateTime() ) {
52-
float similarity = Person.Similarity(personA,personB);
53-
personB.knows().add(new Knows(personA, creationDate, similarity));
54-
personA.knows().add(new Knows(personB, creationDate, similarity));
55-
}
56-
}
6+
public interface KnowsGenerator {
577
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ldbc.snb.datagen.generator.tools;
2+
3+
/**
4+
* Created by aprat on 17/06/15.
5+
*/
6+
public class GraphUtils {
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ldbc.snb.datagen.generator.tools;
2+
3+
/**
4+
* Created by aprat on 17/06/15.
5+
*/
6+
public class MinHash {
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package ldbc.snb.datagen.generator.tools;
2+
3+
/**
4+
* Created by aprat on 18/06/15.
5+
*/
6+
public class PersonGraph {
7+
}

0 commit comments

Comments
 (0)