String Map K Mer Assignment

From CSE231 Wiki
Jump to navigation Jump to search

Group Assignment

This is a group assignment.

Code To Investigate

Java Util Concurrent

ConcurrentHashMap

KMerUtils

The following methods should be useful as you build the assignment.

Check out the Javadocs either on the web, or in the comments in KMerUtils.java for further details on how they work.


String toString(byte[] sequence, int offset, int kMerLength)

public static String toString(byte[] sequence, int offset, int kMerLength) {
	return new String(sequence, offset, kMerLength, StandardCharsets.UTF_8);
}


KMerCounts

interface KMerCount

class StringMapKMerCount
class ByteArrayRangeMapKMerCount

Code To Implement

StringHashMapKMerCounter

class: StringHashMapKMerCounter.java Java.png
methods: parse
package: kmer.group.stringmap
source folder: student/src/main/java

method: public KMerCount parse(List<byte[]> sequences, int k) Sequential.svg (sequential implementation only)

In this completely sequential implementation, you will have to write the parse method. The method takes in a list of arrays of bytes and a k-mer length. It should return an instance of MapKMerCount(which takes in a map), a class provided to you which does exactly what its name suggests. In order to implement this method, we recommend taking a look at the KMerUtils class and more specifically the toString method, which converts a given byte array into a String in order to make it compatible with the String HashMap.

parse should go through the amount of possible k-mers for every byte array in the list of sequences. As it goes through the bytes in the array, use the KMerUtils.toString() method to create a string to use for the HashMap. The map should take in a String as the key and an Integer as the value. We recommend using the map.compute() method and reviewing how to use lambdas.

StringConcurrentHashMapKMerCounter

class: StringConcurrentHashMapKMerCounter.java Java.png
methods: parse
package: kmer.group.stringmap
source folder: student/src/main/java

method: public KMerCount parse(List<byte[]> sequences, int k) Parallel.svg (parallel implementation required)

This implementation will make your sequential String HashMap implementation into a parallel one. To do so, you will be making use of Java’s atomic version of a HashMap: a ConcurrentHashMap. Like before, you will be need to complete the parse method. You can choose to finish this method with a forall loop or a finish/async approach, which is completely up to you.


Testing Your Solution

Correctness

class: KMerWarmupTestSuite.java Junit.png
package: kmer.group
source folder: testing/src/test/java