I'm working with veins and OMNeT++ in a scenario that has different types of nodes (cars, pedestrians, and others). For evaluation purposes, I'm getting the std::map using the TraCIScenarioManager::getManagedHosts method based on this post (I also answered one of my related questions).
Now, I want to check the type of each node in the scenario. To be clearer, I want to obtain some kind of list that indicates the type of each node (is it a pedestrian? Is it a bus?). Is there any way to obtain this from the map? Is there any attribute that identifies the node type?
I already can identify the type of nodes through messages adding specifics tags to it, but now I need to obtain the type of node independent of the arrival of messages.
I really appreciate any help you can provide.
TraCIScenarioManager::getManagedHosts returns a std::map<std::string, cModule*> which maps each SUMO identifier to one OMNeT++ cModule*. Depending on how cars, buses, etc differ in your simulation, I can think of multiple ways of figuring out what type of SUMO object a host models.
Maybe they are named differently in SUMO? Then you can use the std::string to tell them apart.
Maybe they are named differently in OMNeT++? Then you can use getFullName() of the cModule* to tell them apart.
Maybe they use different C++ classes as models for their application layers? Then you can use something like getSubmodule() of the cModule* to get a pointer to their application layer module and check if a dynamic_cast<ApplicationOfACar*> of this pointer is successful.
I was wondering if anyone has experience in demultiplexing BCL files from Illumina with two different barcoding systems in one go?
we would like to know whether it is possible to use different, barcoded Tn5 adaptors during tagmentation and then use those Barcodes in combination with the barcodes on the sequencing primers to demultiplex the samples.
Has anyone has experience with this kind of analysis?
Is it possible to only add the Tn5 sequence to the primer sequence before demultiplexing and use it in the BCL2fastq run?
thanks
Assa
I'm not very well aware of Tn5 adaptors library but I will give it a shot.
In theory, it should be possible. bcl2fastq can demultiplex anything as long as you give it a proper samplesheet and a correct --use-bases-mask argument.
If you need to demultiplex all samples with a combination of two barcode system, you will have to create a samplesheet with a line for each combination that can be found. You also need to know at which cycles the Tn5 adaptors are sequenced.
For example lets say my original samplesheet is like:
[Data]
Sample_ID,Sample_Name,Sample_Plate,Sample_Well,Index_Plate_Well,I7_Index_ID,index,I5_Index_ID,index2,Sample_Project,Description
ID-1,ID-1,,,A01,UDP0001,GAACTG,UDP0001,TCGTGG,project,
ID-2,ID-2,,,B01,UDP0002,AGGTCA,UDP0002,CTACAA,project,
i would use a --use-bases-mask argument like Y*,I6,I6,Y* to tell bcl2fastq that is needs to read 6 bases for the barcodes.
Now if your Tn5 adaptors are located just after your illumina barcodes, you will need a samplesheet like:
[Data]
Sample_ID,Sample_Name,Sample_Plate,Sample_Well,Index_Plate_Well,I7_Index_ID,index,I5_Index_ID,index2,Sample_Project,Description
ID-1-1,ID-1-1,,,A01,UDP0001,GAACTGATGC,UDP0001,TCGTGGATGC,project,
ID-1-2,ID-1-2,,,A01,UDP0001,GAACTGCGAT,UDP0001,TCGTGGCGAT,project,
ID-2-1,ID-2-1,,,B01,UDP0002,AGGTCAATGC,UDP0002,CTACAAATGC,project,
ID-2-2,ID-2-2,,,B01,UDP0002,AGGTCACGAT,UDP0002,CTACAACGAT,project,
note the added 4 bases behind the (previously defined) illumina adaptors with different combinations. Here we would use a --use-bases-mask argument like Y*,I10,I10,Y*. This is a very dummy example to illustrate how bcl2fastq works.
Two major difficulties:
You have to know all the possible combinations to put them in the samplesheet. If you have a kind of UMI barcoding (random bases), you cannot do it.
You must know precisely at which cycles the barcodes are read to use a --use-bases-mask argument accordingly.
Maybe I could understand better what you're trying to achieve with an example of a samplesheet you're using and the bcl2fastq command you're running.
I'm trying to model a port that consists of several signals. Each signal can be one two signal types. Each signal type has a signal level and impedance. Some signals have a pulse duration. What is the best way to model this? I have made an interface port with each signal represented as a flow property. Then I made two value types each with its own constraints on impedance and voltage level. Each signal in the interface block's flow property list is then marked with the value type. Is this the best way to do this?
Thanks
Since each "signal" has several properties a way to bind the set of properties together is needed. I would therefore use an Interface-Block for each "signal".
Please note, that SysML uses the word "signal" with a different meaning.
While it is possible to use flow properties, I don't think they are the best fit here. Usually they are used to show that something is flowing. The thing flowing here would be electrical charge - and this is probably not the level of detail appropriate here. We could say, that the information about the voltage is flowing, but what about the impedance?
So, my suggestion is to use required value properties:
These can then be used individually, or as nested ports, when a grouping is required:
I want to implement an protocol with two radios switched on different frequencies. Can I just add an additional PhyLayer80211p module in the Nic80211p module?
If so, how do I address them? If I see it correctly, the findModule method used in Mac1609_4.cc:37 has no attribute to specify which Phy-module he should return. That way i can't specify which of the two radios should be set to RadioState TX (as well as which frequency it is set to).
Would it differ automatically between the two channels if i just send a message two the right gate to the phyModule and set them on seperate frequencies before? e.g.
sendDelayed(mac, RADIODELAY_11P, lowerLayerOut); vs. sendDelayed(mac, RADIODELAY_11P, lowerControlLayerOut);
Any other tips? Thanks!
I'm trying to parallelize my model (I want to parallelize a single config run, not run multiple configs in parallel).
I'm using Omnet++ 4.2.2, but probably the version doesn't matter.
I've read the Parallel Distributed Simulation chapter of the Omnet++ manual
and the principle seems very straightforward:
simply assign different modules/submodules to different partitions.
Following the provided cqn example
*.tandemQueue[0]**.partition-id = 0
*.tandemQueue[1]**.partition-id = 1
*.tandemQueue[2]**.partition-id = 2
If I try to simulate relatively simple models everything works fine I can partition the model at wish.
However, when I start to run simulation that use Standardhost module, or modules that are interconnected using ethernet links that doesn't work anymore.
If i take for example the Inet provided example WiredNetWithDHCP (inet/examples/dhcp/eth), as experiment, lets say I want to run hosts in a different partition than the switch
I therefore assign the switch to a partition and everything else to another:
**.switch**.partition-id = 1
**.partition-id = 0
The different partitions are separated by links, there is delay, and therefore it should be possible to partition this way.
When I run the model, using the graphic interface, I can see that the model is correctly partitioned however the connections are somehow wrong and i get the following error message:
during network initialization: the input/output datarates differ
clearly datarates don't differ (and running the model sequentially works perfectly), by checking the error message this exception is triggered also by link not connected. This is indeed what happen. It seems that the gates are not correctly linked.
Clearly I'm missing something in the Link connection mechanism, should I partition somewhere else?
Due to the simplicity of the paradigm I feel like being an idiot but I'm not able to solve this issue by myself
Just to give a feedback,
It seems that directly it cannot be done, not the full INET as it is can be parallelized in short because it uses global variables in some places.
in this particular case, mac addresses assignment are one of the issues (uses a global variable), hence eth interface cannot be parallelized.
for more details refer to this paper explaining why this is not possible:
Enabling Distributed Simulation of OMNeT++ INET Models:
For reference/possible solution refer to authors webpage from aachen university, where you can download a complete copy of omnet++ and INET that can be parallelized:
project overview and code