Yep, and I've pulled recently as well.

On Tue, Aug 13, 2013 at 3:10 PM, Claudio Martella <
[email protected]> wrote:

> That's strange. This looks like a bug to me. Are you using trunk?
>
>
> On Mon, Aug 12, 2013 at 4:32 PM, Kyle Orlando <[email protected]>wrote:
>
>> Also, I realize that I just sent an uncommented version... sorry guys,
>> but the algorithm consists of just three supersteps:
>>
>>
>> Superstep 0.) Source sends list of source's neighbors to each neighbor
>>
>> Superstep 1.) Neighbor receives list of source's neighbors from
>> source, counts number of mutual neighbors, sends this value (in a
>> 1-element list) back to source
>>
>> Superstep 2.) Source receives messages from neighbors that contain
>> number of mutual neighbors. These are summed up and divided by the
>> number of possible connections between neighbors to get the local
>> clustering coefficient (between 0 and 1). This is set as the source
>> vertex's value.
>>
>> On Mon, Aug 12, 2013 at 7:28 AM, Kyle Orlando <[email protected]>
>> wrote:
>> > Alrighty, here's my code:
>> >
>> >           public void compute(
>> >                       Vertex<IntWritable, DoubleWritable, NullWritable>
>> vertex,
>> >                       Iterable<IntArrayListWritable> messages) throws
>> IOException {
>> >
>> >                   if (isSource(vertex)) {
>> >                           if (getSuperstep() == 0) {
>> >                                   System.out.println("\nSUPERSTEP
>> 0\n------------------------------");
>> >                                   IntArrayListWritable sourceNeighbors
>> = new IntArrayListWritable();
>> >
>> >                                   vertex.setValue(new
>> DoubleWritable(0));
>> >
>> >                                   for (Edge<IntWritable, NullWritable>
>> edge : vertex.getEdges()) {
>> >                                           IntWritable targetVertex = new
>> > IntWritable(edge.getTargetVertexId().get());
>> >
>> sourceNeighbors.add(targetVertex);
>> >                                   }
>> >
>> >                                   for (IntWritable neighbor :
>> sourceNeighbors) {
>> >                                           sendMessage(neighbor,
>> sourceNeighbors);
>> >                                           System.out.println("Vertex "
>> + vertex.getId() + " sends " +
>> > sourceNeighbors + " to " + neighbor);
>> >                                   }
>> >
>> >                           } else if (getSuperstep() == 2) {
>> >                                   int total = vertex.getNumEdges();
>> >                                   int possibleCombos = total * (total -
>> 1);
>> >                                   int mutualNeighbors = 0;
>> >                                   double coefficient = 0;
>> >                                   int count = 1;
>> >
>> >                                   System.out.println("\nSUPERSTEP
>> 2\n------------------------------");
>> >
>> >                                   for (IntArrayListWritable message :
>> messages) {
>> >                                           System.out.println("Message "
>> + count + " contains: " + message);
>> >                                           mutualNeighbors +=
>> message.get(0).get();
>> >                                           count++;
>> >                                   }
>> >
>> >                                   if (possibleCombos > 0) {
>> >                                           coefficient =
>> (double)mutualNeighbors / possibleCombos;
>> >                                           vertex.setValue(new
>> DoubleWritable(coefficient));
>> >                                   }
>> >
>> >                           }
>> >                   } else {
>> >                           vertex.setValue(new DoubleWritable(0));
>> >
>> >                           if (getSuperstep() == 1) {
>> >                                   int mutualNeighbors = 0;
>> >
>> >                                   System.out.println("\nSUPERSTEP
>> 1\n------------------------------");
>> >                                   IntArrayListWritable sourceNeighbors
>> = messages.iterator().next();
>> >                                   System.out.println("Vertex " +
>> vertex.getId() + " receives " +
>> > sourceNeighbors);
>> >
>> >                                   for (Edge<IntWritable, NullWritable>
>> edge : vertex.getEdges()) {
>> >                                           IntWritable targetVertex = new
>> > IntWritable(edge.getTargetVertexId().get());
>> >                                           if
>> (sourceNeighbors.contains(targetVertex)) mutualNeighbors++;
>> >                                   }
>> >
>> >                                   IntArrayListWritable neighborCount =
>> new IntArrayListWritable();
>> >                                   neighborCount.add(new
>> IntWritable(mutualNeighbors));
>> >
>> >                                   sendMessage(new
>> IntWritable(SOURCE_ID.get(getConf())), neighborCount);
>> >                                   System.out.println("Vertex " +
>> vertex.getId() + " sends " +
>> > neighborCount + " to Vertex " + SOURCE_ID.get(getConf()));
>> >
>> >                           }
>> >                   }
>> >
>> >                 vertex.voteToHalt();
>> >           }
>> >
>> >
>> > On Fri, Aug 9, 2013 at 10:15 PM, Claudio Martella
>> > <[email protected]> wrote:
>> >> you'd have to show us the code in the compute method. your problem
>> might be
>> >> caused by object reusal.
>> >>
>> >>
>> >> On Fri, Aug 9, 2013 at 9:05 PM, Kyle Orlando <[email protected]
>> >
>> >> wrote:
>> >>>
>> >>> Hello,
>> >>>
>> >>> I am trying to write code to compute the local clustering coefficient
>> >>> of a vertex/some vertices, and to do this I send a message that
>> >>> contains a list of the source's neighbors to each of its neighbors.
>> >>> This is in, of course, an IntArrayListWritable.  I check the list that
>> >>> I am sending before invoking sendMessage(), and it appears to be
>> >>> correct. However, when I use message.iterator.next() or something
>> >>> similar, the IntArrayListWritable objects seem to repeat or something.
>> >>> I did some logging, and here was the output:
>> >>>
>> >>> SUPERSTEP 0
>> >>> ------------------------------
>> >>> Vertex 1 sends [2, 3, 4] to Vertex 2
>> >>> Vertex 1 sends [2, 3, 4] to Vertex 3
>> >>> Vertex 1 sends [2, 3, 4] to Vertex 4
>> >>>
>> >>> SUPERSTEP 1
>> >>> ------------------------------
>> >>> Vertex 2 receives [2, 3, 4]
>> >>> Vertex 2 sends [1] to Vertex 1
>> >>>
>> >>> SUPERSTEP 1
>> >>> ------------------------------
>> >>> Vertex 3 receives [2, 3, 4, 2, 3, 4]
>> >>> Vertex 3 sends [1] to Vertex 1
>> >>>
>> >>> SUPERSTEP 1
>> >>> ------------------------------
>> >>> Vertex 4 receives [2, 3, 4, 2, 3, 4, 2, 3, 4]
>> >>> Vertex 4 sends [0] to Vertex 1
>> >>>
>> >>> SUPERSTEP 2
>> >>> ------------------------------
>> >>> Message 1 contains: [1]
>> >>> Message 2 contains: [1, 1, 1]
>> >>> Message 3 contains: [1, 1, 1, 1, 1, 0]
>> >>>
>> >>> What is happening?
>> >>>
>> >>> --
>> >>> Kyle Orlando
>> >>> Computer Engineering Major
>> >>> University of Maryland
>> >>
>> >>
>> >>
>> >>
>> >> --
>> >>    Claudio Martella
>> >>    [email protected]
>> >
>> >
>> >
>> > --
>> > Kyle Orlando
>> > Computer Engineering Major
>> > University of Maryland
>>
>>
>>
>> --
>> Kyle Orlando
>> Computer Engineering Major
>> University of Maryland
>>
>
>
>
> --
>    Claudio Martella
>    [email protected]
>



-- 
Kyle Orlando
Computer Engineering Major
University of Maryland

Reply via email to